- PVSM.RU - https://www.pvsm.ru -

Firefox остаётся самым быстрым браузером

Firefox остаётся самым быстрым браузером - 1 [1]

Почти год назад случилось знаковое событие: впервые в истории Firefox обошёл Chrome по скорости работы [2].

Многие помнят, что с момента выхода в 2008 году Chrome отличался высокой производительностью, а Firefox на его фоне выглядел тяжеловесным и страдал от утечек памяти. Но постепенно Mozilla исправила ситуацию [3], так что в 2023 году браузеры наконец поменялись местами.

Единственное сомнение может вызвать объективность тех тестов, всё-таки Speedometer 2.0 [4] — довольно старый набор 2018 года. Может, он не соответствует современному разжиревшему вебу? Что ж, теперь увидела свет новая версия Speedometer 3.0 [5], поэтому взглянем на более достоверную и объективную картину: какой браузер быстрее на самом деле?

▍ Браузерные бенчмарки

Firefox остаётся самым быстрым браузером - 2

Браузерные бенчмарки оценивают производительность браузера при выполнении заранее определённого списка задач. Как правило, тесты доступны онлайн на официальном веб-сайте, откуда загружаются соответствующие библиотеки и выполняются в браузере клиента. Таким образом, любой пользователь может запустить тесты на конкретном компьютере в своей конфигурации и посмотреть, какой браузер быстрее работает лично у него.

Типичные задачи тестирования: рендеринг и анимация, преобразования DOM, операции со строками, математические вычисления, алгоритмы сортировки, тесты графической производительности и инструкции по работе с памятью.

Firefox остаётся самым быстрым браузером - 3

Нужно заметить, что некоторые тесты ставят целью проверить не только быстродействие, но и совместимость. Например, популярный тест Acid3 [6] проверяет в том числе соответствие браузера веб-стандартам.

Бенчмарк Speedometer — это опенсорсный проект [7], который развивается при участии разработчиков браузерных движков Apple, Google, Mozilla и сотен независимых разработчиков.

Speedometer стремится как можно точнее отразить реальную производительность браузера в реальном вебе. Для этого он тестирует весь путь пользователя, а не отдельные функции в узком цикле. В каждом тесте отрабатывается полный набор действий, необходимых движку для выполнения определённой задачи.

Speedometer 1.0 изначально разработала группа WebKit компании Apple для внутренних нужд. В 2014 году она выложила его в открытый доступ [8]. В 2018 году вышла вторая версия [9]. Тест моделирует действия пользователя со списком дел с помощью нескольких примеров в TodoMVC:

Firefox остаётся самым быстрым браузером - 4

Каждый пример реализует одно и то же приложение, используя DOM API по-разному. Некоторые вызывают DOM API непосредственно из ECMAScript 5 (ES5), ECMASCript 2015 (ES6), ES6, транспилированного в ES5, и Elm, транспилированного в ES5. Другие используют один из одиннадцати популярных JavaScript-фреймворков, которые де-факто работают на самых популярных сайтах в интернете. Производительность подобных операций зависит от скорости работы DOM API, движка JavaScript, разрешения стилей CSS, вёрстки и др.

▍ Speedometer 3.0

За прошедшие десять лет Speedometer стал ключевым инструментом для оптимизации производительности браузерных движков.

Чтобы лучше отражать реальность современного веба, в третьей версии добавлено несколько новых тестов:

Также улучшены тесты TodoMVC: обновлён код для адаптации к наиболее распространённым версиям самых популярных фреймворков, основываясь на данных из HTTP Archive. Включены следующие фреймворки и библиотеки: Angular, Backbone, jQuery, Lit, Preact, React, React+Redux, Svelte и Vue; а также ванильные реализации JavaScript, ориентированные на ES5 и ES6, и версия Web Components. Полный список:

Разработчики представили более сложные версии этих тестов, которые встраиваются в более крупное дерево DOM с множеством сложных CSS-правил, что более точно имитирует вес и структуру страницы в популярных сегодня веб-приложениях. Для понимания, вот размер дерева DOM [28] на некоторых популярных сайтах в данный момент:

Веб-страница Размер DOM Максимальная глубина
amazon.com 3746 22
youtube.com 9082 30
Выдача Google 3458 48
reddit.com 4460 21
Статья MDN Promises 4167 17
walmart.com 3382 25
Facebook* (после скроллинга) 9957 63
Gmail (открытое письмо) 3494 69
HBO Max 5478 19
Airbnb.com (после авторизации и применения фильтров) 3388 38
Adobe Photoshop (панель Quick Actions) 6751 ≥ 24
Adobe Photoshop (новый Text Box) 6331 ≥ 31
bbc.com/news/world 3898 26
nationalgeographic.com 4111 23
Google Docs 3558 15
Google Sheets 5730 18
Пост StackOverflow 2521 19
Microsoft Outlook 2870 32
Microsoft Teams 2542 32
apple.com/apple-vision-pro 2857 18
Twitter 2488 59

В совокупности новый бенчмарк даёт более полную и объективную оценку производительности движка. Подробнее о самих тестах см. здесь [29].

