Насколько быстро ваш браузер умеет сжимать и распаковывать данные? Четыре фиксированных набора данных — обычный текст, структурированный JSON, полуслучайные бинарные данные и синтетическая фотография — каждый сжимается, а затем распаковывается с помощью gzip или JPEG, одинаковый объём работы для всех. Меньше суммарное время — лучше.
Сжатие данных без потерь — один из незаметных тружеников вычислительной техники: каждое скачанное обновление, каждая веб-страница, переданная по HTTPS, каждый архив, который открывает пользователь, полагается на алгоритм, находящий и убирающий избыточность из данных достаточно быстро, чтобы этого никто не замечал. Алгоритм DEFLATE, лежащий в основе gzip и ZIP и опубликованный в начале 1990-х, остаётся самым распространённым форматом сжатия в интернете именно потому, что находит практичный баланс между степенью сжатия и скоростью, а не гонится за максимальным сжатием любой ценой.
Этот тест напрямую проверяет такой баланс: три фиксированных набора данных — блок сгенерированного псевдоанглийского текста, структурированный массив JSON-записей и полуслучайный бинарный буфер с лишь небольшой внутренней повторяемостью — по очереди сжимаются, а затем распаковываются несколько раз подряд с помощью встроенной в браузер реализации gzip. Четвёртый набор данных — синтетическое фотоподобное изображение, сгенерированное тем же детерминированным способом, — вместо этого проходит через встроенный в браузер JPEG-кодировщик и декодировщик: кодек с потерями на основе ДКП, созданный для фотографических деталей, а не для побайтовой избыточности gzip, поэтому он нагружает совсем другую часть браузера. Каждый набор данных генерируется из источника псевдослучайных чисел с фиксированным зерном, так что вход одинаков у всех посетителей.
Результат — суммарное время всех восьми шагов в миллисекундах, замеренное через performance.now() — меньше значит лучше. Таблица выше заполняется временем каждого шага по ходу выполнения, поэтому устройство, которое быстро работает с одним кодеком, но медленно с другим, будет заметно, а не скрыто внутри одного общего числа.