为什么Javascript在iPhone上运行得这么慢?

时间:2010-07-22 10:10:42

标签: javascript html5 iphone cordova

我一直在研究为iPhone编写应用程序。我非常喜欢PhoneGap的外观,它基本上允许您在应用中包含网页。我的技能主要在HTML / Javascript中,因此这个工具可以让我充分利用我的技能,而无需花费很多时间学习如何为iPhone本地编写应用程序。

我一直在iPhone上为Javascript做一些测试,有些seemingly simple例子运行得很慢。真的很慢。不幸的是,这对我的任务来说是个大问题!

有什么工作吗?如果我想做任何有趣的事情,我将不得不写一个“适当的”应用程序?

解释为什么Apple似乎创建了如此糟糕的Javascript实现也很有趣(可能赚更多的钱?更少的网络应用程序=商店中的应用程序更多?)

参考

http://ajaxian.com/archives/ipad-javascript-shockingly-slow

5 个答案:

答案 0 :(得分:9)

Javascript并不是特别慢,但DOM非常慢 我认为它与桌面浏览器相同,但放大了 如果无法优化,我会首先检查所有DOM操作。

另一种选择是使用模板引擎。
主要的DOM操作是通过innerHTML注入完成的,即使在移动设备上也是如此。

我们已经构建了我们的Web应用程序的移动版本,我们使用PURE(我们创建的开源JS库)来从JSON数据中呈现HTML,并且它非常敏感。

我们采用了HTML5方式(不是本机方式),但我认为在包装PhoneGap时,生成HTML的方式可以完全相同。

答案 1 :(得分:3)

我认为Apple没有为Mobile Safari创建任何特殊的Javascript实现。可能与桌面Safari相同或非常相似。

这些设备体积小,功率限制严格,因此CPU速度很慢。

答案 2 :(得分:2)

由于安全功能,显然iOS不会对JavaScript进行JIT编译(与Android不同):http://daringfireball.net/linked/2010/07/22/android-ios-js-benchmarks

关于DOM访问问题的好处是:我不知道这些基准测试有多少测试DOM操作。

答案 3 :(得分:0)

@Rudiger:只是一个想法 - 自8年前以来台式计算机速度的许多改进部分是通过使用多个处理器来实现的。 Javascript是单线程的,因此可能无法利用这样的多个处理器。是的,我知道浏览器可以利用它,而将其他处理器放在其他处理器上可以为Javascript线程提供更多的CPU能力,但我有一个应用程序,主要是原始的Javscript内部处理,其中主要的是正在进行的是搜索和数组操作。

那么,在将桌面电源与移动处理器电源进行比较时,就我的目的而言,放慢速度可能不会那么糟糕?我目前在Safari上使用单处理器以六年历史的笔记本电脑上以非常可接受的速度运行。所以我认为iPhone或iPad上的Safari可能不会那么糟糕。你认为这是合理的吗?

答案 4 :(得分:-1)

实际上,我认为Apple尽可能地将javascript保留在Iphone之外有着既得利益......他们似乎希望通过要求本地运行的应用程序来管理appstore中的内容..我很好奇,如果javascript是在Android手机上也很慢,(我以前从来没有使用过它)..如果不是那么我觉得有点奇怪的是Iphone会慢慢用javascript,无论如何,它们已经失去了市场份额并且会有我确信,在某些时候解决这个问题,我认为人们正在抓住苹果公司的游戏和白痴试图微观管理一切,因为移动设备领域出现了更多合法的替代品。