Впервые Speedometer разработан в рамках межотраслевого сотрудничества при поддержке всех крупных браузерных движков: Blink/V8, Gecko/SpiderMonkey и WebKit/JavaScriptCore, при участии сотен независимых разработчиков. Он создан в соответствии с новой моделью управления [30], основанной на консенсусе, и размещён в открытом репозитории [31].

Кроме бенчмарков, улучшена программа для запуска тестов (test runner). Прогонщик теперь измеряет больше разных показателей работы браузера в ответ на действия пользователя, например, рисование и асинхронные задачи.

▍ Как было:

Speedometer 2.0 измерял время синхронного запуска тестового скрипта как «синхронное» время, а также любую дополнительную работу до срабатывания нулевого (0 секунд) таймера как «асинхронное» время.

Firefox остаётся самым быстрым браузером - 7

Однако при этом упускалась часть работы, которую приходится выполнять браузерным движкам для обновления рендеринга веб-страницы. На следующей диаграмме показано, какая часть работы может упускаться из виду:

Firefox остаётся самым быстрым браузером - 8

▍ Как стало:

В Speedometer 3.0 можно измерить эту ранее пропущенную работу по рендерингу, что более объективно отражает картину, пишут [32] разработчики. Теперь тестовый скрипт внутри обратного вызова requestAnimationFrame [33] (rAF на схеме) принимается как «синхронное» время, а нулевой таймер во втором вызове requestAnimationFrame — как асинхронное. Это асинхронное время гарантированно включает работу таймеров в самом тесте, а также рендеринг страницы движком браузера.

Firefox остаётся самым быстрым браузером - 9

По сути, Speedometer 3.0 использует тот факт, что все браузерные движки для обновления рендеринга внедрили модель циклов событий HTML5 [34].

Эти изменения значительно повышают точность бенчмарка и приводят к реальным улучшениям для пользователей, ведь разработчики движков после получения результата бенчмарка оптимизируют эту ранее отсутствующую работу.

Firefox остаётся самым быстрым браузером - 10

Есть и другие улучшения. Доработан инструментарий для разработчиков, чтобы инженеры лучше понимали результаты, создавали профили и настраивали тесты. Переработана архитектура прогона тестов, чтобы упростить написание и сопровождение сложных тестовых случаев. Кроме того, улучшено качество кода, реализованы современные функции, которые не были широко доступны на момент выхода Speedometer 2.0, такие как нативные промисы, async/await, классы и модули.

Для установки тестов на своём сервере опубликованы требования к dev-окружению [35].

▍ Результаты

Результаты бенчмарков Speedometer 3.0 показывают, что на апрель 2024 года Firefox сохраняет небольшое преимущество перед Chrome по производительности [2]: 201,54 балла против 197,69.

Firefox остаётся самым быстрым браузером - 11

Хотя если объективно, то оба браузера идут очень близко. Почти каждый день с новым билдом лидер может измениться.

Вот картина по отдельным тестам [36] под Windows 10 за последний год:

Firefox остаётся самым быстрым браузером - 12

Результаты тестов под Linux

Firefox остаётся самым быстрым браузером - 13

Бенчмарк в Speedometer 3.0 [37] на офисном ПК под Windows 10 (апрель 2024), последние версии всех браузеров:

  • Firefox 124.0.2 (64-бит) без расширений: 8,87 ± 0,13
  • Firefox Nightly 126.0a1 (64-бит) без расширений: 8,79 ± 0,28
  • Chrome 123.0.6312.106 (64-бит) с 13 расширениями: 7,16 ± 0,38
  • Chrome 123.0.6312.106 (64-бит) с 8 расширениями: 8,17 ± 0,17
  • Chrome 123.0.6312.106 (64-бит) без расширений: 8,93 ± 0,17

Если посмотреть результаты за последние два года, то налицо увеличение производительности Firefox и Chrome. Особенно много прибавил Firefox.

Улучшение производительности Firefox в 2023 году [38] для реальных пользователей — это результат [39] оптимизации [40] движка именно под Speedometer 3.0, плюс исправление сотен багов [41] в JS, DOM, CSS, обработке графики, фронтенде, распределении памяти, оптимизаций под профили и др.

Firefox остаётся самым быстрым браузером - 14
Медианное время между запуском запроса (Response Start) и получением первого байта из сети (First Contentful Paint [42], FCP) в Firefox на протяжении 2023 года

В результате оптимизации FCP в течение года первый отклик от страницы стал приходить в браузер на 15% быстрее, чем в начале года.

Существенный рост производительности в рендеринге JS особенно чувствуется на тяжёлых страницах, перегруженных скриптами:

Firefox остаётся самым быстрым браузером - 15
95-й процентиль времени выполнения JS на странице, оптимизация Firefox в течение 2023 года

Ещё одна ключевая метрика: задержка между нажатием клавиши на клавиатуре и появлением символа на экране (на графике 95-й процентиль):

Firefox остаётся самым быстрым браузером - 16

Общая оценка билда Firefox Nightly в тесте Speedometer повышалась на протяжении всего прошлого года:

