web-dev-qa-db-ja.com

goのベンチマークでのallocs / opおよびB / opの意味は何ですか?

go test -v -bench=. -benchmemを使用してベンチマークを実行すると、次の結果が表示されます。

f1     10000        120860 ns/op        2433 B/op         28 allocs/op
f2     10000        120288 ns/op        2288 B/op         26 allocs/op

私の理解に基づいて:

  1. 10000は反復回数for i := 0; i < b.N; i++ {です。
  2. XXX ns/opは、1回の反復が完了するまでにかかったおおよその時間です

しかし ドキュメントを読む の後でも、B/opallocs/opの意味がわかりません。


私の推測では、allocs/opはガベージコレクションとメモリ割り当てに関係しています(少ないほど良い)。

誰もがこれらの値の意味について素晴らしい説明をすることができますか。また、なぜそれらを減らすために上昇と主な手順を実行するのかを知っておくといいでしょう(これはテスト固有のものですが、多くの場合に機能するいくつかの普遍的なヒントがあるかもしれません)。

36
Salvador Dali

allocs/opは、1回の操作(1回の反復)で発生した個別のメモリ割り当ての数を意味します。

B/opは、オペレーションごとに割り当てられたバイト数です。

43
Not_a_Golfer