Cómo Seguir Benchmarks Personalizados con Bencher


Bencher soporta los arneses de evaluación comparativa más populares listos para usar, y siempre estamos abiertos a sugerencias para nuevos adaptadores. Sin embargo, puede haber situaciones en las que un arnés de evaluación comparativa listo para usar no se ajuste a sus necesidades, lo que hace necesaria la creación de un arnés de evaluación comparativa personalizado. Por suerte, Bencher también soporta el uso de un arnés de evaluación comparativa personalizado. La forma más fácil de integrar su arnés de evaluación personalizado con Bencher es producir JSON en el Formato de Métrica de Bencher (BMF).

Este es un ejemplo de JSON de BMF:

{
"benchmark_name": {
"latency": {
"value": 88.0,
"lower_value": 87.42,
"upper_value": 88.88
}
}
}

En este ejemplo, la clave benchmark_name sería el nombre de un Benchmark. Un Benchmark puede identificarse por su nombre, slug o UUID. El objeto benchmark_name puede contener múltiples nombres, slugs o UUIDs de Measure como claves. Si el valor especificado es un nombre o slug y la Measure no existe, se creará automáticamente. Sin embargo, si el valor especificado es un UUID, entonces la Measure ya debe existir. En este ejemplo, latency es el slug de la Measure integrada Latency. Cada Proyecto tiene por defecto una Measure Latency (es decir, latency) y una Measure Throughput (es decir, throughput), que se miden en nanosecond (ns) y operations / second (ops/s) respectivamente. El objeto Measure contiene un Metric con hasta tres valores: value, lower_value y upper_value. Los valores lower_value y upper_value son opcionales.

En este ejemplo, el objeto Measure latency contiene los siguientes valores:

  • Un value de 88.0
  • Un lower_value de 87.42
  • Un upper_value de 88.88

Si tuvieras un script ubicado en ./run/my/benchmarks.sh que ejecutara tus referencias de medición y mostrara los resultados en la salida estándar como JSON de BMF, entonces podrías rastrearlos usando bencher run y el adaptador json con el siguiente comando:

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

Si sus resultados se almacenaran en un archivo llamado results.json, entonces podría usar la opción --file para especificar la ruta del archivo. Esto funciona tanto con un comando de benchmark como sin uno.

Con un comando de benchmark:

Terminal window
bencher run --file results.json --adapter json "bencher mock > results.json"

Sin un comando de benchmark:

Terminal window
bencher mock > results.json && bencher run --file results.json --adapter json

Múltiples Medidas

En Bencher Metric Format (BMF) JSON el objeto Benchmark puede contener múltiples nombres, slugs o UUIDs de Measure como claves. Si el valor especificado es un nombre o slug y la Medida no existe ya, se creará para ti. Sin embargo, si el valor especificado es un UUID, entonces la Medida debe existir ya. Cada objeto de Medida debe contener un Metric con hasta tres valores: value, lower_value, y upper_value. Los valores lower_value y upper_value son opcionales.

Este es un ejemplo de BMF JSON con múltiples Medidas:

{
"benchmark_name": {
"latency": {
"value": 88.0,
"lower_value": 87.42,
"upper_value": 88.88
},
"throughput" {
"value": 5.55,
"lower_value": 3.14,
"upper_value": 6.30
}
}
}

En este ejemplo, el objeto de Medida latency contiene los siguientes valores:

  • Un value de 88.0
  • Un lower_value de 87.42
  • Un upper_value de 88.88

Y el objeto de Medida throughput contiene los siguientes valores:

  • Un value de 5.55
  • Un lower_value de 3.14
  • Un upper_value de 6.30

Puedes usar el subcomando CLI bencher mock con la opción --measure para generar datos ficticios BMF con múltiples Medidas. Lo utilizaremos como un marcador de posición para tu propio ejecutor de benchmark personalizado. Usando bencher run y el adaptador json podemos rastrear nuestros benchmarks con múltiples Medidas con el siguiente comando:

Terminal window
bencher run --adapter json "bencher mock --measure latency --measure throughput"

🐰 ¡Felicidades! Has aprendido cómo seguir benchmarks personalizados. 🎉


Continúa: Cómo Seguir Benchmarks en CI ➡

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


Published: Sun, May 12, 2024 at 7:44:00 AM UTC | Last Updated: Fri, January 30, 2026 at 12:27:00 PM UTC