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