[Temp] Измерение производительности дополнений в IE
В предыдущих статьях, мы уже писали о способах, как сделать IE9 гораздо быстрее, например, о новом движке сценариев, который использует несколько ядер, а также о новой подсистеме рендеринга, использующей выделенную графическую карточку на современных персональных компьютерах. Еще одним аспектом производительности браузера является внешний код, который запускается IE от имени пользователей, или как дополнения.
Дополнения предоставляют уникальные особенности, которые могут улучшить опыт использования браузеров. Однако, они также снижают производительность браузера в такие важные моменты, как переход на другую веб-страницу и открытие новых вкладок. Таким образом, они влияют на основные пользовательские сценарии - запуск и навигация.
Производительность дополнений является неотъемлемой частью общего пользовательского опыта использования браузеров. Пользователи IE ожидают, что браузер должен быть быстрым, с или без наличия дополнений. Мы работаем в направлении нескольких общих целей с разработчикам дополнений: предоставление полезных функций с наименьшими затратами и надежностью их влияния (подробнее о надежности в следующих статьях).
Эта статья является первой из серии о том, как разработчики могут улучшить производительность дополнений. В этой статье, мы поделимся данными о воздействии дополнений на производительность, а также о том, как IE позволяет пользователям определить влияние дополнений на производительность, а также сохранять контроль над своими компьютерами. Мы опишем пользовательские сценарии, которые важны для измерения производительности, а также вы узнаете, как ее измерять.
Мы хотим, чтобы разработчикам дополнений имели всю информацию, которая необходима для создания быстрых и надежных дополнений, соответствующих потребностям пользователей. Мы хотим внести ясность о том, как измерять производительность. Мы просим разработчиков начать измерения производительности своих дополнений уже сегодня и постараться сделать их быстрее.
А что же такое дополнение?
Дополнения ссылаются
Другой часто встречающийся вид расширений - это плагины, в частности, элементы управления ActiveX, например Adobe Flash, Apple QuickTime и Microsoft Silverlight. В отличие от дополнений, которые запускаются в браузере на всех веб-страницах, плагины запускаются внутри веб-страниц и их влияние на производительность является локальным для веб-страниц, которые их используют. В этой статье речь пойдет именно о дополнениях. Разработчики плагинов имеют аналогичные возможности, чтобы сделать работу в Интернете быстрее и надежнее.
Ускорители, WebSlices и поисковые поставщики это третий тип дополнений. Они написаны в чистом формате XML, и направлены не для того, чтобы повлиять на страницу или производительность, а на надежность и безопасность.
[url=http://msdn.microsoft.com/en-us/library/aa753588(v=VS.85).aspx]Кнопки панели инструментов [/url]являются другим типом расширений, но они влияют на производительность IE, лишь когда пользователи нажимают их, но они влияют лишь на действия, которые запускают дополнение.
Влияние дополнений на производительность
Создание вкладки является одним из таких сценариев. IE инициализирует дополнение каждый раз, когда пользователь создает новую вкладку, чтобы убедиться, что дополнения могут взаимодействовать с веб-страницой правильно (например, Skype IE, которая определяет номера телефонов и делает их "кликабельными"). Когда пользователь запускает новое окно IE, одна из первых вещей, которую делает IE - создает новую вкладку, что, в свою очередь, инициализирует все пользовательские дополнения. Время, необходимое каждому дополнения для инициализации - это время загрузки, и, как правило, оно зависит от количества кода, которое дополнения выполняет во время рутинной инициализации.
По нашим данным телеметрии, у более 95% сегодняшних пользователей IE8 установлено по крайней мере одно дополнение, а в среднем у пользователей установлено аж 9 дополнений. Если загрузка каждого дополнения занимает более 20 миллисекунд, создание новой вкладки будет занимать заметно больше времени, чем обычно
Следующая диаграмма показывает среднее время загрузки 50 новейших версий наиболее часто используемых в IE дополнений. Пользователи, которые установили многие из этих дополнений, безусловно, заметили влияние на производительность при запуске IE или создании новой вкладки:
Это всего лишь 50 самых популярных дополнений. Многие дополнения, которые не перечислены выше, могут также влиять на производительность при создании вкладки. Мы рекомендуем пользователям устанавливать новые версии дополнений, поскольку они обычно имеют лучшую производительность.
Конечные пользователи и время загрузки дополнений
Что важно для отдельных пользователей - так это его или ее собственный опыт, а не данные экосистем. В IE8 мы
IE замеряет время загрузки для каждого включенного дополнения, каждый раз когда IE инициализирует его. В диалоге Управление надстройками , IE показывает среднее время загрузки для каждого дополнения на основании последних 10 инициализаций. Вы можете получить доступ к Управлению надстройками с помощью диалогового меню "Инструменты".
Имея эту информацию под рукой, пользователи могут выбирать дополнения, которые они хотят сохранять включенными, а также осуществлять контроль за их выполнением:
Разработчики и время загрузки дополнений
Мы собрали данные телеметрии во время загрузки всех дополнений, которые установили пользователи IE, чтобы оценить их характеристики. Следующая диаграмма показывает распределение времени загрузки всех дополнений, с которыми сталкиваются пользователи IE8:
Хотя большая часть дополнений загружается менее чем за 100 миллисекунд, 25% дополнений загружаются дольше 200 миллисекунд. Пользователи будут замечать заметное влияние на производительность в таких ситуациях, тем более, если некоторые из их дополнений загружаются еще дольше. Измерение производительности дополнений позволит Вам определить, насколько часто происходит загрузка за еще большее время.
Давайте рассмотрим некоторые конкретные примеры медленных дополнений из наших измерений, а также некоторые из причин, почему эти дополнения имеют такое большое влияния на производительность IE во время создания вкладки. Если вы разработчик дополнений, и хотели бы получить информацию о времени загрузки для дополнений, Вы можете написать нам по адресу ieaddonp@microsoft.com.
Пример дополнения № 1
Пользователи этого дополнения включен обычно видим заметные задержки в закладке создания. Большинство времени загрузки этого дополнения больше, чем за 200 миллисекунд. Амплитуды кривой выше, чем у предыдущей диаграмме. Дальнейшее расследование показало, что этого дополнения, как правило, работает больше кода, чем это минимально необходимо во время инициализации.
Пользователи этого дополнения обычно видят заметные задержки при создании закладки. В большинстве случаев время превышает 200 миллисекунд. Амплитуды кривой выше, чем на предыдущей диаграмме. Дальнейшее расследование показало, что это дополнение, как правило, выполняет больше кода, чем минимально необходимо во время инициализации.
Пример дополнения № 2
Это дополнения также воздействует на производительность при создании вкладки, как свидетельствует большинство тестов с временем загрузки более 200 миллисекунд. Мы обнаружили, что дополнение осуществляет операции, занимающие очень много времени (600-1500 миллисекунд). Мы рекомендуем убрать эти операции из обычной инициализации для ускорения создания вкладки.
Пример дополнения № 3
Хотя распределение времени загрузки для этого дополнения отличается от других, оно также воздействует на быстродействие при создании вкладки. Мы исследовали причины равномерного распределения загрузки за 100 миллисекунд, и обнаружили, что дополнение во время инициализации совершает сетевые вызовы. Поскольку сетевые вызовы занимают переменное время для завершения в зависимости от скорости соединения и языка, дополнение должно воздерживаться от совершения вызовов внутри сети в процессе инициализации. Мы рекомендуем делать эти вызовы фоновым процессом немного позже
Понятно, что некоторые пользователи IE8 испытывают значительные проблемы с производительностью при создании вкладок. Разработчики, которые повышают производительность своих дополнений, делают важный шаг в направлении улучшения производительности IE для конечных пользователей. В то же время мы знаем, что влияние дополнений выходит за рамки создания вкладки. Давайте посмотрим на другие варианты более подробно.
Рекомендации разработчикам дополнений
В этой статье, мы ориентируемся на понимание и определение сценариев с точки зрения времени включения дополнения. Существуют и другие показатели, которые также имеют важное значение, такие как процессорное время (количество времени, которое процессор затратил для завершения сценария) и физическая память (объем памяти, необходимый для запуска сценария). Мы рассмотрим эти два показатели в следующей статье.
Создание вкладки и навигация по веб-странице - вот два наиболее актуальных сценария для производительности IE. Дополнения, оказывают огромное влияние на производительность этих сценариев, потому что они могут блокировать IE от завершения пользовательской задачи. В зависимости от того, как разработчик написал дополнение, IE, возможно, придется ждать, пока дополнение закончит выполнение кода, и лишь тогда IE может завершить создание вкладки или перейти на новую веб-страницу.
Мы рекомендуем разработчикам начать измерения производительности в этих двух сценариях:
1. Создание, переключение и закрытие вкладки
Некоторые дополнения делают сетевые вызовы во время создания вкладки (что заставляет пользователей ждать), либо сохраняют их состояние (с записью и чтением реестра), когда пользователь закрывает вкладку или возобновление пользовательского интерфейса во время переключения вкладок.
Потому как дополнения могут прервать обработку запроса пользователя, когда он хочет создать вкладку, переключаться между вкладками, или же закрыть их, дополнения могут сделать эти операции очень долгими.
2. Навигация по страницам
Когда пользователь переходит на другую веб-страницу, Internet Explorer выполняет набор [url=http://msdn.microsoft.com/en-us/library/aa768283(VS.85).aspx]браузерных событий[/url]. Дополнения могут запустить программный код в ответ на эти события. Дополнения, которые обрабатывают одно или несколько из этих событий могут задержать пользователей с их навигацией по веб-странице. Поэтому замедляется открытие страниц, от которых пользователи ожидают мгновенности: например результаты поиска или котировки на фондовом рынке. Вот некоторые примеры:
- BeforeNavigate: дополнение безопасности проверяет URL, прежде чем приступить к навигации.
- DocumentComplete: После окончания загрузки веб-страницы, дополнение сканирует страницу чтобы добавить кнопку электронной почты для того, для запуска пользовательского почтового приложения
- NavigateError: Если ошибка появляется во время навигации по веб-странице, дополнение перенаправляет пользователя на специальную страницу ошибки.
Учитывая, насколько важны производительность для пользователей, прозрачность и контроль дополнений будут также важны для них.
Мы также рекомендуем разработчикам дополнений оценивать и оптимизировать производительность их дополнений с помощью общедоступных Windows Performance Tools.
Особенности измерения производительности дополнений с помощью Windows Performance Tools
1. Запустите командную строку с правами администратора и выполните следующую команду, чтобы начать отслеживать производительность и записывать результаты в файл (например, AddonTrace.etl):
xperf -start browselog -on Microsoft-IEFRAME -f AddonTrace.etl
2. Убедитесь, что ваши дополнения включены.
3. Запустите Internet Explorer и откройте вашу домашнюю страницу. Подождите несколько секунд после завершения навигации, а затем откройте несколько новых вкладках.
4. Закройте каждую вкладку по порядку, пока окно браузера не закроется.
5. Остановите отслеживание командой
xperf -stop browselog
6. Преобразуйте содержимое .etl-файла в текстовый файл, который можно разобрать и измерить
xperf -i AddonTrace.etl -o AddonTrace.txt
Далее, проверьте текст файла, чтобы найти следующие пары ETW-событий , которые соответствуют сценариям. Чтобы узнать время события, вычитайте из времени окончания события время его начала:
Кроме того, вы можете использовать Windows Performance Tools для измерения производительности дополнений в других сценариях, которые мы описали выше. Ниже представлены ETW-события, которые соответствуют другим сценариям:
Microsoft-IEFRAME/Browseui_Tabs_SwitchTabs/win:Stop;
Microsoft-IE/MSHTML_CDOC_ONPAINT/win:Stop;
Microsoft-IEFrame/Browseui_Tabs_WaitMessage/win:Start
Microsoft-IE/MSHTML_CMARKUP_ONLOADSTATUSDONE/win:Info
Microsoft-IE/MSHTML_CDOC_ONPAINT/win:Stop
Microsoft-IEFrame/Browseui_Tabs_WaitMessage/win:Start
Мы рекомендуем выполнить эти тесты в условиях фиксированной окружающей среды от
Производительность дополнений - наше общее дело
Производительность важна для конечных пользователей: они обращают на нее внимание и принимают меры для получения более высокой производительности.
Мы рекомендуем пользователям смотреть на эффективность воздействия различных дополнений, установленных на ПК, используя диалог в IE8 Управление надстройками. Эта информация помогает пользователям сохранять контроль при использовании желаемых дополнений.
Мы также рекомендуем разработчикам дополнений, чтобы их решения стали проще для конечных пользователей, написав более быстрые дополнения. Мы рекомендуем разработчикам начать измерения производительности с помощью Windows Performance Tools и следовать указаниям из этой статьи.
С помощью этих измерений и нашего руководства, вы сможете настроить свое дополнение для лучшей производительности. Если вы произведете оптимизацию или найдете наилучшую практику, мы призываем вас поделиться информацией с сообществом разработчиков,
Улучшение производительности дополнений имеет ключевое значение для быстрого и надежного браузинга, ведь мы все вместе хотим этого. Мы хотим, чтобы пользователи IE наслаждались функциональностью и высокую производительностью своего браузера.
Источник:
Перевод: houseboy
По теме
- Еще пару слов о защите пользователей IE9 от отслеживания
- [Temp] Бенчмарк HTML5 Blizzard: проверьте аппаратное ускорение вашего браузера
- [Temp] Работаем с закрепление сайтов
- Блог IE в 2010: на связи с вами
- С новым аппаратно-ускоренным годом!
- HTML5: экспериментальный и готовый к использованию
- Доступно декабрьское накопительное обновлениие безопасности для IE
- IE9 и конфиденциальность: введение в защиту от слежения
- Более быстрый и умный список Compatibility View List в IE9
- Субпиксельные шрифты в Internet Explorer 9