javascript - benchmark - ¿Cómo funciona jsPerf?
js benchmark (2)
Hoy visité jsPerf y ahora me pregunto ...
- ¿Qué es "ops / sec"?
- ¿Cuántas iteraciones hace?
- ¿Sobre qué base calcula cuál es más rápido? ¿Cuál es la fórmula detrás de estos cálculos?
Ejemplo: http://jsperf.com/concatenation-vs-join
¿Alguien me puede decir?
Gracias por adelantado.
Escribí Benchmark.js , que usa jsPerf .
"
ops/sec
" significa operaciones por segundo. Esa es la cantidad de veces que se proyecta ejecutar una prueba en un segundo.Una prueba se ejecuta repetidamente hasta que alcanza el tiempo mínimo necesario para obtener un porcentaje de incertidumbre para la medición de menos de o igual a
1%
. El número de iteraciones variará según la resolución del temporizador del entorno y cuántas veces se puede ejecutar una prueba en el tiempo mínimo de ejecución. Recolectamos carreras de prueba completadas durante5
segundos (configurables) , o al menos5
carreras (también configurables) , y luego realizamos análisis estadísticos en la muestra. Por lo tanto, una prueba puede repetirse100,000
veces en50 ms
(el tiempo de ejecución mínimo para la mayoría de los entornos) y luego repetirse100
veces más (5
segundos) . Un tamaño de muestra más grande (en este ejemplo,100
) , conduce a un margen de error menor.Basamos la decisión de qué prueba es más rápida en más que solo ops / seg al tener también en cuenta el margen de error. Por ejemplo, una prueba con un menor margen de error ops / sec pero puede ser estadísticamente indistinguible de una prueba con mayor ops / seg y menor margen de error.
Usamos una prueba t de welch , similar a la utilizada por SunSpider , pero cambiamos a una prueba t de 2 muestras no emparejadas para la misma varianza (la varianza es extremadamente pequeña) porque la prueba t de welch tuvo problemas para comparar operaciones menores / seg y mayores ops / seg con pequeñas variaciones que hicieron que los grados de libertad se computaran como menos de
1
. También agregamos una asignación de5.5%
en las pruebas con ops / seg similar porque las pruebas del mundo real mostraron que las pruebas idénticas pueden oscilar ~5%
de la prueba para volver a evaluar. Las pruebas T se usan para verificar que las diferencias entre las pruebas sean estadísticamente significativas .
Puede leer el artículo de puntos de referencia de JavaScript a prueba de balas de los autores. Utiliza Benchmark.js btw, que es de código abierto.