我一直在研究为iPhone编写应用程序。我真的很喜欢这个样子 PhoneGap的 这基本上允许您在应用程序中包含一个网页。我的技能主要是在HTML / Javascript中,因此这个工具可以让我充分利用我的技能,而无需花费很多时间学习如何为iPhone本地编写应用程序。
我一直在我的iPhone上为Javascript做一些测试,还有一些 看似简单 例子运行缓慢。真的很慢。不幸的是,这对我的任务来说是个大问题!
有什么工作吗?如果我想做任何有趣的事情,我将不得不写一个“适当的”应用程序?
解释为什么Apple似乎创建了如此糟糕的Javascript实现也很有意思(可能会赚更多的钱?更少的网络应用程序=商店中更多的应用程序?)
参考
http://ajaxian.com/archives/ipad-javascript-shockingly-slow
Javascript并不是特别慢,但DOM非常慢。
我认为它与桌面浏览器相同,但放大了。
如果无法优化,我会首先检查所有DOM操作。
另一种选择是使用模板引擎。
主要的DOM操作是通过innerHTML注入完成的,即使在移动设备上也是如此。
我们已经构建了我们的Web应用程序的移动版本,我们使用 纯 (我们创建的一个开源JS库)从JSON数据中呈现HTML,并且它非常敏感。
我们采用HTML5方式(不是本机方式)但我认为生成HTML可以在PhoneGap中包装时以相同的方式完成。
我认为Apple没有为Mobile Safari创建任何特殊的Javascript实现。可能与桌面Safari相同或非常相似。
这些设备很小并且具有严格的功率限制,因此CPU很慢。
显然,由于安全功能,iOS不会对JavaScript进行JIT编译(与Android不同): http://daringfireball.net/linked/2010/07/22/android-ios-js-benchmarks
关于DOM访问的好处是问题:我不知道这些基准测试多少测试DOM操作。
@Rudiger:只是一个想法 - 自“8年前”以来,台式计算机速度的许多改进部分是通过使用多个处理器来实现的。 Javascript是单线程的,因此可能无法利用这样的多处理器。是的,我知道浏览器可以利用它,并且将其他处理器放在其他处理器上可以为Javascript线程提供更多的CPU能力,但我有一个应用程序,主要是原始的Javscript内部处理,其中主要的事情是正在进行的是搜索和数组操作。
那么,在将桌面电源与移动处理器电源进行比较时,就我的目的而言,放慢速度可能不会那么糟糕?我目前在Safari上使用单处理器以六年历史的笔记本电脑上以非常可接受的速度运行。所以我认为iPhone或iPad上的Safari对我来说可能不会那么糟糕。你认为这是合理的吗?
实际上,我认为Apple尽可能地保持javascript不受Iphone的影响。他们似乎想要通过他们的appstore通过要求本地运行的应用程序来管理事物..我很好奇,如果javascript也很慢Android手机,(我之前从未使用过一款)..如果不是那么我觉得有点奇怪的是Iphone会慢慢用javascript,无论如何,它们已经失去了市场份额而且必须解决问题在某些方面,我确信,我认为人们正在抓住Apple的游戏和白痴试图微观管理一切,因为移动设备领域出现了更多合法的替代品。