Компания Google похвасталась тем, что свежие сборки браузера Chrome стали быстрее на 10% по сравнению с версией за август 2024 года. Если это кажется недостаточным прогрессом, разработчики приводят наглядную статистику — если каждый пользователь Chrome задействует его 10 минут в день, то ускорение на 10% суммарно экономит 58 млн часов или 83 «жизни» ожиданий загрузки сайтов и работы их компонентов.
Для замера скорости использовался открытый бенчмарк Speedometer 3, созданный в коллаборации с разработчиками других браузеров. Он тестирует нагрузку на веб-обозреватель в различных областях:
- парсинг HTML;
- обработка JavaScript и JSON;
- взаимодействие JavaScript и объектной модели документа (DOM);
- манипуляции с DOM (вставка и удаление элементов);
- вычисление размера текста (формирование шрифта);
- применение CSS и расчёт макета;
- рендеринг пикселей.
Примечательно, что тесты проводились на MacBook Pro (M4) с операционной системой macOS 15.
Чтобы добиться улучшений в Speedometer 3, разработчикам из Google потребовался многогранный подход, то есть они старались привнести улучшения сразу в нескольких направлениях. Так, компания оптимизировала размещение в памяти множества внутренних структур данных, связанных с DOM, CSS, версткой и отрисовкой. Теперь движок Blink избегает лишней нагрузки на системную память, сохраняя состояние там, где оно действительно нужно с точки зрения шаблонов доступа — это позволяет максимально эффективно использовать кэш процессора. Там, где внутренние данные уже использовали сборку мусора через Oilpan (например, DOM), использование этой системы было расширено: вместо malloc многие типы перевели на Oilpan. Это в целом ускоряет работу соответствующих компонентов, поскольку память в Oilpan размещается более компактно и эффективно.
За последний год обработка строк в рендерере тоже значительно улучшилась: разработчики избегали дорогостоящих представлений, где это возможно, и заменили старые алгоритмы хеширования на rapidhash. В более общем плане многие структуры данных получили улучшенные хеши, фильтры и алгоритмы пробинга, что повышает эффективность доступа и поиска. Там, где рендеринг неизбежно требует больших ресурсов — например, при вычислении CSS-стилей для множества элементов — теперь кэш используется гораздо эффективнее, с более высоким уровнем попаданий. Одновременно с этим меньше кэшируются нерелевантные данные, что тоже повышает общую производительность.
Ещё одна затратная область — формирование шрифтов (font shaping). Здесь команда значительно ускорила производительность Apple Advanced Typography, что важно везде, где отображается текст.