当我使用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与垃圾收集和内存分配有关(越少越好)。
任何人都可以对这些值的含义做出很好的解释。同样很高兴知道为什么要上升以及减少它们的主要步骤(我意识到这是测试特定的,但可能有一些通用提示在许多情况下都有效)
答案 0 :(得分:28)
ActionController::Parameters
表示每个操作发生了多少不同的内存分配(单次迭代)。
allocs/op
是每个操作分配的字节数。