Веб-браузер DOM существует с конца 90-х годов, но он остается одним из самых больших ограничений производительности / скорости.
У нас есть некоторые из самых блестящих умов в мире от Google, Mozilla, Microsoft, Opera, W3C и различных других организаций, работающих над веб-технологиями для всех нас, так что, очевидно, это не просто "О,мы не оптимизировали его ».
Мой вопрос: Если бы я работал над той частью веб-браузера, которая конкретно занимается этим вопросом, с чего бы мне было так трудновремя заставляет его работать быстрее?
Мой вопрос не спрашивает что делает это медленно, он спрашивает почему разве это не стало быстрее?
Это, похоже, противоречит тому, что происходит в других местах, например, движкам JS с производительностью, близкой к производительности кода C ++.
Примербыстрого скрипта:
for (var i=0;i<=10000;i++){
someString = "foo";
}
Пример медленного из-за DOM:
for (var i=0;i<=10000;i++){
element.innerHTML = "foo";
}
Некоторые детали по запросу:
После разметки стенда выглядиткак это не неразрешимая медленная проблема, но часто используется неправильный инструмент, и инструмент намed зависит от того, что вы делаете, кросс-браузер.
Похоже, эффективность DOM сильно различается в разных браузерах, но мое первоначальное предположение, что dom медленный и неразрешимый, кажется неправильным.
Я провел тесты с Chrome, FF4 и IE 5-9, вы можете увидеть количество операций в секунду на этом графике:

Chrome работает молниеносно, когда вы используете DOMAPI, но значительно медленнее с использованием оператора .innerHTML (в 1000 раз медленнее), однако FF хуже, чем Chrome, в некоторых областях (например, тест на добавление намного медленнее, чем Chrome), но тест InnerHTML работает намногобыстрее, чем chrome.
IE, похоже, на самом деле ухудшается при использовании DOM append и лучше при работе с innerHTML по мере прохождения версий с 5.5 (т. е. 73опс / с в IE8 теперь при 51 ops / sec в IE9).
У меня есть тестовая страница здесь:
http://jsperf.com/browser-dom-speed-tests2
Интересно то, что кажется, что разные браузеры сталкиваются с разными проблемамиs при генерации DOM.Почему здесь такое несоответствие?