Когда я запускаю свои тесты с помощью 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
- приблизительное время, необходимое для завершения одной итерации
Но даже после чтения документов я не могу понять, что означают B/op
и allocs/op
.
Мое предположение заключается в том, что allocs/op имеет какое-то отношение к сборке мусора и распределению памяти (чем меньше, тем лучше).
Может ли кто-нибудь дать хорошее объяснение значения этих значений. Также было бы неплохо узнать, зачем идти вверх и основные шаги по их сокращению (я понимаю, что это специфичный тест, но могут быть некоторые универсальные подсказки, которые работают во многих случаях)