在基准测试中,allocs / op和B / op的含义是什么?

时间:2016-02-23 21:24:47

标签: go benchmarking

当我使用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

根据我的理解:

  1. 10000是迭代次数for i := 0; i < b.N; i++ {
  2. XXX ns/op是完成一次迭代所需的大致时间
  3. 但即使在reading the docs之后,我也无法找出B/opallocs/op的含义。

    我的猜测是,allocs / op与垃圾收集和内存分配有关(越少越好)。

    任何人都可以对这些值的含义做出很好的解释。同样很高兴知道为什么要上升以及减少它们的主要步骤(我意识到这是测试特定的,但可能有一些通用提示在许多情况下都有效)

1 个答案:

答案 0 :(得分:28)

ActionController::Parameters表示每个操作发生了多少不同的内存分配(单次迭代)。

allocs/op是每个操作分配的字节数。