iOS和其他平板电脑上的SVG性能状态?
在决定使用D3.js和SVG进行可视化后,现在看起来SVG在桌面浏览器或本地shell中可以正常工作,但是我真的为iOS移动平台的性能下降感到困惑。
根据下面的testing,现在看起来SVG的性能正在变得越来越好,而且还没有远远落后于Canvas的速度,这是一个好消息:
- http://bl.ocks.org/2647924
- http://bl.ocks.org/2647922
坏消息是,如果你在新的iPad上的Safari浏览器中运行这些testing,SVG和Canvas的速度都会下降。 可怕的消息是,如果您在iPad的新Chrome浏览器中运行这些testing,则速度会下降得更多。
我读过谷歌被迫使用未被苹果的Nitro JavaScript引擎加速的UIWebview。 我也读过苹果公司推HTML5,但演示只能在他们自己的Safari浏览器中运行。
这里有什么问题吗? 我的应用程序的最佳目标是移动设备,即使是像D3.js和HTML5标准的优秀API(例如SVG性能正在被压缩),这是否仅仅是因为苹果想要为自己的议程取得进展? 多数民众赞成在我看来,无论如何。 我不确定这些testing在Android上是什么样子的? 这将是很高兴知道。 如果testing会是积极的,也许我会摆脱iPad,只是与Android已经。
底线是,我不确定是否可以使我的应用程序使用HTML5技术由于这些速度问题? 我也没有兴趣学习Objective-C,因为未来将转向HTML5。 我相信networking及其标准,但看起来像被阻止。 我很想知道解决这个困境的方法。
虽然静态的SVG绘图速度非常快,但是iOS7在JavaScript中使用SVGanimation效果显着不佳。 我们写了一篇关于iOS7发布的博客 ,你可以看到更多的细节。
更新:iOS7.1修复了javascriptanimation性能问题。 这是回到50帧/秒
我发现我的第一代iPad上的d3.js / SVG比在桌面浏览器(FF / Chrome / IE 9+)上运行相同的应用程序慢得多。
我写了我尝试在这里的各种改进: http : //hivemindmap.blogspot.co.uk/2013/01/html5-and-interactive-graphs.html
移动设备上的性能通常比台式机套件要低。 一般来说,他们的硬件function不那么强大(它的功耗更低,而不是直接的速度),而且他们的内存和存储量要less得多。 我的桌面上的Chrome有多个处理器,8GB内存和一个非常强大的graphics处理器。 在我的iPad上,没有任何地方靠近这个水平的力量。
第三方iOS应用程序(包括Chrome)不能使用Nitro,这是正确的。 我相信这是因为Nitro能够将内存标记为可执行文件,并且(出于安全原因)第三方应用程序不可信任。 大多数HTML5的东西都可以在iOS上的任何浏览器上运行(Opera Mini可能是例外)。 canvas和SVGanimation将比Safari中慢,因为它全部是由Javascript驱动的 – 再次缺乏对Nitro的访问阻止它们。 这不再是事实:从iOS 8开始,第三方应用程序现在可以使用能够访问与Safari相同的高速JavaScript引擎的WKWebView
框架。
原生代码通常会更快,因为它更接近硬件,直接点击显示API,而不是通过networking堆栈。
解决scheme通常是为了简化一切。 就像本地游戏开发人员不得不大量减less3D游戏的复杂性以使其在iOS设备上工作一样,因此Web开发人员必须降低其SVG和canvas应用程序的复杂性。 一般来说,less量的东西在页面上飞行意味着更高的性能。
你可以做很多的技巧,并且围绕这个主题进行大量的阅读。 请阅读http://www.html5rocks.com/en/tutorials/canvas/performance/,http://www.html5gamedevs.com/tag/performance/以及Google的其他部分。; 就个人而言,我会build立一个概念的certificate,并在完全放弃这个想法之前对其进行testing:)