当我使用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
是完成一次迭代所需的近似时间。
但是即使阅读了文档,我仍然无法弄清楚B/op
和allocs/op
的含义。
我猜allocs/op
与垃圾回收和内存分配有关(越少越好)。
能否有人给出这些值的意义的简洁解释呢?知道它们为什么会上升,并采取哪些措施来减少它们将是很好的(我意识到这是测试特定的,但可能有一些通用提示适用于许多情况)。