2016-02-23 65 views
16

當我用go test -v -bench=. -benchmem運行我的基準測試時,我看到以下結果。在基準測試中,alloc/op和B/op意味着什麼?

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是近似的時間花了一個迭代完成

但即使reading the docs後,我無法找出什麼B/opallocs/op意思。


我的猜測是,分配/ OP有事情做垃圾回收和內存分配(越少越好)。

任何人都可以給出這些值的含義很好的解釋。也很高興知道爲什麼上升和主要步驟來減少它們(我意識到這是測試特定的,但可能有一些通用提示,在許多情況下工作)

+1

allocs/op表示每個操作發生多少內存分配(單次迭代)。 B/op是每個操作分配了多少字節。 –

+1

@Not_a_Golfer發佈那個答案? – icza

回答

16

allocs/op意味着有多少不同的內存分配發生在每個操作(單次迭代)。

B/op是每個操作分配了多少個字節。

+0

這是B/op的分配,在股權框架還是在堆?或者,GO GC必須清理的內存量是多少? – user3219492