Benchmark de compresión/descompresión

¿Con qué rapidez comprime y descomprime datos tu navegador? Cuatro conjuntos de datos fijos —texto plano, JSON estructurado, datos binarios semialeatorios y una foto sintética—, cada uno comprimido y luego descomprimido con gzip o JPEG, con la misma cantidad de trabajo para todos los visitantes. Cuanto menor el tiempo total, mejor.

...
Tu resultado
— ms

Ver la clasificación TOP 500

Sobre este benchmark

La compresión de datos sin pérdida es uno de los caballos de batalla silenciosos de la informática: cada actualización descargada, cada página web transferida por HTTPS y cada archivo que un usuario abre con doble clic depende de un algoritmo que encuentra y elimina redundancia en los datos con la rapidez suficiente para que nadie lo note. El algoritmo DEFLATE de gzip y ZIP, publicado a principios de los años 90, sigue siendo el formato de compresión más extendido de internet justamente porque logra un equilibrio práctico entre tasa de compresión y velocidad, en vez de perseguir la mejor tasa posible a cualquier precio.

Este benchmark pone a prueba ese equilibrio directamente: tres conjuntos de datos fijos —un bloque de pseudoinglés generado, una matriz estructurada de registros JSON y un búfer binario semialeatorio con poca repetición interna— se comprimen y descomprimen varias veces seguidas con la implementación nativa de gzip del propio navegador. Un cuarto conjunto, una imagen sintética parecida a una foto generada de la misma manera determinista, pasa en cambio por el codificador y decodificador JPEG del navegador: un códec con pérdida basado en DCT, pensado para el detalle fotográfico y no para la redundancia a nivel de bytes de gzip, así que ejercita una parte del todo distinta del navegador. Todos los conjuntos se generan a partir de una fuente pseudoaleatoria con semilla, por lo que la entrada es idéntica para todos los visitantes.

La puntuación es el tiempo real combinado en milisegundos de los ocho pasos, medido con performance.now(): cuanto menor, mejor. La tabla de arriba se va rellenando con el tiempo de cada paso a medida que se alcanza, de modo que un dispositivo rápido con un códec pero lento con el otro se nota claramente y no queda oculto en un único número combinado.