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.
🪄 Magic (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 debe usarse solo para exploración.
Para obtener mejores resultados, deberías especificar un adaptador de arnés de benchmarks:
- {…} 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 Gungraun
- ❯_ 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.
bencher run --adapter json "bencher mock"⏱️ 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.
bencher run --adapter json --build-time "echo 0 > binary"⚖️ 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.
bencher run --adapter json --file-size binary "echo 0 > binary"#️⃣ 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.
bencher run --adapter c_sharp_dot_net --file results.json "dotnet run --exporters json --filter '*'"Hay dos opciones para la métrica:
mean(predeterminado): Los valoreslower_valueyupper_valueson una desviación estándar por debajo y por encima de la media (es decir,value) respectivamente.median: Los valoreslower_valueyupper_valueson 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.
bencher run --adapter cpp_catch2 "make benchmarks"➕ 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.
bencher run --adapter cpp_google "make benchmarks --benchmark_format=json"🕳 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.
bencher run --adapter go_bench "go test -bench"☕️ 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.
bencher run --adapter java_jmh --file results.json "java -jar benchmarks.jar -rf json -rff results.json"🕸 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.
bencher run --adapter js_benchmark "node benchmarks.js"🕸 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.
bencher run --adapter js_time "node benchmarks.js"🐍 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.
bencher run --adapter python_asv "asv run"🐍 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)).
bencher run --adapter python_pytest --file results.json "pytest --benchmark-json results.json benchmarks.py"Hay dos opciones para la Métrica:
mean(predeterminado): Los valoreslower_valueyupper_valueson una desviación estándar por debajo y por encima de la media (es decir,value) respectivamente.median: Los valoreslower_valueyupper_valueson 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.
bencher run --adapter ruby_benchmark "ruby benchmarks.rb"🦀 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.
bencher run --adapter rust_bench "cargo +nightly bench"🦀 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.
bencher run --adapter rust_criterion "cargo bench"🦀 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.
bencher run --adapter rust_iai "cargo bench"🦀 Rust Gungraun
El adaptador Rust Gungraun (rust_gungraun) espera la salida de Gungraun.
Las métricas (Measures) instructions, l1-hits, l2-hits, ram-hits, total-read-write y estimated-cycles se recogen por defecto. También se admiten métricas adicionales de Callgrind, Cachegrind y DHAT que Gungraun puede generar.
Solo el valor reportado (es decir, value) está disponible para estas Measures.
Ni lower_value ni upper_value se recopilan.
Las Measures para este adaptador no se crean por defecto para todos los proyectos.
Sin embargo, cuando uses este adaptador, estas Measures se crearán automáticamente para tu proyecto.
Gungraun es el sucesor renombrado de Iai-Callgrind.
bencher run --adapter rust_gungraun "cargo bench"🦀 Rust Iai-Callgrind
Iai-Callgrind ha sido renombrado a Gungraun.
❯_️ 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)).
bencher run --adapter shell_hyperfine --file results.json "hyperfine --export-json results.json 'sleep 0.1'"Hay dos opciones para la Métrica:
mean(predeterminado): Los valoreslower_valueyupper_valueestán una desviación estándar por debajo y por encima de la media (es decir,value) respectivamente.median: Los valoreslower_valueyupper_valueson los valoresminymaxrespectivamente.
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! 🎉