Benchmark exigente de CPU y renderizado: el juego de la vida de Conway en una cuadrícula fija de 800×500, 2000 generaciones. Todos los participantes parten del mismo estado determinista (semilla 2000 de Mulberry32, 30 % de relleno). Cuanto menor el tiempo, mejor.
Vida 2000 es un benchmark de autómata celular basado en el juego de la vida de Conway, descrito por el matemático John Horton Conway en 1970. La simulación se ejecuta en una cuadrícula fija de 800×500 (400 000 celdas). El estado inicial lo genera el generador pseudoaleatorio Mulberry32 con semilla 2000 y una densidad de relleno del 30 %, lo que asegura que todos los participantes, sea cual sea su dispositivo o tamaño de pantalla, parten de una configuración idéntica. El benchmark termina tras exactamente 2000 generaciones; cuanto menor el tiempo transcurrido, más rápido el dispositivo.
En cada generación, todas las celdas aplican a la vez cuatro reglas: una celda viva con 2 o 3 vecinas vivas sobrevive; con menos de 2 o más de 3 vecinas muere; una celda muerta con exactamente 3 vecinas vivas nace. Cada una de las 400 000 celdas requiere 8 lecturas de Uint8Array: 3,2 millones de lecturas por generación y 6400 millones a lo largo de todo el benchmark. La carga está limitada por el ancho de banda de memoria y no por la aritmética, por lo que los resultados son sensibles a la jerarquía de caché de la CPU y a la eficiencia de la precarga de datos.
Cada fotograma de animación calcula 27 pasos del juego de la vida y luego dibuja toda la cuadrícula de 800×500 mediante la API putImageData, escribiendo de una vez un búfer ImageData de 400 000 píxeles. Esta alternancia entre cálculo y renderizado exige tanto al rendimiento secuencial en enteros de la CPU como a la canalización de composición del canvas del navegador. Los bordes toroidales (con envoltura) se aplican con aritmética modular en cada celda del borde. El tiempo real desde el primer fotograma hasta completar la generación 2000 se registra con performance.now().