为了在传单地图上有很多svg路径,svg文本和svg textpath元素的合理性能,我想知道D3如何处理当前不在屏幕上的元素。
因此,例如当我放大到像华盛顿州这样的区域时,99.9%的世界没有显示 - 是D3默认行为来绘制所有其他元素无论如何?
我的项目基于Mike Bostocks d3 + leaflet example。没有使用视口/视图属性 - 是否在其他地方完成?感谢您的投入。
答案 0 :(得分:1)
我认为这个问题有两个部分
绘制屏幕外的SVG DOM元素
正如@LarsKotthoff所提到的那样,可能不值得为此担心,因为浏览器可能比你优化它们做得更好。
处理将导致SVG DOM元素在屏幕上绘制的数据。
我认为这是你可以有所作为的地方。如果你有昂贵的数据操作/处理,那么处理不会显示的东西似乎是浪费周期。我能想到改善这种情况的唯一方法就是尽早确定某些事情是否会出现在屏幕之外。如果它将在屏幕外,则在进行任何进一步的数据处理时忽略它。
但是,在这些情况下,您需要一种方法来检测它何时进入视图或视图之外以及是否适当处理。这可能会导致一些额外的开销,使其不值得做。
您的个人情况将决定这对您有多有效,但如果您有一个具体的例子,那么此处的用户可以协助重新分解以帮助提高绩效。
您还可以执行其他操作,例如重新考虑可视化,以便首先需要更少的元素。根据我的经验,在屏幕上有如此多的信息以至于可视化的价值已经减少之前,性能并不是真正的问题。删除无关信息可以提高性能并提高对可视化的理解。当然,这是我的特殊经历,肯定有些时候不适用。