Я использую mbostock awesome d3 для простого html-рендеринга, простейшего как я мог подумать, выбрав пустой div и заполнив его HTML.
d3.select($('#thediv')[0])
.selectAll('p')
.data(l).enter()
.append('p')
.html(function(d){return 'd3 ' + d;});
В Win7 Chrome я заметил, что для больших наборов данных это выглядит как очень медленно. (3,5 с для 20000 элементов)
В этом примере показан очень простой (хотя и длинный) список: http://jsfiddle.net/truher/NQaVM/
Я попробовал два решения: отображение видимости:
$('#thediv').toggle()
и запись в отдельный элемент:
var p = $('<div>')
d3.select(p[0])...
$('#theparent').append(p)
Результаты были следующими:
Firefox: равномерно быстро (600-700 мс)
Chrome: либо переключение или отключение выполняется быстро (800 мс), в противном случае очень медленно (3,5 с)
Отключение Internet Explorer: быстрее, но все еще медленно (1,8 с), в противном случае очень медленно (3,2 с)
Мой вопрос таков: Есть ли лучшее решение?