go benchmarking

¿Qué significa allocs/op y B/op en el índice de referencia de Go?



benchmarking (1)

Cuando ejecuto mis pruebas con go test -v -bench=. -benchmem go test -v -bench=. -benchmem , veo los siguientes resultados.

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

Basado en mi entendimiento:

  1. 10000 es el número de iteraciones for i := 0; i < bN; i++ { for i := 0; i < bN; i++ { for i := 0; i < bN; i++ { .
  2. XXX ns/op es el tiempo aproximado que tomó completar una iteración

Pero incluso después de leer los documentos , no puedo averiguar qué significan B/op y allocs/op .

Mi conjetura es que allocs / op tiene algo que ver con la recolección de basura y la asignación de memoria (cuanto menos mejor).

¿Alguien puede dar una buena explicación del significado de estos valores? También sería bueno saber por qué hacer los pasos principales para reducirlos (me doy cuenta de que esto es específico de la prueba, pero puede haber algunos consejos universales que funcionan en muchos casos)


allocs/op significa cuántas asignaciones de memoria distintas ocurrieron por operación (iteración única).

B/op es cuántos bytes se asignaron por op.