【问题标题】:How does Sencha Touch + PhoneGap perform compared to native apps in terms of speed?Sencha Touch + PhoneGap 在速度方面与原生应用相比表现如何?
【发布时间】:2011-07-10 08:58:51
【问题描述】:

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

我特别看到以下瓶颈:

  • 流畅的屏幕过渡(动画)
  • 滚动流畅度

请记住,有很多运行 iOS 4.x 的 3G iPhone,这使得它们非常慢。我正在放弃对原始 iPhone 的支持。

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

从 Safari 转移到 PhoneGap 容器是否会提高性能?

你有这方面的经验吗?

【问题讨论】:

  • 最新版本的 iOS4 几乎解决了 3G 用户遇到的缓慢问题。升级之后,我的 3G 测试并没有明显比运行 iOS 3 慢。

标签: iphone ios performance cordova sencha-touch


【解决方案1】:

我没有使用过 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 上不会有问题。 Android 总是因为 Java 上的 GC 而苦苦挣扎。因此,用户不会感觉到任何差异。但在 iOS 上,您基于 HTML5 的应用永远不会提供比竞争对手的原生应用更好的体验。

这个 GC 时间问题有很多解决方法。比如增量-GC、实时-GC等等。但实际上,没有真正的解决方案。因为原始问题是你没有控制权

【讨论】:

  • 仅供参考。甚至 Facebook 也认识到,在移动设备上押注基于 HTML 的架构是最大的错误。 techcrunch.com/2012/09/11/… 嗯,这是不去跨平台应用最明显的例子。
  • Sencha 回应了 Facebook 的关于 html5 尚未准备好的挑战sencha.com/blog/the-making-of-fastbook-an-html5-love-story - 我认为在整个原生 vs * 方法中,开发人员的能力被低估了。大多数原生应用程序都是由经验丰富的移动程序员编写的;大多数 html5 手机应用程序都是由网络开发者编写的,他们快速使用了一种新的有趣技术。这至少是造成phonegap、钛、煎茶等性能不佳的部分原因
  • @Nick,您如何看待为什么大多数有经验的程序员更喜欢原生平台而不是分层平台?因为分层平台总是缺少一些控制,最终几乎100%成为关键问题。
  • 如果原生平台开发工具链较差,也许使用分层/抽象平台是有意义的。 (例如:ADT/NDK)但遗憾的是,与 Sencha 提供的相比,Apple 的本地工具链非常出色。
  • 最后,制作精美的演示视频真的很容易。但演示并不意味着您也可以在生产中制作它。我在 Mobile Safari 上尝试了 fastbook,但它只显示了一个白色的空白屏幕。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    但是随着两个项目(PhoneGap 和 Sencha Touch)日复一日地改进,事情可能会随着时间而改变。

    而且硬件变得越来越强大(iPhone 4、5,...,双臂 cpu,...),因此基于 ST 和 PhoneGap 的应用程序将有一段时间具有接近原生应用程序的性能,并且这可能比预期的要晚。

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

    【讨论】:

    • 如果机器足够快,一切皆有可能。而且时间过去了,机器会变得更快。然而没有人知道未来,重要的是现在。而且即使是双核 ARM ST+PG 对于原生应用的动画来说还是太慢了。此外,即使发生了,也不意味着他们接近原生。因为我的回答中提到的原因。这只是意味着只有它们才能获得足够的性能来完成原生应用很久以前所做的事情。
    【解决方案4】:

    我使用 Sencha Touch 构建了一个商业应用程序,使用和不使用 PhoneGap。任何主要的性能影响都来自 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】:

      事实证明,在任何 web 应用(包括所有 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

      【讨论】:

        【解决方案6】:

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

        简而言之,如果您的 Sencha 应用在 Safari 和 Android Stock 中表现良好,那么一旦为 iOS 或 Android 打包,它将以类似的方式运行。 Phonegap/Cordova 对性能影响不大,它们只是原生功能的桥梁/容器。

        我认为,如果您担心性能,请查看有关优化 ST2 应用程序的许多教程。可以做很多事情来改进过渡和列表滚动。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多