[英]SVG text element speed
我正在构建一个依赖于svg的Web应用程序。 作为参考,我使用raphael js库来处理所有这些。
在这个特殊情况下,我实现了一些模仿滚动条的东西,并在屏幕上移动一堆svg特征(~500个元素)。 这些功能的一部分是<text>
(~100)元素。 其他元素包括<rect>
, <image>
和<path>
元素。
所以,我注意到我的应用程序在我的笔记本电脑上并不是非常活泼,并且因为速度而在ipad上处理非常烦人。 但是,无论何时在滚动期间删除或忽略文本元素,它都会立即达到适当的速度。
我尝试做一些速度测试(非常粗略的测试,使用new Date().getTime()
)并发现移动除<text>
元素之外的所有元素需要大约10 ms,但是当<text>
<text>
时需要大约120 ms <text>
包括元素。
我相信这是因为每个字母都呈现为矢量形状,并且需要大量的处理能力来计算这种复杂结构究竟阻碍了什么。
是否可以只嵌入文本,因此文本呈现为光栅图形,而不是形状? 或者以其他任何方式提高渲染文本的性能?
我不需要背景透明度,我也不使用任何花哨的字体。
Paper.print()根据Raphael网站
创建表示给定文本在给定位置使用给定大小写入的给定文本的路径
基本上,您的文本将转换为路径。 显然这有性能问题。
可能最好坚持使用Paper.text()
UPDATE
所以不满足于只是提出建议我已经在http://www.jsperf.com上设置了一些测试。 它们可用于比较性能差异,以动画和转换不同类型的Raphael对象。
如果你在iPad上运行它们,它应该显示文本元素是否真的慢得多移动。 还有一点需要注意的是,至少在我运行的测试中,paper.print()和paper.text()在性能方面没有那么不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.