Насколько быстр движок JavaScript в вашем браузере? Восемь фиксированных задач — строки, регулярные выражения, математика, сортировка и поиск, рекурсия, решето простых чисел, JSON и операции с массивами — одинаковый объём работы для всех, одна задача за другой. Меньше суммарное время — лучше.
Прямое тестирование движка JavaScript старше большинства возможностей веб-платформы, построенных поверх него, — SunSpider от WebKit и Octane от V8 были почти всё десятилетие 2010-х теми числами, которыми разработчики браузеров мерились друг с другом, и оба в итоге были упразднены: движки выросли настолько быстрыми и настолько наловчились распознавать код бенчмарочной формы, что цифры перестали отражать, каково реальной странице. Этот тест следует их формату, а не точному коду тестов: набор небольших самодостаточных задач, каждая нагружает свою часть движка, идут подряд, замеряются как одна.
Восемь задач идут по очереди: построение и преобразование длинной строки; сопоставление нескольких регулярных выражений с абзацем сгенерированного текста; несколько миллионов вызовов тригонометрических и логарифмических функций; сортировка двухсот тысяч чисел и последующий бинарный поиск по результату; немемоизированный рекурсивный вызов Фибоначчи, нагружающий не арифметику, а издержки вызова функций; решето Эратосфена по трём миллионам целых чисел на типизированном массиве; кодирование и декодирование увесистого дерева объектов через JSON; и цепочка filter–map–reduce по полумиллиону элементов массива. Там, где нужна случайность, каждая задача использует генератор с фиксированным зерном, так что вход одинаков у всех посетителей.
Результат — суммарное время всех восьми задач в миллисекундах, замеренное через performance.now() — меньше значит лучше. Таблица выше заполняется временем каждой задачи по ходу выполнения — на случай, если какая-то часть движка окажется необычно быстрой или медленной относительно остальных. Всё выполняется в один поток без разогревочного прохода, поэтому первый визит и более поздний могут немного отличаться, пока собственный оптимизатор движка включается прямо посреди прогона, — та же изменчивость, что видят обычные страницы.