Adaptadores de Arnés de Referencia
Los adaptadores convierten la salida del arnés de referencia en el formato JSON de Métricas de Bencher (Bencher Metric Format (BMF) JSON).
Los adaptadores se ejecutan en el servidor API cuando se recibe un nuevo informe.
Consulta el resumen de benchmarking para más detalles.
Un adaptador puede ser especificado para el subcomando CLI bencher run
con la opción --adapter
.
Si no se especifica un adaptador, el adaptador magic
se utiliza por defecto.
🪄 Magia (predeterminado)
El adaptador Magic (magic
) es un superconjunto de todos los demás adaptadores.
Por esa razón, es el adaptador predeterminado para bencher run
.
Sin embargo, el adaptador magic
solo debe usarse para exploración.
Para obtener los mejores resultados, deberías especificar un adaptador de arnés de referencia:
- {…} JSON
- #️⃣ C# BenchmarkDotNet
- ➕ C++ Catch2
- ➕ C++ Google Benchmark
- 🕳 Go test -bench
- ☕️ Java Microbenchmark Harness (JMH)
- 🕸 JavaScript Benchmark.js
- 🕸 JavaScript console.time/console.timeEnd
- 🐍 Python airspeed velocity (asv)
- 🐍 Python pytest-benchmark
- ♦️ Ruby Benchmark
- 🦀 Rust libtest bench
- 🦀 Rust Criterion
- 🦀 Rust Iai
- 🦀 Rust Iai-Callgrind
- ❯_ Shell Hyperfine
{…} JSON
El adaptador JSON (json
) espera Bencher Metric Format (BMF) JSON.
Es perfecto para integrar arneses de referencia personalizados con Bencher.
Para más detalles vea cómo rastrear referencias personalizadas
y la referencia BMF JSON.
⏱️ Tiempo de Compilación
El subcomando CLI bencher run
se puede usar para rastrear el tiempo de compilación (es decir, el tiempo de compilación) de tus entregables con la bandera --build-time
.
Bajo el capó, bencher run
muestra los resultados como Bencher Metric Format (BMF) JSON.
Por lo tanto, es una buena práctica usar explícitamente el adaptador json
.
Para más detalles, consulta cómo rastrear el tiempo de compilación.
Se recopila la Medida de build-time
(es decir, segundos (s)
).
Solo está disponible el valor de tiempo de compilación (es decir, value
).
Ni lower_value
ni upper_value
se recogen.
La Medida de build-time
no se crea por defecto para todos los Proyectos.
Sin embargo, cuando usas la bandera --build-time
, esta Medida se creará automáticamente para tu Proyecto.
⚖️ Tamaño del Archivo
El subcomando CLI bencher run
puede usarse para rastrear el tamaño del archivo (es decir, tamaño binario) de tus entregables con la opción --file-size
.
La opción --file-size
espera una ruta de archivo al archivo cuyo tamaño será medido.
Por debajo, bencher run
muestra los resultados comoFormato de Métrica de Bencher (BMF) JSON.
Por lo tanto, es una buena práctica usar explícitamente el adaptador json
.
Para más detalles vea cómo rastrear el tamaño del archivo.
La Medida file-size
(es decir, bytes (B)
) se recopila.
Solo está disponible el valor del tamaño del archivo (es decir, value
).
Ni lower_value
ni upper_value
se recopilan.
La Medida file-size
no se crea por defecto para todos los Proyectos.
Sin embargo, cuando usas la opción --file-size
, esta Medida se creará automáticamente para tu Proyecto.
La opción --file-size
se puede usar varias veces para realizar un seguimiento de varios tamaños de archivo.
#️⃣ C# DotNet
El adaptador C# DotNet (c_sharp_dot_net
) espera la salida de BenchmarkDotNet en formato JSON (es decir, --exporters json
).
Se recopila la medida de latencia
(es decir, nanosegundos (ns)
).
Esta salida JSON se guarda en un archivo, por lo que debes usar el argumento --file
de la CLI bencher run
para especificar la ruta de ese archivo.
Hay dos opciones para la métrica:
mean
(predeterminado): Los valoreslower_value
yupper_value
son una desviación estándar por debajo y por encima de la media (es decir,value
) respectivamente.median
: Los valoreslower_value
yupper_value
son un rango intercuartil por debajo y por encima de la mediana (es decir,value
) respectivamente.
Esto se puede especificar en el subcomando CLI ejecución del evaluador
con la opción --average
.
➕ C++ Catch2
El Adaptador C++ Catch2 (cpp_catch2
) espera la salida de Catch2.
La Medida de latencia
(es decir, nanosegundos (ns)
) se recopila.
Los lower_value
y upper_value
son una desviación estándar por debajo y por encima de la media (es decir, value
) respectivamente.
➕ C++ Google
El Adaptador de Google C++ (cpp_google
) espera salida de Google Benchmark en formato JSON (es decir, --benchmark_format=json
).
Se recopila la medida de latencia
(es decir, nanosegundos (ns)
).
Solo está disponible el promedio (es decir, value
). No hay lower_value
ni upper_value
.
🕳 Go Bench
El adaptador Go Bench (go_bench
) espera la salida de go test -bench.
Se recopila la medida de latencia
(es decir, nanosegundos (ns)
).
Solo está disponible el promedio (es decir, value
). No hay lower_value
y upper_value
.
☕️ Java JMH
El Adaptador Java JMH (java_jmh
) espera la salida de Java Microbenchmark Harness (JMH) en formato JSON (es decir, -rf json
).
Esta salida JSON se guarda en un archivo, por lo que debes usar el argumento --file
de la CLI bencher run
para especificar la ruta de ese archivo.
Se pueden recoger medidas de latencia
y rendimiento
(es decir, nanosegundos (ns)
y operaciones / segundo (ops/sec)
).
El lower_value
y upper_value
son los intervalos de confianza inferior y superior para la media (es decir, value
) respectivamente.
🕸 Prueba de rendimiento de JavaScript
El Adaptador de Pruebas de Rendimiento de JavaScript (js_benchmark
) espera salida de Benchmark.js.
La Medida de throughput
(es decir, operaciones / segundo (ops/sec)
) es recopilada.
Los valores lower_value
y upper_value
son el margen de error relativo por debajo y por encima de la mediana (es decir, value
) respectivamente.
🕸 Tiempo en JavaScript
El Adaptador de Tiempo JavaScript (js_time
) espera la salida de console.time/console.timeEnd.
La medida de latencia
(es decir, nanosegundos (ns)
) es recopilada.
Solo el tiempo de operación (es decir, valor
) está disponible. No hay lower_value
ni upper_value
.
🐍 ASV de Python
El Adaptador ASV de Python (python_asv
) espera la salida de la línea de comandos airspeed velocity CLI asv run.
La medida de latencia
(es decir, nanosegundos (ns)
) es recopilada.
El valor_inferior
y el valor_superior
son el rango intercuartílico por debajo y por encima del mediano (es decir, valor
) respectivamente.
🐍 Python Pytest
El Adaptador Pytest de Python (python_pytest
) espera la salida de pytest-benchmark en formato JSON (es decir, --benchmark-json results.json
).
Esta salida JSON se guarda en un archivo, por lo que debes usar el argumento --file
de la CLI bencher run
para especificar la ruta de ese archivo.
Se recopila la Medida latency
(es decir, nanosegundos (ns)
).
Hay dos opciones para la Métrica:
mean
(predeterminado): Los valoreslower_value
yupper_value
son una desviación estándar por debajo y por encima de la media (es decir,value
) respectivamente.median
: Los valoreslower_value
yupper_value
son un rango intercuartílico por debajo y por encima de la mediana (es decir,value
) respectivamente.
Esto se puede especificar en el subcomando CLI de bencher run
con el argumento opcional --average
.
♦️ Ruby Benchmark
El adaptador de Benchmark de Ruby (ruby_benchmark
) espera la salida del módulo Benchmark para los métodos #bm
, #bmbm
y #benchmark
.
Se requiere una etiqueta para cada benchmark.
Se recopila la medida de latencia
(es decir, nanosegundos (ns)
).
Solo está disponible el valor reportado (es decir, valor
). No hay lower_value
ni upper_value
.
🦀 Banco de Rust
El Adaptador de Banco Rust (rust_bench
) espera la salida de libtest bench.
La Medida de latencia
(es decir, nanosegundos (ns)
) se recopila.
El lower_value
y upper_value
son la desviación por debajo y por encima de la mediana (es decir, value
) respectivamente.
🦀 Adaptador de Criterio para Rust
El Adaptador de Criterio para Rust (rust_criterion
) espera la salida de Criterion.
La medida de latencia
(es decir, nanosegundos (ns)
) es recogida.
El lower_value
y el upper_value
son los límites inferior y superior de la pendiente (si está disponible) o de la media (si no lo está) (es decir, value
) respectivamente.
🦀 Rust Iai
El adaptador Rust Iai (rust_iai
) espera salida de Iai.
Las medidas de instructions
, l1-accesses
, l2-accesses
, ram-accesses
y estimated-cycles
se recopilan.
Solo estas medidas (es decir, value
) están disponibles. No hay medidas de lower_value
y upper_value
.
Las Medidas para este adaptador no se crean por defecto para todos los proyectos.
Sin embargo, cuando usas este adaptador, estas Medidas se crearán automáticamente para tu Proyecto.
🦀 Rust Iai-Callgrind
El adaptador de Rust Iai (rust_iai_callgrind
) espera la salida de Iai-Callgrind.
Se recopilan las medidas de instructions
, l1-hits
, l2-hits
, ram-hits
, total-read-write
y estimated-cycles
.
Solo estas medidas (es decir, value
) están disponibles. No hay medidas de lower_value
ni upper_value
.
Las medidas para este adaptador no se crean por defecto para todos los proyectos.
Sin embargo, cuando utilizas este adaptador, estas medidas se crearán automáticamente para tu proyecto.
❯_️ Shell Hyperfine
El adaptador Shell Hyperfine (shell_hyperfine
) espera la salida de Hyperfine en formato JSON (es decir, --export-json results.json
).
Esta salida JSON se guarda en un archivo, por lo que debes usar el argumento --file
de la CLI bencher run
para especificar la ruta de ese archivo.
Se recopila la Medida de latencia
(es decir, nanosegundos (ns)
).
Hay dos opciones para la Métrica:
mean
(predeterminado): Los valoreslower_value
yupper_value
están una desviación estándar por debajo y por encima de la media (es decir,value
) respectivamente.median
: Los valoreslower_value
yupper_value
son los valoresmin
ymax
respectivamente.
Esto se puede especificar en el subcomando de la CLI bencher run
con la opción --average
.
🐰 ¡Felicidades! ¡Has aprendido todo sobre los adaptadores de arneses de referencia! 🎉