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

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.

Terminal window
bencher run --adapter json "bencher mock"

⚖️ 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.

Terminal window
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.

Terminal window
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 valores lower_value y upper_value son una desviación estándar por debajo y por encima de la media (es decir, value) respectivamente.
  • median: Los valores lower_value y upper_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.

Terminal window
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.

Terminal window
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.

Terminal window
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.

Terminal window
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.

Terminal window
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.

Terminal window
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.

Terminal window
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)).

Terminal window
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 valores lower_value y upper_value son una desviación estándar por debajo y por encima de la media (es decir, value) respectivamente.
  • median: Los valores lower_value y upper_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.

Terminal window
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.

Terminal window
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.

Terminal window
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.

Terminal window
bencher run --adapter rust_iai "cargo bench"

🦀 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.

Terminal window
bencher run --adapter rust_iai_callgrind "cargo bench"

❯_️ 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)).

Terminal window
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 valores lower_value y upper_value están una desviación estándar por debajo y por encima de la media (es decir, value) respectivamente.
  • median: Los valores lower_value y upper_value son los valores min y max 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! 🎉


Sigue Adelante: Benchmarking Continuo ➡

🤖 Este documento fue generado automáticamente por OpenAI GPT-4. Puede que no sea exacto y contenga errores. Si encuentra algún error, abra un problema en GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Thu, May 9, 2024 at 5:17:00 PM UTC