- Herramienta de benchmarking ultraligera de menos de 10 KB desarrollada para medir con precisión el rendimiento del código
- Funciona sobre Web API y ofrece medición precisa del tiempo usando
process.hrtime o performance.now
- Puede ejecutarse en diversos entornos de ejecución de JavaScript como Node.js, Deno y Bun
- Ofrece análisis basado en estadísticas: admite el cálculo de latencia y throughput como promedio, desviación estándar, margen de error, varianza y percentiles
- Modo de ejecución concurrente: permite ejecución en paralelo por unidad de
task o de bench, con la opción threshold para controlar la cantidad máxima de ejecuciones simultáneas
- Estructura basada en eventos y extensible: las clases
Bench y Task heredan de EventTarget, y permiten registrar listeners para eventos como cycle y abort
- Detección automática de funciones asíncronas: revisa si es
AsyncFunction o si devuelve un Promise para activar automáticamente el modo async
- Visualización y transformación de resultados: el método
bench.table() convierte al formato de salida de console.table(), y permite personalizar el formato de salida con funciones Converter definidas por el usuario
- Con la configuración
retainSamples, conserva los datos de muestra en bruto para usarlos en análisis personalizados, visualización de gráficos y exportación de resultados
- Permite elegir un proveedor preciso de marcas de tiempo (timestamp provider)
- El valor predeterminado es
performance.now()
- Incluye opciones optimizadas según el runtime, como
hrtimeNow, bunNanoseconds y auto
- Se puede implementar una interfaz personalizada de TimestampProvider
- Compatible con control de interrupción basado en AbortSignal
- Se puede interrumpir (abort) toda la ejecución del benchmark o tareas individuales
- Al interrumpir, se dispara el evento
abort y se establece la bandera de estado (task.result.aborted)
- Su estructura de paquete único, sin dependencias externas, garantiza inicialización rápida y buena velocidad de ejecución
- Frente a Benchmark.js, mitata, tatami-ng y Bema, destaca por ser más pequeño, más simple y más amigable con Web API
1 comentarios
Ahora hasta me pregunto si hace falta algo así. La IA arma muy bien scripts para medir el rendimiento justo de acuerdo con el momento y la situación...