当我运行我的基准时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
Run Code Online (Sandbox Code Playgroud)
根据我的理解:
10000是迭代次数for i := 0; i < b.N; i++ {. XXX ns/op 是一次迭代完成所需的大致时间但即使阅读了文档后,我也无法找到什么B/op和allocs/op意思.
我的猜测是,allocs/op与垃圾收集和内存分配有关(越少越好).
任何人都可以对这些值的含义做出很好的解释.同样很高兴知道为什么要上升和减少它们的主要步骤(我意识到这是测试特定的,但可能有一些通用提示在许多情况下都有效)
Not*_*fer 37
allocs/op 表示每个op发生多少个不同的内存分配(单次迭代).
B/op 是每个操作分配了多少字节.