Оценка производительности браузерных дополнений для блокировки рекламы

Рассмотрев критику изменений в третьей редакции манифеста Chrome, нарушающих работу многих дополнений для блокирования нежелательного контента и обеспечения безопасности, разработчики из компании Google подытожили свою позицию по данному вопросу. Утверждается, что в реализации нового API declarativeNetRequest будут учтены пожелания и замечания авторов дополнений, в том числе будет расширен лимит на число правил блокировки, реализована возможность динамического добавления/удаления правил, добавлена поддержка дополнительных условий фильтрации и возможность не только блокирования, но и изменения частей запроса (например, для чистки отдельных Cookie).

Тем не менее, как и раньше разработчики Chrome намерены ограничить старый API webRequest режимом только для чтения (неблокирующим режимом), что позволит только отслеживать запросы, но не даст изменять их. Отсутствие блокирующего режима в API webRequest потребует перевода блокировщиков рекламы на новый API declarativeNetRequest, который самостоятельно применяет предоставленные дополнением правила фильтрации (предлагается встроенный в браузер типовой движок фильтрации запросов).

В качестве одного из основных аргументов против API webRequest представители Google называют замедление отображения контента, так как данный API работает в блокирующем режиме и перед выводом страницы браузер ожидает полного завершения обработки данных дополнением.
Авторы сервиса WhoTracks.Me и разработчики блокировщика рекламы Ghostery решили проверить насколько данные заявления соответствуют действительности и провели тестирование производительности фильтрации контента дополнениями uBlock Origin, Adblock Plus, Brave, DuckDuckGo и Cliqz/Ghostery.

Для проведения теста была организована симуляция обработки большого числа запросов при помощи рассматриваемых дополнений, для чего с использованием Node.js были подготовлены тесты, прогоняющие через движки блокировщиков 250 тысяч запросов (случайные страницы 500 самых популярных сайтов), 19% из которых приводили к блокировке. В блокировщиках использовался набор правил Easylist, включающий 38978 записей.

Измерение показало, что все рассмотренные блокировщики работают очень эффективно — задержки при применении фильтров, блокирующие вывод на этапе использования API webRequest, пренебрежимо малы на общем фоне. В среднем применение блокировщика замедляет выполнение запроса лишь на доли миллисекунд, что никак не может рассматриваться как повод для отключения поддержки блокирующего режима работы API webRequest.

В общем зачёте наибольшие задержки были зафиксированы для дополнения DuckDuckGo, которое замедляло каждый запрос в среднем на 8 мс. Для Ghostery, uBlock Origin, Adblock Plus и Brave задержки в среднем составили 0.007 мс, 0.017 мс, 0.019 мс и 0.041 мс соответственно.
Разница обработки запросов подлежащих и не подлежащих блокировке оказалась минимальной: Ghostery (0.007/0.006 мс), uBlock Origin (0.016/0.018 мс), Adblock Plus (0.014/0.020 мс), Brave (0.062/ 0.038 мс) и DuckDuckGo (8.31/6.78 мс).

Дополнительно была измерена производительность кода для кэширования (сериализации и десериализации) внутреннего представления данных, применяемого для ускорения загрузки базы правил. Данные операции приводят лишь к задержкам на этапе запуска и не влияют на производительность работы дополнения. Размер кэша c сериализированной базой правил для всех дополнений составляет примерно 2 Мб.

При сравнении потребления памяти наибольшую эффективность продемонстрировали дополнения Ghostery и uBlock Origin, требующие для работы 2-3 Мб ОЗУ. Потребление памяти Adblock Plus и DuckDuckGo составило приблизительно 15-16 Мб.

При измерении времени на разбор списка правил блокировки из общей массы выделился блокировщик браузера Brave, который потратил на разбор в 20 раз больше времени, чем остальные блокировщики. Наиболее быстрыми в этом тесте оказались Adblock Plus и uBlock Origin.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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