【发布时间】:2013-12-17 10:33:51
【问题描述】:
我正在使用 d3 创建一个数据可视化程序,在尝试设置大量元素的不透明度时遇到了性能问题。
我有一个事件被调用,当用户更改一些数据时,当这个事件被触发时,我计算每个边、节点和文本节点的不透明度并相应地更改它们。
例如——
function onEvent() {
edges.style("opacity", computeOpacity);
edges.style("stroke", computeStroke);
nodes.style("opacity", computeOpacity);
textNodes.style("opacity", computeOpacity);
}
当我有很多元素(边/节点/文本节点数大于 700)时,用户体验非常缓慢和缓慢。
我检查了 chrome 时间线 - 发现有一个重新计算样式,然后是一个绘制(绘制所有“svg”元素)和 2/3 复合层。
我可以做些什么来提高我的代码的性能? 每个边缘/节点/文本节点的不透明度和笔画计算非常重要,并且是非常便宜的操作 - 检查一些属性并进行简单的 Math.max 计算。
【问题讨论】:
标签: javascript performance google-chrome svg d3.js