Никогда не задумывались, как конкретное расширение влияет на производительность вашего браузера? Насколько тяжко ему приходится после установки нескольких однотипных расширений с сомнительным функционалом? И есть ли расширения, способные хотя бы немного снизить нагрузку на ресурсы вашего ПК? Перевод заметки Debug Bear.
Как расширения влияют на производительность браузера?
Мы проверили 1 000 самых популярных расширений для браузера Google Chrome и выяснили, как они влияют на производительность браузера.
Основные выводы:
- Популярные расширения вроде Honey, Evernote Web Clipper и Avira Browser Safety могут оказывать существенное негативное влияние на скорость работы сайтов.
- Если сайт перегружен рекламными банерами, фильтры рекламы и инструменты защиты конфиденциальности действительно могут значительно повысить производительность.
Поскольку на разные сайты расширения могут влиять по-разному, тесты мы проводили на пяти одинаковых страницах: пустая вкладка example.com, сайты apple.com и toyota.com, а также новостные статьи The Independent и Pittsburg Post-Gazette.
Если вас интересует конкретное расширение, полный список можно найти здесь.
Содержание
- Нагрузка на ЦП
- Время отрисовки страницы
- Влияние на ЦП в фоновом режиме
- Потребление оперативной памяти
- Влияние блокировщиков рекламы и скрытых трекеров
- Взаимодействие нескольких установленных расширений
- Сравнение с прошлогодними тестами
- Подробнее о конкретных расширениях
- Методология
Нагрузка на центральный процессор
Хорошо продуманные расширения работают только там, где это действительно необходимо. Однако некоторые из проверенных расширений запускали свой код абсолютно на каждой странице, которую мы открывали.
Из 100 наиболее популярных расширений из Chrome Web Store самым прожорливым и тормозным оказался Evernote Web Clipper. Всякий раз, когда вы открываете новую страницу, на выполнение необходимого кода Evernote требуется 368 миллисекунд. Если вы попытаетесь взаимодействовать со страницей до того, как код Evernote полностью прогрузится, отклика не последует. Придётся ждать.
Каждое из этих расширений было скачено более миллиона раз. В целом несколько сотен миллисекунд – это довольно незначительный показатель, которым можно было бы и пренебречь. Однако, если у вас установлено несколько расширений из данного списка, это может существенно сказываться на общей скорости загрузки страниц.
Влияние установленного расширения на скорость загрузки сайта зависит и о того, какой именно сайт открывает пользователь. Приведённые выше показатели релевантны для очень простых сайтов. На сайтах с более сложной структурой влияние на производительность будет гораздо заметнее.
К примеру, на главной странице сайта Apple расширение Dark Reader тратит почти 25 секунд лишь на то, чтобы проанализировать и настроить изображение. В результате страница загружается в разы медленнее, чем без установленных расширений.
Расширение Honey (оно используется для поиска купонов на скидки) также значительно увеличивает время загрузки страницы, добавляя 825 миллисекунд дополнительной нагрузки на ЦП.
А на сайте Toyota самую большую задержку продемонстрировало расширение Norton Password. К общему времени загрузки страницы оно добавляло ещё около секунды.
На последнем графике представлено только 5 расширений. Дело в том, что и без установленных расширений сайт загружается дольше 3 секунд. А чем дольше загружается сайт, тем сложнее отличить случайную задержку от реального влияния расширения.
1 000 самых популярных расширений
Спустимся немного ниже и посмотрим на чуть менее популярные расширения, каждое из которых было загружено по меньшей мере 100 000 раз.
С Ubersuggest (полезный маркетинговый инструмент с 200 000 пользователей) при загрузке каждой открываемой страницы ваш процессор будет трудиться на 1,6 секунд дольше.
Расширение Substitutions автоматически заменяет в тексте определённые слова. На сравнительно простых сайтах оно мало влияет на производительность, добавляя около 10 миллисекунд к общему времени загрузки. Но на тяжёлых сайтах (вроде toyota.com) время нагрузки на ЦП увеличится до 9,7 секунд.
Время отрисовки страницы
Из-за большой нагрузки на ЦП страница может зависнуть и перестать отвечать на команды. К тому же высокая нагрузка на ЦП значительно увеличивает расход заряда аккумулятора. Если же обработка происходит уже после начала фактической загрузки страницы, влияние на производительность может быть не таким уж большим.
Некоторые расширения (к примеру, Loom и Ghostery) задействуют значительный по объёму код, однако это почти никак не влияет на скорость отрисовки страницы. Другие же расширения (вроде Clever, LastPass и DuckDuckGo Privacy Essentials) запускают код лишь в тот момент, когда начинает загружаться сама страница, тем самым оттягивая момент, когда пользователь наконец-то сможет увидеть её содержимое. Для измерения этой задержки мы использовали метрики First Contentful Point.
К примеру, главная страница Apple обычно загружается меньше, чем за секунду, но с установленным расширением Dark Reader время отрисовки увеличится до 4 секунд. Расширение Honey также замедляет отрисовку сайта почти на полсекунды.
Расширение Avira Browser Safety и некоторые блокировщики рекламы также могут задерживать начало отрисовки содержимого страницы.
1 000 самых популярных расширений
Если мы обратим взор на 1 000 самых популярных расширений из Chrome Web Store, то увидим, что расширение под нечитаемым для большинства пользователей названием 壹伴 · 小插件 замедляет отрисовку на 342 миллисекунды, а расширение Outreach Everywhere добавляет примерно 251 миллисекунду задержки.
При загрузке главной страницы сайта Toyota расширение anonymoX (анонимный прокси) задерживает отрисовку контента на 2 секунды, но в данном случае это можно объяснить маршрутизацией трафика через сторонний сервер.
Avira Browser Safety задерживает рендеринг на 369 миллисекунд, однако связано это не с кодом, который выполняется на конкретной странице, а с работой фоновых процессов самого расширения.
Фоновая нагрузка на ЦП
Расширения из Chrome Web Store могут запускать код не только на посещаемых вами страницах, но и в фоне, то есть на тех страницах, которые принадлежат самому расширению. К примеру, на таких страницах могут содержаться правила блокировки запросов к конкретным доменам.
Расширение Avira Save Shopping даже при загрузке простых страницы нагружает процессор на 2 секунды дольше.
Если речь идёт о тяжёлых сайтах (например, об официальном сайте Toyota), менеджер паролей Dashline и блокировщик рекламы AdGuard также тратят около 2 секунд на прогрузку фоновых процессов.
1 000 самых популярных расширений
При просмотре новостных статей The Independent трём наиболее прожорливым расширениям из Chrome Web Store (uberAgent, Dashline и Wappalyzer) требуется больше 20 секунд дополнительной нагрузки на ЦП в фоновом режиме.
Потребление оперативной памяти
Расширения сами по себе потребляют определённый объём оперативной памяти. Кроме того, расширения могут увеличивать и объём RAM, необходимой для работы каждой открытой вкладки. Чем больше открытых вкладок и чем больше установленных расширений, тем ниже производительность. Особенно это касается устройств с низкими техническими характеристиками.
Максимальный объём оперативной памяти забирают себе блокировщики рекламы и инструменты защиты конфиденциальности: им приходится работать с большим количеством данных о сайтах, на которые может попасть пользователь. Однако использование подобных расширений гипотетически может снизить объём необходимой для работы сайта оперативной памяти, так как без рекламных банеров и скрытых трекеров сайту требуется гораздо меньше ресурсов.
1 000 самых популярных расширений
По потреблению дополнительной оперативной памяти и среди 1 000 самых популярных расширений лидируют всё те же блокировщики рекламы: Trustnav, к примеру, вообще умудрился отхватить себе почти 300МБ RAM.
Как блокировщики рекламы и трекеров влияют на производительность?
Блокировщики рекламы могут стать причиной заметной задержки в отрисовке лёгких страниц. Однако, когда речь заходит о достаточно тяжёлых сайтах, блокировщики нежелательного контента действительно способны снизить нагрузку и существенно ускорить загрузку страниц. В этом разделе мы рассмотрим 15 популярных блокировщиков, у каждого из которых больше полумиллиона установок.
Работа скрытых трекеров и отрисовка рекламных банеров требуют значительных затрат ресурсов вашего ПК. Но характер такой нагрузки зависит от конкретного сайта. Новостные сайты часто усыпаны рекламой, поэтому именно там мы и проверяли работу блокировщиков. В качестве примера мы выбрали The Independent и Pittsburg Post-Gazette.
Без блокировки рекламы время нагрузки на ЦП составляет 17,5 секунды. Даже самый малоэффективный блокировщик из нашего списка (Trustnav) сокращает время нагрузки на ЦП до 7,4 секунды, то есть на 57%.
Самым эффективным блокировщиком оказался Ghostery. Он снижает время активной работы процессора на 90% (в среднем до 1,7 секунды).
По заверениям Реймонда Хилла, разработчика uBlock Origin, его расширение должно существенно снижать нагрузку на ЦП. И это действительно так: для отрисовки страниц требуется гораздо меньшее время нагрузки на ЦП. Вот только и само расширение в фоновом режиме также напрягает ЦП, и в некоторых случаях прирост производительности будет не таким уж существенным.
Фоновые процессы редко влияют на производительность открытых страниц, но всё же могут замедлить работу компьютера в целом.
Кроме того блокировщики рекламы и инструменты защиты конфиденциальности существенно снижают объём необходимого для загрузки страницы трафика: в среднем от 43 до 66%.
По умолчанию каждая статья делает в среднем 793 сетевых запроса. С Ghostery этот показатель снизился на 90% (до 83 запросов).
Без блокировщиков нежелательного контента объём оперативной памяти, необходимой для работы открытой вкладки, в среднем составлял 574МБ. Disconnect снизил этот показатель до 260МБ (то есть на 54%).
Однако, поскольку и самому расширению требуется некоторый объём оперативной памяти, некоторые расширения (к примеру, Trustnav) наоборот слегка увеличивают общее потребление RAM. В этом случае экономия от блокировки рекламы нивелируется дополнительными затратами на её блокировку.
Обратите внимание: всё сказанное выше применимо лишь в том случае, когда у вас открыта только одна тяжёлая страница. Если вы откроете, скажем, 10 тяжёлых сайтов, общее потребление RAM существенно вырастит, однако объём памяти, необходимой для работы самого блокировщика, останется прежнем.
Что будет, если установить сразу несколько расширений?
В большинстве случаев при установке сразу нескольких расширений негативное воздействие на производительность лишь усилится.
На изображении ниже видно, как меняется производительность главной страницы сайта apple.com, если у пользователя установлено четыре расширения: Ax Web Accessibility Testing, Evernote Web Clipper, LastPass и Skype. Если расширения запускают свой код одновременно с началом загрузки сайта, это существенно задержит отрисовку страницы.
Сравнение с результатами прошлогодних тестов
96 самых популярных расширений из нашего списка уже попадали к нам на проверку в прошлом году, и в среднем время нагрузки на ЦП сократилось на 28 миллисекунд.
Однако год назад мы тестировали расширения на Chrome 83, теперь же браузер успел добраться до 91-й версии. Поскольку и сам браузер за это время стал немного быстрее, прирост производительности не обязательно связан с оптимизацией проверяемых расширений.
Поэтому мы провели ещё ряд тестов и проверили работу актуальных версий расширений в старом браузере Chrome 83: в среднем прирост производительности составил около 13 миллисекунд.
Обратите внимание, что в данном случае мы рассматриваем лишь один показатель на одном сайте (пустая тестовая страница example.com).
Grammarly, Microsoft Office, Okta Browser Plugin, Avira Safe Shopping и Avira Browser Safety улучшили свои результаты почти на 100 миллисекунд. А вот Save to Pocket, Loom и Evernote наоборот стали работать медленнее.
Подробнее о конкретных расширениях
Оптимизация Grammarly
В прошлом году для каждой открытой страницы расширение Grammarly загружало файл Grammarly.js размером в 1,3МБ. Теперь на большинстве проверенных сайтов загружается только скрипт Grammarly-check.js весом всего в 112КБ, а полный файл Grammarly.js задействуется только в том случае, если пользователь полностью фокусируется на области с текстом.
Однако на некоторых сайтах расширение по-прежнему загружает полноразмерный скрипт. К таким сайтам относятся, например, Gmail, Twitter, YouTube, LinkedIn, Medium, Slack, Reddit, Upwork, Zendesk и другие популярные сайты, на которых пользователю часто приходится вводить тексты вручную.
Регресс Save to Pocket
В прошлом году расширение Save to Pocket добавляло по одной небольшой таблице стилей для каждой открытой страницы, однако это не оказывало существенного влияния на производительность.
Теперь же для каждой открытой страницы расширение загружает файл JavaScript весом в 2МБ, что добавляет почти 110 миллисекунд к общему времени загрузки страницы, а следовательно и ко времени нагрузки на ЦП.
Evernote, Outreach Everywhere и Ubersuggest
Сейчас Evernote загружает 4,3МБ скриптов для каждой открытой страницы. Год назад для тех же задач расширению хватало 2,9МБ. Чем больше данных, тем дольше выполняется код и тем дольше открывается страница.
Outreach Everywhere загружает 4,5МБ кода для каждой открытой страницы. Однако из-за того, что вместо параметра document_idle расширение использует document_start, на выполнение кода уходит гораздо больше времени и ресурсов, чем могло бы: страница начинает прогружаться лишь тогда, когда весь необходимый расширению код уже загружен. Отсюда и задержки.
Расширение Ubersuggest для каждой страницы загружает файл JavaScript размером в 7,5МБ. Похоже, большую часть этого файла занимают какие-то географические данные (к примеру, список из 38 279 объектов по всему свету).
Avira Save Shopping
У Avira Save Shopping больше 3 миллионов пользователей, и отрисовка страницы для каждого из них начинается почти на полсекунды позже.
Внутри расширения спрятан список из 39 328 надёжных сайтов. При переходе по очередному адресу Avira сперва сверяется со своими списками, а уже потом начинает загружать страницу. Результат ожидаем: страница загружается намного медленнее.
Dashlane и uberAgent
При просмотре статей The Independent оба расширения добавляют чуть больше 20 секунд дополнительной фоновой нагрузки на ЦП.
В ubreAgent, к примеру, для каждого сетевого запроса создаётся специальный таймер, который каждые 50 миллисекунд будет проверять, успела ли завершиться загрузка. А теперь представьте, что одна страница может содержать до тысячи подобных запросов: расширение создаст множество ненужных таймеров и существенно замедлит работу компьютера.
Dashlane работает совсем иначе и вместо сотен небольших задач время от времени выполняет одну большую. И временами на это уходит больше 500 миллисекунд.
Подробнее о каждом расширении
Узнать о том, как именно конкретное расширение влияет на общую производительность браузера можно здесь.
Методология
В ходе эксперимента мы проверили 1 004 расширения. Большая часть из них просто модифицирует пустую вкладку и почти никак не влияет на производительность браузера. В этом случае расширение не попадало в итоговые таблицы. Расширения, которые отказались запускаться или выдавали ошибку, также были исключены из итоговых результатов.