Skip to content

Goベンチマークの読み方(メモリ編)

This content is a draft and will not be included in production builds.

以下の記事に書かれていた話をまとめる。Goベンチマークの読み方(CPU編)pprofの読み方もある。

go test -bench= の出力を読む。

Terminal window
$ go test -bench=. -benchmem
goos: linux
goarch: amd64
pkg: <packagename>
cpu: 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz
Benchmark_example-8 35233 32910 ns/op 368641 B/op 2 allocs/op
PASS
ok <packagename> 1.507s

ここで、最初の4つはベンチ実行環境の情報を出力している。それ以降は各ベンチマーク関数の数だけ結果が記録されていく。

Benchmark_example-8 35233 32910 ns/op 368641 B/op 2 allocs/op

フォーマットは、Goベンチマークの読み方(CPU編)にメモリのフィールドが追加されただけ。

  1. ベンチマーク関数名
  2. (8ってなんだっけ)
  3. 実行回数
  4. 1回あたりの平均実行時間(ナノ秒)
  5. 1回あたりの平均メモリアロケーションサイズ
  6. 1回あたりの(平均?)アロケーション回数

複数のベンチマーク結果を比較するときはbenchstatとbenchcmpを使う。