Основываясь на комментариях к исходному вопросу, я добавляю здесь ответ, который объясняет, почему прямое сравнение .innerHTML
до DOM manipulation
очень трудно кратко оценить.
По существу, естьнесколько серьезных проблем:
- Ошибки браузера и отсутствующие реализации
- Различия в содержимом (что работает лучше в случае A, может не быть лучше в случае B)
- Проблемы синхронизации(JavaScript не контролирует и не понимает, когда браузер решает выполнить GC (сборку мусора) или запускать другие потоки / действия
1.) В частности IE (6,7 и в меньшей степени8) имеет множество ошибок браузера, которые вызывают полное тестирование всех сценариев кода.(IE имеет ошибки и не может установить .innerHTML
на select
, table
, thead
, tbody
, tfoot
, tr
, пустым элементам с переполнением, установленным на auto, где содержимоеболее 1 "строки" по высоте, pre
элементов, в которых содержимое содержит важные пробелы и т. д.)
2.) Количество, тип (порядок) и глубина добавленных дочерних узлов будут влиять на производительностьоперация.Например, добавление таблицы путем добавления тега таблицы, затем tbody, затем tr, затем td, затем содержимого по сравнению с созданием этого по отдельности и выгрузкой на страницу, изменит производительность.
3.)Браузер контролирует, когда он выполняет GC (который на мгновение замедляет работу браузера, пока он выполняет очистку).Аналогично расширению браузера или вызову AJAX на другой вкладке, веб-фрагмент в IE8 опрашивает сервер на наличие обновлений, это повлияет на работу вашей текущей страницы.
Таким образом, если вы хотите полностью протестировать это, вам необходимопротестировать несколько различных комбинаций подструктуры HTML, и я очень надеюсь, что результаты будут разными.
У меня дома есть несколько старых тестов для такого рода вещей, которые я выкопаю и добавлю к этому ответу дляболее сложное тестирование.