В "КВ" №38 в статье "Создание web-browser benchmark своими руками" я рассказал о том, как можно самому за небольшое время подготовить несколько тестов на JavaScript, чтобы проверить производительность браузеров. Тогда результаты совпали с данными Peacekeeper, что свидетельствует об их достоверности. Начиная с этого номера, я бы хотел провести некоторого рода анализ полученных результатов, поскольку целью предыдущей статьи было, скорее, программирование, чем обсуждение итогов. Сегодня мы сравним различные версии обозревателя Internet Explorer и браузеры, использующие движок IE Trident.
Trident layout engine
Trident (MSHTML) - это движок рендеринга, использующийся в браузерах линейки Internet Explorer, начиная с версии 4 (www.narthex-daemon.net/popular-layout-engines.daemon186). Trident является компонентом COM и может быть интегрирован в любое настольное приложение, написанное на C++, .NET, Delphi или любом другом языке, поддерживающем работу с объектами COM. Примерами интеграции подобного рода выступают плагин IE Tab для Firefox, браузеры Lunascape, Avant и Maxthon. Среди интересных фактов стоит упомянуть то, что Trident 4.0 из Internet Explorer 8 является первой версией движка, прошедшей тест Acid 2, а также то, что именно IE 8 впервые начал указывать название Trident в заголовке User-Agent запроса - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0...). Физически машина рендеринга IE находится в библиотеке %SYSTEM_ROOT%\System32\mshtml.dll. Ее можно свободно использовать для своих нужд.
Internet Explorer 6
Браузер Internet Explorer 6 был выпущен сразу после выхода Windows XP в 2001 году и на протяжении 2002-2003 годов удерживал 90% рынка всех браузеров. Однако популярность не была обусловлена высоким качеством продукта - приложение имело огромное число ошибок и уязвимостей, многие из которых до сих пор не исправлены. Microsoft призывает всех отказаться от использования IE6 в пользу IE8, однако даже сейчас шестая версия является наиболее популярной. Если судить по статистике посещения моего сайта, то Internet Explorer 6 уступает лишь Firefox 3.
Internet Explorer 7
Данная версия была выпущена в октябре 2006 года и содержала наибольшее количество обновлений за 5 лет во всей истории развития браузера. Среди улучшений стоит выделить усовершенствованный движок, повышенную совместимость со стандартами W3C, вкладки, фишинг-фильтр и RSS-клиент. Кроме того, в данной версии браузера были исправлены такие распространенные ошибки IE6, как Operation Aborted, отображение элементов Select и ActiveX поверх всей страницы независимо от их стилей, отсутствие поддержки прозрачности у картинок PNG и фиксированного позиционирования.
Internet Explorer 8
Разработка новейшей версии браузера от компании Microsoft началась в марте 2006 года, а финальная версия увидела свет 19 марта 2009 года. Браузер доступен для Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008 в 32- или 64-битной версии. В IE8 была усовершенствована работа с RSS, каскадными таблицами стилей, Ajax; добавлен режим приватного веб-серфинга InPrivate, набор инструментов для веб-дизайнеров и программистов, включающий профилировщик JavaScript, режим совместимости с предыдущей версией. Среди новшеств: контекстный поиск Accelerators, "живые" скриншоты страниц WebSlices, запуск каждой новой вкладки в отдельном процессе и архитектура Loosely Coupled Internet Explorer, призванная обеспечить повышение стабильности.
Пробные заезды
Сегодня в тесте принимают участие следующие браузеры: Internet Explorer 6/7/8, Maxthon 2.5 и Firefox с включенным плагином IE Tab. Тестирование проводится только с использованием созданной в предыдущий раз веб-страницы (www.narthex-daemon.net/create-browser-test2.daemon164), все расчеты и результаты представлены в таблице. Тестовый стенд: Core2 Duo T7250 2GHz, 2 Gb DDR2 RAM, GeForce 8600M GT sli. Для оценки IE 6 и 7 были использованы stand alone обозреватели Xenocode, а также приложение IE Tester, поскольку на машине установлен IE 8. В зачет шли лучшие значения за три испытания. В случае IE 6 и 7 были взяты лучшие показатели IE Tester и браузеров от Xenocode. В каждый момент времени был запущен только один обозреватель (за исключением IE Tester, который открывает каждую версию IE в отдельной вкладке).
Матрица числовых оценок | |||||
Метрика\Браузер | Internet Explorer 6 | Internet Explorer 7 | Internet Explorer 8 | Maxthon 2.5 | Firefox IE Tab |
Многократное обращение к элементам DOM | 1533 | 1600 | 416 | 443 | 455 |
Многократное добавление элементов в DOM | 252 | 240 | 125 | 134 | 137 |
Регулярные выражения | 84 | 80 | 81 | 76 | 78 |
Конкатенация строк | 9 | 9 | 9 | 9 | 9 |
Матрица нормированных оценок | |||||
Метрика\Браузер | Internet Explorer 6 | Internet Explorer 7 | Internet Explorer 8 | Maxthon 2.5 | Firefox IE Tab |
Многократное обращение к элементам DOM | 0.3447 | 0.3598 | 0.0935 | 0.0996 | 0.1023 |
Многократное добавление элементов в DOM | 0.2838 | 0.2703 | 0.1408 | 0.1509 | 0.1543 |
Регулярные выражения | 0.2105 | 0.2005 | 0.2030 | 0.1905 | 0.1955 |
Конкатенация строк | 0.2000 | 0.2000 | 0.2000 | 0.2000 | 0.2000 |
Суммарная оценка | 1.0390 | 1.0306 | 0.6373 | 0.6410 | 0.6521 |
Разбор полётов
Первое, что бросается в глаза, - скорость работы интерпретатора JavaScript практически не менялась на протяжении 8 лет. Производительность DOM увеличивается к версии IE 8 (Trident 4.0) и опережает своего предшественника весьма значительно (тут вспоминаются удивленные возгласы коллег, установивших себе IE8 после его выхода). Судя по всему, после Internet Explorer 7 весь движок подвергся существенной модернизации, а не только подсистема конечного рендеринга, как можно было бы заключить, видя прогресс в области поддержки стандартов W3C.
Версия движка в IE7, по сравнению с IE6, не предлагает значительных улучшений в плане производительности, даже немного снижает работу подсистемы DOM, однако эта версия была нацелена, в первую очередь, на исправление существующих ошибок, а не на повышение быстродействия, что подтверждается результатами тестов.
Что касается Maxthon и IE Tab, то по результатам видно, что они используют зарегистрированную в системе версию Trident, поскольку оценки по каждым испытаниям весьма близки. Это и плюс, поскольку разработчик может сделать свой дистрибутив легче на 5 Mb, и минус, поскольку качество отображения страниц в Maxthon и IE Tab напрямую зависит от того, какая версия Trident доступна в системе. Кроме того, использование IE Tab в принципе невозможно под операционными системами, отличными от Windows. При проведении испытаний для IE Tab и Maxthon я видел странный заголовок User-Agent, присылаемый этими программами в теле HTTP-запроса - MSIE 7.0; Windows NT 6.0; Trident/4.0. Поначалу меня это заставило усомниться в том, что IE Tab и Maxthon используют именно ту версию Trident, которая лежит в %SYSTEM_ROOT%\System32\mshtml.dll. Однако, вспомнив о том, что Trident 4 поддерживает режим совместимости с предыдущей версией движка (Compatibility View), я убедился в несостоятельности моих сомнений. В действительности упоминание Trident 4.0 в заголовке User-Agent (см. начало данной статьи) связано именно с наличием Compatibility View, чтобы каждый клиент мог всегда установить, что запрос отправляется именно новой версией движка, хоть он и представляется как Internet Explorer 7.
Заключение
Вывод напрашивается сам собой - лучше последовать совету Microsoft и перейти со старых версий Internet Explorer на новую - более быструю, удобную, надежную, чем предыдущие. Давайте содействовать развитию интернет-технологий, не стоит сдерживать прогресс из-за наличия капризных старичков вроде IE6, значительно затрудняющих разработку новых дизайнерских и функциональных решений. Я советую всем отказаться от использования шестой версии и перейти на версию 7 или лучше 8, если существует такая возможность.
Narthex,
www.narthex-daemon.net
Горячие темы