Firefox остаётся самым быстрым браузером - 17

Mozilla соблюдает цикл релизов каждые четыре недели: 19 марта 2024 года вышел Firefox 124 [43] с улучшенным редактором PDF [44], который теперь позволяет добавлять текст и рисунки (подписи) в файлы PDF прямо в браузере:

Firefox остаётся самым быстрым браузером - 18

Это пока последняя версия, следующая должна выйти 16 апреля.

Как уже говорилось, Firefox остался последним свободным браузером на независимом движке (Gecko [45]). Сейчас это единственная альтернатива монополии WebKit (Safari) и его форка Blink [46] (Chrome, Edge, Opera и др.). И это единственный популярный браузер, который не принадлежит крупной корпорации.

*Социальная сеть Facebook запрещена в России как экстремистская.

Автор: Анатолий Ализар

Источник [47]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/391007

Ссылки в тексте:

[1] Image: https://habr.com/ru/companies/ruvds/articles/805651/

[2] Firefox обошёл Chrome по скорости работы: https://treeherder.mozilla.org/perfherder/graphs?timerange=31536000&series=mozilla-central,3735773,1,13&series=mozilla-central,3412459,1,13

[3] исправила ситуацию: https://blog.nightly.mozilla.org/2023/04/14/dropping-the-banner-hammer-and-more-these-weeks-in-firefox-issue-134/

[4] Speedometer 2.0: https://browserbench.org/Speedometer2.0/

[5] Speedometer 3.0: https://browserbench.org/Speedometer3.0/

[6] Acid3: http://acid3.acidtests.org/

[7] опенсорсный проект: https://github.com/WebKit/Speedometer/tree/main

[8] выложила его в открытый доступ: https://webkit.org/blog/3395/speedometer-benchmark-for-web-app-responsiveness/

[9] вторая версия: https://webkit.org/blog/8063/speedometer-2-0-a-benchmark-for-modern-web-app-responsiveness/

[10] Charts-observable-plot: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/charts

[11] React-Stockcharts-SVG: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/react-stockcharts

[12] Perf-Dashboard: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/perf.webkit.org

[13] CodeMirror: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/editors

[14] Next.js: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/newssite/news-next

[15] Nuxt.js: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/newssite/news-nuxt

[16] TodoMVC-JavaScript-ES5: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/vanilla-examples/javascript-es5

[17] TodoMVC-JavaScript-ES6-Webpack-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/vanilla-examples/javascript-es6-webpack-complex

[18] TodoMVC-WebComponents: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/vanilla-examples/javascript-web-components

[19] TodoMVC-React-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/react-complex

[20] TodoMVC-React-Redux: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/react-redux

[21] TodoMVC-Backbone: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/backbone

[22] TodoMVC-Angular-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/angular-complex

[23] TodoMVC-Vue: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/vue

[24] TodoMVC-jQuery: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/jquery

[25] TodoMVC-Preact-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/preact-complex

[26] TodoMVC-Svelte-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/svelte-complex

[27] TodoMVC-Lit-Complex-DOM: https://github.com/WebKit/Speedometer/tree/release/3.0/resources/todomvc/architecture-examples/lit-complex

[28] размер дерева DOM: https://blogs.windows.com/msedgedev/2024/03/11/contributing-to-speedometer-30/

[29] здесь: https://www.browserbench.org/Speedometer3.0/about.html

[30] новой моделью управления: https://github.com/WebKit/Speedometer/blob/main/Governance.md

[31] открытом репозитории: https://github.com/WebKit/Speedometer/

[32] пишут: https://browserbench.org/announcements/speedometer3/

[33] requestAnimationFrame: https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame

[34] модель циклов событий HTML5: https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model

[35] требования к dev-окружению: https://github.com/WebKit/Speedometer/blob/main/Development.md

[36] картина по отдельным тестам: https://arewefastyet.com/win10/benchmarks/overview?numDays=365&series=Chrome,Firefox

[37] Speedometer 3.0: https://browserbench.org/Speedometer3.0

[38] Улучшение производительности Firefox в 2023 году: https://hacks.mozilla.org/2023/10/down-and-to-the-right-firefox-got-faster-for-real-users-in-2023/

[39] результат: https://hacks.mozilla.org/2023/09/faster-vue-js-execution-in-firefox/

[40] оптимизации: https://spidermonkey.dev/blog/2023/11/27/newsletter-firefox-118-121.html

[41] сотен багов: https://mzl.la/4bYLwtn

[42] First Contentful Paint: https://developer.mozilla.org/en-US/docs/Glossary/First_contentful_paint

[43] Firefox 124: https://www.mozilla.org/en-US/firefox/124.0/releasenotes/

[44] редактором PDF: https://www.mozilla.org/en-US/firefox/features/pdf-editor/

[45] Gecko: https://developer.mozilla.org/en-US/docs/Glossary/Gecko

[46] Blink: https://www.chromium.org/blink/

[47] Источник: https://habr.com/ru/companies/ruvds/articles/805651/?utm_source=habrahabr&utm_medium=rss&utm_campaign=805651