Sencha Touch + PhoneGap在速度方面与原生应用相比如何?

时间:2011-03-07 13:40:14

标签: iphone ios performance cordova sencha-touch

我真的很担心当我用Sencha Touch编写iPhone应用程序并将其放入PhoneGap容器时,用户体验会降级。

我特别看到了瓶颈:

  • 流畅的屏幕转换(动画)
  • 滚动流畅

请记住,iOS 4.x中有很多3G iPhone运行速度非常慢。我放弃了对原版iPhone的支持。

我是一名训练有素的UI专业人士,只需触摸其中的一些东西即可发现ST应用程序。

从Safari到PhoneGap容器的转变会提高性能吗?

你有经验吗?

6 个答案:

答案 0 :(得分:14)

我没有使用过ST或PhoneGap,但我使用过使用它们构建的应用程序。我可以肯定地说,我的3GS中的应用程序确实是最差。如果您正在计划演示,原型或测试,那么您可以放心使用它们。但是,如果您想制作具有竞争力的 UI / UX 的应用,则不应该。 (甚至你想制作原型,最好有一些论文)

对于你的问题,速度。它绝对不具有可比性。 HTML + CSS是功能丰富,易于使用的框架。当然,它的速度很慢而且很容易。大多数基于HTML的UI工具仅使用UIWebView,它是本机框架的一部分。事实上,UIWebView是Mobile Safari本身。因此,工具的性能永远不会比Mobile Safari更好。如果您想查看动画中的效果,只需使用Mobile Safari访问http://www.chromeexperiments.com/即可。我检查过没有一个展示平稳运行,即使其中很多都不需要强大的图形功能。

本地应用程序使用数十年来专业研究的尖端技术进行编译和优化。并且有很多选项可以调整和调整代码以提高性能。但是其中一些应用于HTML。 因为HTML应始终保证功能丰富,易于使用的框架。大多数优化(这会提高性能)在功能和简单性之间进行权衡。

然而在iOS 4.3中,Mobile Safari的性能得到了提升。但我不相信它对于拥有闪亮UI的应用程序有意义。

我看到了一个使用JavaScript的图形框架。事实上,它是用JavaScript编写脚本的游戏框架。所以它与HTML或CSS无关。 (我忘记了它的名字,但它是不完整的产品)

PS。

还有另一个重要原因。 UI行为不一致。框架模仿iOS的原生UI但不完整。所以像模仿仿制品牌一样让人觉得不舒服。 但是,如果您不想要原生UI,则无需关心它。

修改

我回答这个问题已经有很长一段时间了,但我意识到我还要提到GC。 JavaScript是基于GC的语言。这意味着,它具有不可预测的GC时间,这使得主线程停止。这使得UI挣扎。在本机实现上,您可以控制是否使用GC。

在Android上这不是问题。由于Java上的GC,Android总是让那些苦苦挣扎。因此,用户不会感到任何不同。但在iOS上,基于HTML5的应用程序从未提供比竞争对手的原生应用程序更好的体验。

此GC时间问题有许多变通方法。如incremental-GC,realtime-GC等。但实际上,没有真正的解决方案。因为原始问题是你没有控制权

答案 1 :(得分:3)

事实证明,在任何webapp(包括所有ST2应用程序)周围放置PhoneGap包装器实际上可以显着降低其性能。这是因为它使用的UIWebView实际上与iOS的Safari浏览器相同,后者有许多增强功能,使其更具有穿孔性。这背后的一个原因是,从iOS 4.3开始,Safari使用非常快的“Nitro”JavaScript引擎,这在PhoneGap使用的UIWebView上不可用(尽管as of iOS5 it's available for webapps running in full screen mode)。

有些人已尝试使用效果来了解其影响,一个是Facebook App的表现,另一个是canvas performance的表现。

事实证明,嵌入式UI浏览器可能比Andriod更糟糕some tests have shown

答案 2 :(得分:1)

我发现即使在PhoneGap之外,ST应用程序的性能也很糟糕。

答案 3 :(得分:1)

在撰写本文时,我会说:适用于没有高要求图形的模型和快速应用程序。

但随着时间的推移,事情可能会发生变化,因为两个项目(PhoneGap和Sencha Touch)日复一日都在改善。

硬件变得越来越强大(iPhone 4,5,......,双臂cpu ......)所以有一段时间,基于ST和PhoneGap的应用程序将具有接近本机应用程序的性能,并且这可能会超出预期。

因此,请密切关注这些项目,并继续与他们一起开发“基本”应用程序以测试其性能。

答案 4 :(得分:1)

我使用带有和不带PhoneGap的Sencha Touch构建了一个商业应用程序。任何主要的性能影响来自Sencha Touch(1.x或2),而不是PhoneGap。正如Eonil解释的那样,这是因为PhoneGap确实在使用本机浏览器。我注意到iPhone 4上的ST性能“足够好”(我认为3GS与iOS 4.3+相比;取决于用户的期望)。在Android上,只有最近的设备适用于ST 1.1,但ST 2专注于Android性能。我确信Sencha将继续创新并推动业绩,因为他们的业务取决于它。

如果您使用Sencha Touch(或任何JavaScript),请务必使用缩小版(-debug)。

我还在iOS和Android上构建了琐碎的本机应用程序,实际上没有比较;本地人要快得多。

答案 5 :(得分:0)

我用ST2做了几个应用程序,并为原生包装。 你当然可以比较两者,但它们是非常不同的野兽!

简单地说,如果您的Sencha应用程序在Safari和Android Stock中表现良好,一旦包装好iOS或Android,它将以类似的方式执行。 Phonegap / Cordova对性能的影响不大,这些只是本机功能的桥接/容器。

我认为如果您担心性能,请查看有关优化ST2应用的许多教程。可以通过很多方法来改进转换和列表滚动。

如果您对自己的应用在网络应用中的表现感到满意,那么我认为您已经回答了您的问题。 Web应用程序不是原生的,一些更大的框架所做的伪装是误导性的。最终,用户的期望并不总是得到满足。