Как уже упоминалось, чрезмерные манипуляции с DOM снижают производительность. Создание строки HTML с использованием вышеупомянутого Array.join ('') и установка innerHTML контейнера с помощью метода jQuery.html () на несколько порядков быстрее. Будьте осторожны с использованием jQuery.append (html) - это эквивалентно сначала созданию всех узлов DOM, а затем их вставке!
Дело в том, что даже если вы оптимизируете создание дерева узлов страницы, вы все равно довольно быстро достигнете потолка с очень большими наборами данных. Браузеры просто не могут обрабатывать такие большие и сложные DOM-деревья. Первое, что вы увидите замедление, это взаимодействие (анимация, обработчики и т. Д.), Даже если вы используете делегирование событий. Если ваш набор данных действительно большой, вам потребуется выполнить какую-то виртуализацию, чтобы показать только то, что видно в области просмотра (это то, что делает SlickGrid - http://github.com/mleibman/slickgrid).
В качестве альтернативы, вы можете улучшить отзывчивость и «время до интерактивности» вашей страницы, разбивая ваши добавления DOM и выполняя их по таймауту один за другим с некоторой паузой между ними, чтобы браузер мог обрабатывать пользовательские события.
Другие методы включают визуализацию данных на первой странице, выделение места для большего, но только рендеринг, когда пользователь начинает прокручивать к нему. Это то, что делает Facebook.