С точки зрения влияния плагинов и дополнений на производительность операционной системы и браузера можно выделить:
- потребление оперативной памяти
- замедление запуска браузера, а также открытия вкладок и перехода к страницам
При этом не стоит стричь дополнения и плагины под одну гребенку.
Дополнения, как правило, загружаются в браузер сразу при его запуске. Наличие подключенного плагина еще не означает, что он активен с первой секунды работы браузера. Напротив, загрузка плагинов происходит по мере необходимости.
Это легко проверить с помощью Process Explorer, встроенных средств браузеров и Windows Performance Toolkit. Первая часть рассказа началась с того, что я обнаружил множество плагинов в Opera – давайте посмотрим, как они влияют на производительность.
Отслеживание загрузки плагинов в Opera, Chrome и Firefox
Process Explorer позволяет посмотреть динамические библиотеки, используемые процессом. Слева на рисунке показаны библиотеки, загруженные в браузер Opera с пустой стартовой страницей. Как видите, здесь нет ни одного плагина NPAPI (с именем, начинающимся с NP). Справа показана та же сессия браузера после открытия сайта, использующего технологию Flash (она встречается повсеместно), а также PDF-файла в другой вкладке.
Браузер моментально загрузил подключенные плагины, чтобы обеспечить проигрывание Flash и отобразить документ в формате PDF. При этом рабочий набор памяти (Working Set) вырос со 113 Мб при единственной пустой вкладке до 133 Мб при двух открытых вкладках с сайтом и PDF-файлом. После закрытия этих вкладок плагины остаются загруженными в браузер, а потребление памяти падает незначительно.
То же самое будет происходить, скажем, при проигрывании роликов QuickTime – с помощью плагина npqtplugin.dll браузер активирует все необходимые компоненты в количестве почти 40 штук! И почти все они останутся загруженными в браузер даже после закрытия вкладки, а потребление памяти вырастет еще мегабайт на 30.
В Chrome и Firefox плагины тоже загружаются по мере необходимости, в чем вы можете убедиться самостоятельно. В Firefox плагины содержатся в отдельных контейнерах, и для каждого можно посмотреть, какие библиотеки загружены.
Chrome спрашивает разрешения на запуск плагина, как минимум в первый раз на сайте (в Opera эта возможность тоже есть, но отключена по умолчанию).
Поскольку Chrome запускает несколько своих процессов, проще смотреть загруженные плагины встроенными в браузер средствами на странице about:memory.
Как видите, браузеры Opera, Chrome и Firefox загружают их только при необходимости.
Можно с уверенностью сказать, что отключение ненужных плагинов NPAPI не дает выигрыша в производительности.
По той же причине я не вижу особого смысла настраивать браузер для запросов об активации плагина при каждой встрече с мультимедийным содержимым – это только замедляет веб-серфинг. Однако, будучи однажды загруженными, плагины продолжают использовать оперативную память на протяжении всей сессии браузера, т.е. до его закрытия.
Потребление памяти дополнениями Opera, Chrome и Firefox
Мы выяснили, что плагины начинают потребляют оперативную память только после того, как они впервые понадобятся браузеру в течение сессии.
Дополнения загружаются при запуске браузера, соответственно память они потребляют с первой секунды его работы.
У меня в браузере Google не были установлены дополнения, но свой боевой набор подсказал мой коллега Morpheus, у которого Chrome является основным окном в Интернет.
У Chrome в меню «Инструменты» есть очень удобный диспетчер задач, который показывает сведения о потреблении оперативной памяти и времени процессора браузером и дополнениями.
Как видите, 13 дополнений занимают 102 Мб оперативной памяти, т.е. даже больше чем браузер, открытый с одной вкладкой. По мере открытия сайтов в других вкладках растет потребление памяти и у дополнений, хотя намного меньше, чем у процессов браузера.
У Firefox и Opera таких инструментов нет, но можно задействовать Process Explorer, сравнив потребление памяти браузером с дополнениями и без них. На примере отслеживания плагинов NPAPI вы уже видели, как посмотреть рабочий набор памяти с помощью Process Explorer.
Firefox можно запустить без дополнений командой firefox -safe-mode. При этом плагины остаются включенными, что дает возможность оценить потребление памяти только дополнениями. В Opera каждое дополнение, наверное, придется отключать вручную.
Измерение времени запуска браузера и навигации к веб-странице
Интуитивно понятно, что браузер без дополнений работает быстрее, чем с ними. Но как это измерить? Я опишу два возможных пути.
Internet Explorer
В Internet Explorer плагины и дополнения называются надстройками (add-ons), а управление ими объединено.
Производительность Internet Explorer удобно отслеживать с помощью Windows Performance Toolkit (WPT). В отличие от других браузеров, IE регистрирует события создания вкладок и навигации к страницам, и это можно записать с помощью WPT. Я не буду дублировать рассказ о загрузке и установке WPT, поэтому сразу перейду к делу.
Я решил сравнить время запуска браузера с последующей загрузкой главной страницы своего блога при стандартном наборе моих надстроек и без надстроек вовсе. Чтобы автоматизировать процесс, я написал простенький командный файл, где каждое действие сопровождается комментарием. Запускать файл нужно от имени администратора, поскольку это необходимо для работы xperf.
@echo off :: Имя для файла сессии и лога :: Изменяйте, чтобы не перезаписывать лог set session=mytrace1 :: Переход в папку, где будет храниться лог cd c:\test :: Запуск xperf для отслеживания активности xperf -start %session% -on PerfTrack :: Пауза в 3 секунды http://www.oszone.net/6160 nircmd wait 3000 :: Запуск браузера с одной вкладкой :: С надстройками start /d"C:\Program Files\Internet Explorer" iexplore www.outsidethebox.ms :: Без надстроек :: start /d"C:\Program Files\Internet Explorer" iexplore -extoff www.outsidethebox.ms :: Пауза в 10 секунд для загрузки страницы nircmd wait 10000 :: Остановка отслеживания активности xperf -stop %session% -d %session%.etl :: Пауза в 3 секунды nircmd wait 3000 :: Открытие ETL-файла xperfview %session%.etl exit
После запуска ETL-файл открывается автоматически и отображает зарегистрированные события.
Цвет каждой точки соответствует провайдеру, т.е. источнику события, если говорить упрощенно. При наведении курсора на каждую точку всплывает подробная информация о ней. Первая зеленая точка – это начало запуска браузера, а две желтые – это начало и конец навигации к странице.
Можно открыть калькулятор и вычислить разницу между точками, используя TimeStamp каждой, а можно щелкнуть левой кнопкой мыши по начальной точке и потянуть курсор до конечной точки. От начала запуска браузера до полной загрузки страницы прошло 2,55 секунды, из них 2,17 ушло на навигацию.
Повторяю эксперимент, но в этот раз браузер запускается без надстроек.
Длительность запуска IE9 сократилась до 2,08 секунды, а навигация заняла 1,70 секунды. Конечно, для более точных выводов следует сделать несколько контрольных запусков.
Интересный способ измерения производительности, не правда ли? Применив его на нескольких сайтах, можно вычислить надстройки, которые замедляют открытие вкладок и навигацию по страницам.
Время загрузки и навигации для надстроек умел показывать еще IE8, а в IE9 был сделан еще один шаг вперед.
Советник по производительности надстроек в IE9
В IE9 появился так называемый «Советник по производительности надстроек». Если суммарная длительность запуска надстроек превышает заданное значение (по умолчанию – это 0,2 секунды), при старте браузера появляется предложение отключить медленные или ненужные надстройки.
Вызвать это окно из интерфейса браузера нельзя, но есть обходной путь — реестр. Пороговое значение задается параметром AddonLoadTimeThreshold в разделе
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MAO Settings
Задав параметру значение 0 и перезапустив проводник и браузер, вы увидите вожделенное окно.
Opera, Firefox и Chrome
Дополнения замедляют запуск всех браузеров. По данным разработчиков Firefox, каждое дополнение в среднем тормозит запуск на 10%, т.е. десять дополнений увеличивают длительность запуска браузера в два раза. Mozilla реализовала автоматическое тестирование дополнений, и теперь в галерее должно отображаться предупреждение, если дополнение тормозит запуск браузера более чем на 25%.
К сожалению, Windows Performance Toolkit не поможет измерить длительность запуска и навигации к веб-странице в Opera, Firefox или Chrome, т.к. в них не регистрируются нужные события. Взять в руки секундомер? Слишком большая погрешность. Я решил пойти другим путем.
Методика измерения
Если вы захотите повторить мой эксперимент, вам понадобятся:
- программа для записи видео с экрана
- проигрыватель, умеющий воспроизводить видео в покадровом режиме и показывать шкалу времени с десятыми/сотыми долями секунды
Свои видео я делаю в Camtasia, обладающей обеими возможностями, но подойдут и более простые бесплатные аналоги.
Алгоритм действий такой:
- Настройте в качестве единственной домашней страницы браузера любой сайт.
- Включите запись.
- Запустите браузер с надстройками и без них одинаковое количество раз.
- Выключите запись.
Поскольку видеозапись у меня уже была, осталось добавить пояснения и музыку :)
Теперь используйте покадровый режим проигрывания записанного видео, чтобы точно определить моменты запуска браузера и окончания загрузки веб-страницы. В Camtasia это делается элементарно с точностью до одной сотой секунды.
Сравнив среднее время запуска и навигации в браузере с дополнениями и без, вы увидите разницу.
Эксперимент с Google Chrome
Используя набор из 13 дополнений, я решил проверить, как они влияют на скорость запуска браузера с загрузкой веб-страницы.
Чтобы Google было не скучно, я открывал в ее браузере сайт Microsoft – по 5 раз в обычном режиме и режиме инкогнито, в котором дополнения по умолчанию отключены.
Разница в скорости загрузки составила 29%. Это немало, но пара лишних секунд при загрузке с лихвой компенсируется удобством дополнений!
Если вы решите провести подобный эксперимент со своим браузером, обязательно расскажите в комментариях, что у вас получилось!
Как видите, дополнения не только используют системные ресурсы (оперативную память), но и влияют на скорость запуска браузера.
Выводы
Итак, мой рассказ о плагинах и дополнениях браузеров закончен. Вы узнали, что подключенные плагины не оказывают влияния на производительность до тех пор, пока браузер их не загрузит. Этого нельзя сказать про дополнения, которые замедляют запуск браузера и используют оперативную память с первых секунд его работы. Однако эти недостатки компенсируются экономией времени, которая достигается за счет более эффективного веб-серфинга с дополнениями.
Вы также познакомились с различными способами измерения скорости работы и потребления памяти браузерами и дополнениями к ним. Process Explorer, Windows Performance Toolkit, встроенные средства браузеров и немного смекалки – вот и все, что нужно, чтобы оценить влияние надстроек на производительность браузеров. Если у вас есть замечания или пожелания по этим способам, не стесняйтесь выразить их в комментариях.
А как у вас обстоят дела с дополнениями к браузерам? Сколько их и как много оперативной памяти им требуется? Насколько быстрее запускается ваш браузер без дополнений?
Morpheus
Вадим, вот спасибо! Отличные методы диагностики, которые надо применить на практике. Идея с записью видео вообще очень оригинальна :)
При запуске хрома происходит непонятное замедление открытия первой страницы. Попробовал запустить без расширений (—disable-extensions), но замедление на месте. Перехожу к Process Explorer :)
Vadim Sterkin
Morpheus, ты — первый. Два будильника сработали? :) Про ключ -disable-extensions я как-то не подумал, все-таки Chrome у меня экспериментальный браузер. Режим инкогнито — первое, что пришло в голову. Расширения в нем отключены, а плагины подключаются — проверил.
Судя по тестированию, у тебя дело не в расширениях, поэтому нужно смотреть второй аспект — плагины. Другими словами, запускать браузер с одной страницей и с пустой вкладкой. Если замедление есть даже при пустой вкладке, плагины ни при чем.
Тогда уже надо смотреть другие аспекты — например, очистить кэш.
Morpheus
Да, сработали, всё гут :)
В общем, ни отключение расширений, ни отключение плагинов (—disable-plugins) ни к чему положительному не привели. Procexp тоже ничем не порадовал. Заюзал Procmon, но браузер создаёт такую кучу активностей, что разобраться в них практически нереально.
Прочистка кэша, куков и истории — увы.
До этого было замечено, что начинало быстрее работать сразу после установки новой версии, но сейчас и это не помогает…
ХЗ, мож так и должно быть :)
Андрей
Вадим, большое вам спасибо за прекрасные и понятные описания.
Мне, для кого комп как увлечение, все статьи очень полезны и понятны. Правда время маловато, но всегда уделяю время чтоб посетить ваш блог.
Дополнения стараюсь использовать, как можно меньше. Может если занимался профессионально, то наверное об этом задумался, но посчитал что так проще. …ну а если, что то лады :) …
В основном использую IE и Opera. Правда с выходом IE9, чаще его.
В Chrome визуально большой скорости не заметил, поэтому не вижу смысла.
Ещё раз спаибо!
Eugene_R
Захотелось проверить влияние дополнений на скорость загрузки страницы в своем Chrome. Использовал страницу с оверклокеров. И получил такой результат — с дополнениями на 21% быстрее (3,07 секунд с дополнениями, 3,89 — без). Возникает вопрос — почему так? Сейчас объясню. У меня всего 8 дополнений. Обратите внимание на расширение NotScripts — именно оно и ускоряет загрузку страниц, за счет того, что позволяет выбирать, с каких доменов запускать скрипты, а с каких — нет. На тестовой странице 10 источников скриптов — и большинство из них мне нужны, поэтому я их блокирую. Не выполняются скрипты — экономится время.
Аналогичное дополнение для Firefox имеет более гибкие настройки.
Также считаю важным отметить, что это расширение я устанавливал не с целью ускорения загрузки страниц.
Vadim Sterkin
Morpheus, может, так и должно быть. Но ты же можешь проверить на чистом профиле или чистой установке.
Андрей, спасибо за отклик. Я стараюсь писать доступно даже о сложном, и судя по вашим словам, иногда это получается :)
Eugene_R, интересный поворот! Но ведь при этом вы не только ускоряете веб-серфинг, но и теряете возможность использования многих фич сайтов — ведь без JS веб немыслим уже.
Я установил это расширение для проверки, и оно сходу нейтрализовало в моем блоге jQuery и другие скрипты. В результате навскидку перестали работать:
— кнопка Google +1, с помощью которой я хотел бы видеть вашу реакцию на мои записи
— слайдер на главной странице, где сменяются пять последних записей
— меню «Здесь и сейчас» в боковой панели, куда вынесены последние комментарии, горячие обсуждения, теги и новости
— голосование в комментариях
— ссылки «Цитировать» и «Ответить» в комментариях
— панель с HTML-кодами под формой ввода комментария
Вы видите, как вы ухудшили свой опыт использования моего блога этим расширением? А я, между тем, очень старался, чтобы эти фичи прикрутить и сделать доступными — не для себя, для посетителей, причем по их же просьбам!
Да, можно расширение настроить, чтобы все это работало. Но разве у вас мой блог настроен? Ведь если каждый сайт настраивать, то потери во времени уже будут несопоставимы с выигрышем от времени загрузки страниц.
Нет уж, лучше я подожду страницу на секунду дольше, но буду использовать полноценный Веб 2.0, чем его огрызки…
Eugene_R
Vadim Sterkin,
Я поэтому и написал, что дополнение установлено не для ускорения.
Читая Вашу статью, я автоматически подсчитал в уме, что у меня не должно происходить ни ускорения, ни замедления — AdBlock замедляет загрузку, NotScripts — ускоряет. Решил проверить Вашим способом — о результатах писал выше.
Я ценю Ваш труд по добавлению этих полезных вещей (корявое слово, не могу выразить по-русски useful stuff). Вот только я ими не пользуюсь. Для меня в интернете на первом месте информация, а не общение. БОльшую часть времени, которую я провожу онлайн, я трачу на чтение форумов, посвященных компьютерному железу и ПО.
Да и какие бы не были у меня причины устанавливать это дополнение, я полностью осознаю, что я буду терять время, включая нужные скрипты. Странно, что Вы решили, что я не настроил Ваш блог — все, что мне необходимо включено во время первого посещения Вашего блога.
Vadim Sterkin
Eugene_R, спасибо за обстоятельный ответ! И спасибо, что настроили мой блог :) Но я ж его только для примера привел.
Так а для чего оно нужно тогда? Тем более, что вы признаете потери времени на настройку сайтов. Нет я понимаю, что мы проводим бОльшую часть времени на очень малом кол-ве сайтов — их можно и настроить :)
Все-таки блокировка скриптов экономит больше времени, чем загрузка пары расширений. Тем более, что я тестировал именно Chrome.
Интересно было бы увидеть цифры реальных пользователей Firefox — насколько они совпадают с заявлениями разработчиков.
Morpheus
Не-а, проверил, не должно. Танцы вокруг браузера результата не принесли.
Перенастроил чуть сетку, бум потестить. Пока зашевелилось.
Amadis
Спасибо Вадим за проделанную работу! С моим, не очень мощным компьютером, актуален вопрос экономии оперативной памяти), У меня стоит всего два расширения на opera : translator и preview popup, было интересно понаблюдать как они влияют на оперативку. Вот результаты
без расширения 30 996 к
с расширением 35156 к
без расш. (1 открытая страница) 96788
с расш. (1 открытая страница) 104440
Страницу выбрал потяжелее
Кстати отключение фонового изображения в opera сэкономило мне еще немного памяти
без расш. без страницы и без фон. изображения 23372 к.
Влияние на скорость загрузки включение или отключение расширений я не заметил.
P.S. на сколько я понял у Eugene_R этот NotScripts являеться аналогом встроенного оперовского «блокировать содержимое»?
Вадим а какие у вас стоят расширения?
Vadim Sterkin
Amadis, спасибо за отчет! Интересное наблюдение по поводу фонового изображения :)
У меня в Opera только одно расширение — AutoComplete. Но у меня также подключено несколько скриптов User.js через стандартный интерфейс браузера (см. записи по тегу Opera). По сути ведь расширения Opera — это и есть упакованный в установщик скрипт User.js, чтобы его удобнее было добавлять.
Morpheus, расскажешь потом о рез-татах. Возможно, Chrome при запуске лезет куда-то первым делом.
Сергей
Вадим, спасибо за такой интересный и содержательный рассказ!
Решил сам проверить на своем браузере. Я пользуюсь Mozilla Firefox и чуть меньше Google Crome. Мой компьютер довольно таки слабый, поэтому так долго загружается. Итак, с дополнениями (53 штуки!) 29 секунд (firefox.exe — 204704кб, plugin-container — 17584кб), без дополнений 7 секунд (firefox.exe — 86464кб, plugin-container — 19772кб)
Единственное, что мне остается непонятным, почему plugin-container потреблял больше без дополнений чем с ними.
Vadim Sterkin
Сергей, спасибо за тестирование Firefox! Особенно, с 53 дополнениями :) Разница в 120 Мб использования RAM не выглядит значительной при таком количестве. Но предположу, что спустя час после запуска браузера, дополнения потребляют больше.
Думаю, это в пределах погрешности. Очевидно, что используемая память идет в зачет исполняемого процесса браузера, а на контейнер могут быть возложены другие функции — например, модель безопасности.
Олег
Данные моего браузера:
Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.0.6) Gecko/2009011913 MRA 5.7 (build 03757) Firefox/3.0.6 sputnik 2.4.0.60
Vadim Sterkin
Олег, и кому это интересно? Если это была попытка ответить на вопросы, поставленные в конце статьи, она не удалась :)
Ruprix
спасибо за вкусную плюшку, Process Explorer то есть
а то я любила раньше Process Killer, но он проще и в семерке уже не отображает нагруженность оси, видать что-то его блокирует
Vadim Sterkin
Ruprix, убить процесс можно и диспетчером задач, а вот получить о нем подробную информацию… Process Explorer — это уже классика, я и не пробовал ничего другого, честно говоря :)
Victor
А меня вот давно интересует вопрос, влияет ли на загрузку браузера ОТКЛЮЧЕННЫЕ дополнения?
Vadim Sterkin
Виктор, в статье описана методика, с помощью которой вы легко найдете ответ на свой вопрос и расскажете нам об этом :) Но я думаю, что запуск браузера без надстроек эквивалентен запуску браузера с отключенными надстройками ;)
Victor
Вадим, вот вы говорите, что у FireFox в меню «Инструменты» нет такого очень удобного диспетчера задач, как у Гугл Хрома. Но ведь Штатный about:memory на самом деле куда информативнее, постранично-повкладочно, например, показывает.
Vadim Sterkin
Виктор, я не пользуюсь Firefox -> могу не знать многих тонкостей об этом браузере :) Я добавил ваше примечание в статью.
rodocop
Я снова со своим :-)
K-Meleon.
Я уже говорил, что КМ весьма расширяемый браузер. Причем уникально расширяемый.
Фактически он поддерживает сразу несколько типов «добавок»:
1) плагины, т.е. инструменты поддержки rich-контента
2) k-плагины — специально для KM написанные дополнительные библиотеки (dll)
3) собственные макрорасширения на оригинальном языке
4) адаптированные расширения ФФ
5) сторонние приложения, интегрированные в браузер.
С первыми все ясно. Стандартные Нетскейп-плагины.
Вторые — по сути являются неотъемлемой частью браузера, хотя есть и опциональные.
3 последних категории и есть то, что традиционно рассматривается как расширения. Все они интегрируются в КМ посредством макросов (п.3).
75% из них только из одних макросов и состоят. А макрос — это маленький текстовый файл.
Еще 25% макросов интегрируют в браузер jar’ы с функционалом расширений ФФ или сторонние приложения (как вариант — js с каких-то сайтов — таким образом расширение выполняет роль букмарклета).
К чему я все это — да к тому, что навешивание на КМ нескольких десятков расширений (я вешал до 60 штук) практически не влияет ни на скорость загрузки, ни на съедаемую память).
Тестов с измерениями я не проводил, правда, но поверьте, лаги других браузеров, особенно Хрома и ФФ — видны невооруженным глазом. И в первую очередь не остаются незамеченными, ибо задержки действуют на нервы.
С КМ нервы в порядке — а значит и задержки, если и есть, то не выходят за рамки пресловутой погрешности.
Ну а функционал расширений КМ почти бесконечно широк, благодаря высокой совместимости с javascript. Скажем так — существующий банк расширений перекрывает мои, очень немаленькие потребности в дополнительном удобстве и функционале в несколько раз.
А плата за это, повторюсь — минимальна. И почти каждый компьютерно грамотный продвинутый юзер может создать свое расширение, как я уже писал. А этим точно не каждый браузер похвастается.
Spellbinder
В Opera в версиях 30-35 с профилем по умолчанию с отключенным режимом Turbo, отсутствует звук только на уведомления сайта сопровождающиеся звуковым сигналом на Windows Xp. В то же время все исправно работает на
Windows 7. Mozilla Firefox всё работает как на Хр так и на 7. В чем может быть причина этого?
Adobe Flash Player ppapi стоит для Opera, Adobe Flash Player без ppapi для Mozilla Firefox.
В Ie8 отображать звук в мультимедиа на веб страницах включен.
Sorry за материал не много не по теме.
Vadim Sterkin
Вам сюда http://forum.oszone.net/