¿Qué tan rápido es el motor de JavaScript de tu navegador? Ocho cargas de trabajo fijas —cadenas, expresiones regulares, cálculo, ordenación y búsqueda, recursión, una criba de primos, JSON y procesamiento de arrays—, con la misma cantidad de trabajo para todos los visitantes, ejecutadas una tras otra. Cuanto menor el tiempo total, mejor.
Medir directamente un motor de JavaScript es más antiguo que la mayoría de las funciones de la plataforma web construidas sobre él: SunSpider de WebKit y Octane de V8 fueron, durante casi toda la década de 2010, las cifras con que los fabricantes de navegadores se comparaban, y ambos acabaron retirados porque los motores se habían vuelto tan rápidos, y tan buenos reconociendo código con forma de benchmark, que las puntuaciones dejaron de reflejar cómo se sentía una página real. Este benchmark sigue su formato y no su código de pruebas exacto: un conjunto de cargas pequeñas y autónomas, elegidas para exigir cada una una parte distinta del motor, ejecutadas seguidas y medidas como una sola.
Ocho cargas se ejecutan en secuencia: construir y transformar una cadena larga; comparar varias expresiones regulares con un párrafo de texto generado; unos millones de llamadas a funciones trigonométricas y logarítmicas; ordenar doscientos mil números y luego buscar en el resultado con búsqueda binaria; una llamada recursiva de Fibonacci sin memoización, que exige más a la sobrecarga de llamadas a funciones que a la aritmética; una criba de Eratóstenes sobre tres millones de enteros con un array tipado; codificar y decodificar un árbol de objetos considerable mediante JSON; y una cadena filter–map–reduce sobre medio millón de elementos de un array. Cada carga usa un generador pseudoaleatorio con semilla donde hace falta azar, así que la entrada es idéntica para todos los visitantes.
La puntuación es el tiempo real combinado en milisegundos de las ocho, medido con performance.now(): cuanto menor, mejor. La tabla de arriba se va rellenando con el tiempo de cada carga a medida que se alcanza, por si una parte del motor es inusualmente rápida o lenta respecto al resto. Todo corre en un solo hilo y sin pasada de calentamiento, así que una primera visita y otra posterior pueden diferir ligeramente cuando el optimizador del motor entra en acción a mitad de la ejecución: la misma variabilidad que ven las páginas reales.