Статьи

Автор: Мациевский Николай aka sunnybear
Опубликована: 7 июля 2008

Семантика проигрывает!

Логическим продолжением уже проведенных исследований CSS/DOM-производительности браузеров (часть 1, часть 2, часть 3) стало рассмотрение зависимости времени создания документа от числа тегов (узлов дерева). Раздельно анализировались случаи, когда DOM-дерево было чисто линейным (все div лежали прямо внутри body, когда оно было разветвленным (ветки по 10 вложенных div наращивались внутри body) и когда вместо ветки из div использовалась некоторая семантическая конструкция.

Время создания документа от числа узлов

Методология

Методика измерения скорости создания документа не изменилась с предыдущих тестов, однако, было добавлено несколько уточнений:

  • Всего было 4 серии документов, которые загружались в скрытом iframe, и для которых замерялось время их создания: загрузочная, линейная, древовидная и семантическая. Загрузочная серия была точной копией линейной серии (в смысле загружаемых документов), но результаты ее прогона не сохранялись. Это связано с тем, что первые документы в серии измерений создавались немного дольше остальных (наверное, это связано с выделением памяти браузерами). Чтобы нивелировать этот эффект, вводились дополнительная серия перед всеми измерениями.
  • Также были замечены некоторые значительные флуктуации в первых прогонах всех серий экспериментов в отдельном браузере (время могло превосходить среднее значение на порядок, так называемые «3-дельта»-выбросы, больше всего напоминает кеширование браузером вычисленных деревьев). Чтобы избежать влияния на результаты этого явления, страница загружалась 3 раза перед проведение значащей серии измерений (10 загрузок для всех трех случаев).
  • В тестах дополнительно участвовали Firefox 3 и IE 8 (последний, правда, не повлиял не средневзвешенное значение, ибо доля его использования совершенна мизерна).

В качестве ветки семантического дерева использовалась следующая конструкция

<div><ul><li></li><li></li></ul>
<p><a href="#"><em></em></a><span></span></p><blockquote></blockquote>
<h1></h1></div>

Результаты

Скачать локальный архив или пройти тест онлайн можно здесь.

Результаты по браузерам

Firefox 2

Время создания документа от числа узлов (Firefox 2)

Время создания документа от числа узлов (Firefox 2)

Firefox 3

Время создания документа от числа узлов (Firefox 3)

Время создания документа от числа узлов (Firefox 3)

Internet Explorer 6

Время создания документа от числа узлов (Internet Explorer 6)

Время создания документа от числа узлов (Internet Explorer 6)

Internet Explorer 7

Время создания документа от числа узлов (Internet Explorer 7)

Время создания документа от числа узлов (Internet Explorer 7)

Internet Explorer 8 beta

Время создания документа от числа узлов (Internet Explorer 8)

Время создания документа от числа узлов (Internet Explorer 8 beta)

Opera 9.5

Время создания документа от числа узлов (Opera 9.5)

Время создания документа от числа узлов (Opera 9.5)

Safari 3.1

Время создания документа от числа узлов (Safari 3)

Время создания документа от числа узлов (Safari 3)

Средневзвешенное значение

Время создания документа от числа узлов

Средневзвешенное значение времени создания документа от числа узлов в DOM-дереве

Выводы

Да, очевидно, что размер DOM-дерева влияет на скорость загрузки страницы. Одной из целью данного исследования было показать, как именно влияет (в конкретных числах). Средний размер страницы — 700–1000 элементов. Они загрузятся в дерево сравнительно быстро (3–7мс). Дальше время загрузки растет линейно, но все равно вы можете нарваться на нежелательные «тормоза», добавив несколько тысяч «скрытых» элементов или избыточной семантики.

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

Всем апологетам разумности хочу заявить: данное исследование несет чисто теоретический характер. Я не призываю высчитывать миллисекунды при создании страниц. Однако, иногда знать об этом нужно.

В дальнейшем планируется провести ряд исследований по отрисовке (reflow) различных комбинаций элементов и стилевых правил.

P.S. Как ни странно, но Opera проигрывает, а Safari опять опережает.

Читать дальше

Все комментарии (habrahabr.ru)