D3:什么是最昂贵的运营?

时间:2013-06-20 00:14:02

标签: d3.js

我刚刚重写了我的代码,感觉速度慢很多。以前它几乎是即时的,现在我的动画需要4秒才能对鼠标悬停做出反应。

我尝试删除过渡但没有不透明度变化,但它仍然非常慢。

虽然它更具可读性。 - - ;

我唯一做的就是将大型函数拆分为更小的逻辑函数,并重新排序分组并使用新的选择。什么可能导致如此巨大的速度差异?我的数据集也不大...... 16kb。

编辑:我也拆分了我的巨型链条。

edit2:我对我的代码稍微捏了一下,似乎切换到nodeGroup.append(“path”)导致它比svg.append(“path”)慢得多。关于这一点的不雅之处在于,当使用svg时我必须将绘制的路径转换为中间,而整个组已经被转换。任何人都可以提出一些见解和group.append vs svg.append吗?

edit3:另外我使用opacity:0来重绘之前隐藏我的所有路径线,这导致它变得越来越慢,因为这些线从未被删除过。切换到删除();

1 个答案:

答案 0 :(得分:1)

没有数据,很难使用或建议解决方案。您不需要共享私有数据,但它有助于生成具有相同结构的一些虚假数据。如果我们看不到您尝试制作/互动的dom元素数量,那么您的性能影响力还不明确。

对于突出的显而易见的事情,您不是以数据驱动的方式来绘制细分。任何时候你看到一个for循环,它都暗示你没有使用d3的选择。

您应该将listEdges绑定到您的路径并从选择中绘制它们,可以将它们从那里转换到中心。另外,当你可以做nodeGroup.select时你不应该做d3.select,这样你在搜索圈子时就不需要遍历整个页面。