2016-02-23 19 views
16

Quando eseguo i miei benchmark con go test -v -bench=. -benchmem, vedo i seguenti risultati.Cosa significa allocs/op e B/op nel go benchmark?

f1  10000  120860 ns/op  2433 B/op   28 allocs/op 
f2  10000  120288 ns/op  2288 B/op   26 allocs/op 

Sulla base della mia comprensione:

  1. 10000 è il numero di iterazioni for i := 0; i < b.N; i++ {.
  2. XXX ns/op è il tempo approssimativo impiegato per un'iterazione per completare

Ma anche dopo reading the docs, non riesco a capire cosa B/op e allocs/op dire.


mia ipotesi è che Allocati/OP ha qualcosa a che fare con la raccolta dei rifiuti e di allocazione di memoria (il meno è meglio è).

Qualcuno può dare una bella spiegazione del significato di questi valori. Sarebbe anche bello sapere perché fare il passo e i passaggi principali per ridurli (mi rendo conto che questo è specifico, ma potrebbero esserci alcuni suggerimenti universali che funzionano in molti casi)

+1

allocs/op indica il numero di allocazioni di memoria verificate per op (singola iterazione). B/op è quanti byte sono stati assegnati per op. –

+1

@Not_a_Golfer Postare come risposta? – icza

risposta

16

allocs/op significa quanti memoria distinta allocazioni avvenute per operazione (singola iterazione).

B/op indica quanti byte sono stati allocati per op.

+0

È B/op le allocazioni, fatte in paletto di palo o in heap? O è la quantità di memoria che GO GC deve pulire? – user3219492

Problemi correlati