allocs/op 和 B/op 在 go benchmark 中是什么意思?
What does allocs/op and B/op mean in go benchmark?
当我 运行 使用 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
是完成一次迭代所用的大概时间
但即使在 reading the docs 之后,我也不知道 B/op
和 allocs/op
是什么意思。
我的猜测是allocs/op与垃圾收集和内存分配有关(越少越好)。
任何人都可以很好地解释这些值的含义。也很高兴知道为什么要采取上升和减少它们的主要步骤(我意识到这是特定于测试的,但可能有一些通用提示在许多情况下都有效)
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
根据我的理解:
10000
是迭代次数for i := 0; i < b.N; i++ {
。XXX ns/op
是完成一次迭代所用的大概时间
但即使在 reading the docs 之后,我也不知道 B/op
和 allocs/op
是什么意思。
我的猜测是allocs/op与垃圾收集和内存分配有关(越少越好)。
任何人都可以很好地解释这些值的含义。也很高兴知道为什么要采取上升和减少它们的主要步骤(我意识到这是特定于测试的,但可能有一些通用提示在许多情况下都有效)
allocs/op
表示每个操作(单次迭代)发生了多少次不同的内存分配。
B/op
是每个操作分配了多少字节。