iOS和其他平板电脑上的SVG性能状态?

时间:2012-07-19 23:59:07

标签: ios performance svg d3.js

决定使用D3.js和SVG进行可视化后,现在看起来SVG可以在桌面浏览器或本机shell中正常工作,但我真的对iOS移动平台的性能速度下降感到困惑。

根据以下测试,现在看起来SVG性能越来越好,并没有远远落后于Canvas速度,这是个好消息:

坏消息是,如果你在新iPad上的Safari浏览器中运行这些测试,SVG和Canvas的速度都会下降很多。可怕的消息是,如果你在iPad的新Chrome浏览器中运行这些测试,速度会下降得多。

我读过谷歌被迫使用未被Apple的Nitro JavaScript引擎加速的UIWebview。我还读到Apple正在推动HTML5,但演示只在他们自己的Safari浏览器中运行。

这里有什么问题?我的应用程序的最佳目标是移动,即使有很好的API,如D3.js和HTML5标准,如SVG性能受到挤压,这是因为Apple想要为自己的议程保持进步吗?无论如何,这对我来说是怎样的。我不确定Android上的这些测试是什么样的?很高兴知道。如果测试结果是肯定的话,我可能会摆脱iPad并且已经使用Android了。

最重要的是,由于这些速度问题,我不确定使用HTML5技术制作应用程序是否可行?我也没兴趣学习Objective-C,因为未来将转向HTML5。我相信网络及其标准,但看起来它们被封锁了。我很想知道解决这个难题的方法。

3 个答案:

答案 0 :(得分:7)

iOS7在使用JavaScript动画SVG方面表现不佳 - 虽然静态SVG绘图速度更快。我们写了一个blog on the performance of the iOS7 release,你可以看到更详细的信息。

更新:iOS7.1修复了javascript动画性能问题。它回到50 fps

答案 1 :(得分:3)

我在我的第一代iPad上发现d3.js / SVG比在桌面浏览器上运行相同的应用程序(FF / Chrome / IE 9 +)慢得多。

我写了我在这里尝试的各种改进:http://hivemindmap.blogspot.co.uk/2013/01/html5-and-interactive-graphs.html

答案 2 :(得分:0)

移动设备上的性能通常低于桌面套件。一般来说,它们的硬件功能较弱(它的功耗低于低功耗而不是直接速度),并且它们可以减少RAM和存储空间。我桌面上的Chrome有多个处理器,8GB RAM和一个非常强大的GPU可供使用。在我的iPad上,它没有任何接近这种功率水平。

第三方iOS应用程序(包括Chrome)无法使用Nitro,这是多么正确。我相信这是因为Nitro能够将内存标记为可执行文件,并且(出于安全原因)不信任第三方应用程序。大多数HTML5的东西都适用于iOS上的任何浏览器(可能除了Opera Mini)。 Canvas和SVG动画将比Safari慢,因为它全部由Javascript驱动 - 再次缺乏对Nitro的访问权限阻止了它们。这已不再适用:从iOS 8开始,第三方应用程序现在可以使用{ 的{1}}框架可以访问与Safari相同的高速JavaScript引擎。

本机代码通常会更快,因为它更接近硬件,直接访问显示API,而不是通过Web堆栈。

解决方案通常是简化一切。与原生游戏开发者必须大规模降低其3D游戏的复杂性以使其在iOS设备上工作的方式相同,因此Web开发人员必须降低其SVG和画布应用程序的复杂性。一般而言,在页面上飞行的东西越少意味着性能越高。

你可以做很多技巧,并围绕这个主题进行大量阅读。阅读http://www.html5rocks.com/en/tutorials/canvas/performance/http://www.html5gamedevs.com/tag/performance/以及谷歌的其余部分。就个人而言,我会在完全放弃这个想法之前建立一个概念证明并对其进行测试:)