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
私の理解に基づいて:
10000
は反復回数for i := 0; i < b.N; i++ {
です。XXX ns/op
は、1回の反復が完了するまでにかかったおおよその時間ですしかし ドキュメントを読む の後でも、B/op
とallocs/op
の意味がわかりません。
私の推測では、allocs/opはガベージコレクションとメモリ割り当てに関係しています(少ないほど良い)。
誰もがこれらの値の意味について素晴らしい説明をすることができますか。また、なぜそれらを減らすために上昇と主な手順を実行するのかを知っておくといいでしょう(これはテスト固有のものですが、多くの場合に機能するいくつかの普遍的なヒントがあるかもしれません)。
allocs/op
は、1回の操作(1回の反復)で発生した個別のメモリ割り当ての数を意味します。
B/op
は、オペレーションごとに割り当てられたバイト数です。