[英]SVG vs CANVAS (Snap.svg vs FabricJS)
我做了一个速度来比较Snap.svg(SVG)和FabricJS(CANVAS): http ://jsbin.com/tadec/7 function dummy()
。
在Chrome中SVG渲染时间为120毫秒,而CANVAS渲染时间为1100毫秒。 SVG比CANVAS快9倍。
Fabricjs.com页面在这个例子中说拉斐尔需要225毫秒而Fabric需要97毫秒(解析:80,渲染:17)。
我有一个印象(在阅读fabricjs.com和paperjs.org之后 ),FabricJS和更常见的Canvas比SVG更快。
我的速度测试声称SVG明显快于Canvas(至少Snap.svg似乎比FabricJS快得多)。
为什么FabricJS在我的测试中如此之慢? 相比之下,我是否犯了一些错误,因为我很惊讶在我的速度测试中SVG似乎比Canvas快。
编辑:我的问题是两部分:为什么FabricJS中的渲染速度要慢得多,为什么拖动速度呢?
在我看来,你的基准测试被打破了,因为除了测量绘图到画布之外,你正在测量一个包含路径的大字符串的解析,一遍又一遍。 将此代码分离出循环,您应该获得更可靠的结果。
为画布提供的测量是为绘图而提供的,而不是用于解析或其他预处理工作。 如果您像使用SVG一样使用画布,那么是的,它会更慢。 它不打算像SVG一样使用。 FabricJS提供了一种方法,但它不是最佳选择。 一种解决方案是解析路径一次,然后反复使用相同的路径而不是每次解析它。
此外,测量可能用于绘制画布,而不是与零件的交互。 正如你在评论中所说,渲染可能会有所改进,但为什么拖动一个形状会花费更长时间? 因为:
为什么人们说这种情况下画布比SVG更快? 因为如果你正确使用它。 这将是更多的工作,但它将更快地工作。
我希望我的回答对你有用:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.