【发布时间】:2012-12-22 22:28:40
【问题描述】:
我使用mbostock's awesome d3 进行简单的 html 渲染,这是我能想到的最简单的方法,选择一个空的 div 并用 HTML 填充它。
d3.select($('#thediv')[0])
.selectAll('p')
.data(l).enter()
.append('p')
.html(function(d){return 'd3 ' + d;});
在 Win7 Chrome 中,我注意到,对于大型数据集,这似乎非常慢。(20000 个项目需要 3.5 秒)
这个例子呈现了一个非常简单(虽然很长)的列表: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 秒)
我的问题是:有更好的解决方案吗?
【问题讨论】:
-
感谢基准测试!与此主题相关的旧线程:groups.google.com/d/msg/d3-js/3ZBw94L0UD4/hwEpeDIec7kJ
-
分离是有道理的。对于来自 windows 窗体背景的人,这与暂停布局相同。
-
为什么除了 d3 选择器之外还使用 jquery 选择器?
-
好吧,在第一个例子中,我没有理由记得。在第二个示例中,我可以使用分离的元素。
标签: javascript dom d3.js