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:
10000
è il numero di iterazionifor i := 0; i < b.N; i++ {
.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)
allocs/op indica il numero di allocazioni di memoria verificate per op (singola iterazione). B/op è quanti byte sono stati assegnati per op. –
@Not_a_Golfer Postare come risposta? – icza