タグ

ブックマーク / yoru9zine.hatenablog.com (1)

  • sync.Pool で楽して高速化 - 隙あらば寝る

    golang には sync.Pool というライブラリがある。 同じ処理を何度も実行 都度メモリ割り当てが発生 するような場合にサクッとパフォーマンスを向上させられるので紹介する。 メモリ割り当ての処理と、メモリ解放のために動く gc の実行時間を削ることでパフォーマンスを上げることができる。 話を単純にするために以下の仕様で関数を作るとする。 入力: string 出力: 入力を n 回繰り返し、[]byte として返す n はグローバル変数、適当に調整する バージョン1 func func1(in string) (out []byte) { buf := &bytes.Buffer{} for i := 0; i < n; i++ { buf.WriteString(in) } out = buf.Bytes() return } bytes.Buffer を作って string

    sync.Pool で楽して高速化 - 隙あらば寝る
    serinuntius
    serinuntius 2018/08/24
    https://github.com/shogo82148/go-sql-proxy を読んでて、sync.Poolってのが出てきてなんだろうと思ったら、そういうやつだったのか。便利だ
  • 1