Как работает Sencha Touch + PhoneGap по сравнению с родными приложениями с точки зрения скорости?

Я действительно волнуюсь, что, когда я пишу iPhone-приложение с Sencha Touch и помещаю его в контейнер PhoneGap, пользовательский интерфейс будет понижаться.

Я особенно вижу узкие места в:

  • бегство экранных переходов (анимация)
  • беглость прокрутки

Пожалуйста, имейте в виду, что есть много iPhone iPhone iOS 4.x, которые сделали их очень медленными. Я отбрасываю поддержку оригинального iPhone.

Я, будучи профессиональным профессионалом пользовательского интерфейса, могу обнаружить приложение ST, просто коснувшись нескольких вещей.

Увеличивает ли переход от Safari к контейнеру PhoneGap производительность?

Есть ли у вас опыт?

Ответ 1

Я не использовал ST или PhoneGap, но я использовал приложение, построенное с ними. Я могу сказать, что определенно опыт работы с приложениями был наихудшим в моем 3GS. Если вы планируете демонстрацию, прототип или тест, вы в безопасности с ними. Однако, если вы хотите создать приложение с конкурентоспособным UI/UX, вам не следует. (и даже вы хотите создать прототипы, лучше иметь некоторые документы)

По вашему вопросу, скорость. Это определенно не сопоставимо. HTML + CSS - многофункциональная, простая в использовании инфраструктура. Конечно, это медленнее, насколько это легко. Большинство инструментов пользовательского интерфейса на основе HTML используют только UIWebView, который является частью встроенной среды. На самом деле UIWebView - это Mobile Safari. Таким образом, производительность инструментов никогда не будет лучше Mobile Safari. Если вы хотите проверить производительность в анимации, просто посетите http://www.chromeexperiments.com/ с помощью Mobile Safari. Я проверил, что ни одна из витрин не работает гладко, даже многие из них не требуют сильной графической мощности.

Нативные приложения скомпилированы и оптимизированы с использованием новейших технологий от профессиональных исследований на протяжении десятилетий. И есть много вариантов настройки и настройки кода для производительности. Однако некоторые из них применяются к HTML. Поскольку HTML должен всегда гарантировать многофункциональную, удобную в использовании инфраструктуру. И большинство оптимизаций (что повышает производительность) - это компромисс между функцией и простотой.

Однако в iOS 4.3 улучшена производительность Mobile Safari. Но я не считаю это значимым для приложений с яркими пользовательскими интерфейсами.

Я видел значительную графическую структуру с JavaScript. На самом деле это была игровая среда с скриптами в JavaScript. Таким образом, он не имеет отношения к HTML или CSS. (Я забыл его название, однако это был неполный продукт)

PS.

И есть еще одна большая причина для вас. Поведенческая несогласованность пользовательского интерфейса. Рамки имитируют собственный пользовательский интерфейс iOS, но не полностью. Так что он чувствует себя некомфортно, как подражание брендам подражателей. Однако вам не нужно заботиться об этом, если вы не хотите собственный пользовательский интерфейс.

Изменить

Это было долгое время после того, как я ответил на этот вопрос, но я понял, что я также должен упомянуть о GC. JavaScript - это язык, основанный на GC. Это означает, что у него есть непредсказуемое время GC, которое останавливает основные потоки. Это заставляет UI бороться. В собственной реализации вы можете управлять GC или нет.

Это не проблема для Android. У Android всегда были проблемы, связанные с GC на Java. Следовательно, пользователи не будут чувствовать никакой разницы. Но на iOS ваше приложение на основе HTML5 никогда не обеспечивает лучшего опыта, чем собственное приложение для конкурентов.

Существует много обходных решений для этой проблемы времени GC. Такие, как incremental-GC, realtime-GC и так далее. Но на самом деле нет реального решения. Поскольку примитивная проблема заключается в том, что у вас нет контроля.

Ответ 2

Оказывается, что размещение оболочки PhoneGap вокруг любого webapp (включая все приложения ST2) может значительно повысить снижение их производительности. Это связано с тем, что UIWebView, который он использует, фактически не совпадает с браузером iOS Safari, который имеет ряд улучшений, чтобы сделать его более перфорантным. Одна из причин этого заключается в том, что с iOS 4.3, Safari использует движок JavaScript "Nitro", который довольно быстрый, это недоступно в UIWebView, который используется PhoneGap (хотя с iOS5 он доступен для веб-приложений, работающих в полноэкранном режиме).

Несколько человек экспериментировали с производительностью, чтобы понять, что это такое: один смотрит на производительность Facebook App, а другой на производительность холста.

Оказывается, что встроенный браузер пользовательского интерфейса, возможно, хуже, чем Andriod, в качестве несколько тестов показали.

Ответ 3

Я обнаружил, что производительность приложений ST сосать даже вне PhoneGap.

Ответ 4

В момент написания я бы сказал: хорошо для макета и быстрого приложения без высокой требовательной графики.

Но со временем ситуация может измениться, так как оба проекта (PhoneGap и Sencha Touch) улучшаются изо дня в день.

И аппаратное обеспечение становится все более мощным (iPhone 4, 5,..., dual arm cpu,...), поэтому будет время, когда приложения на базе ST и PhoneGap будут иметь производительность, близкую к родным приложениям, и это может произойти после ожидаемого.

Поэтому следите за этими проектами и продолжайте разрабатывать "базовые" приложения с ними, чтобы проверить их производительность.

Ответ 5

Я построил бизнес-приложение с Sencha Touch с помощью PhoneGap и без него. Любое значительное влияние на производительность - Sencha Touch (1.x или 2), а не PhoneGap. Как объясняет Эноил, это связано с тем, что PhoneGap действительно использует собственный браузер. Я заметил, что на iPhone 4 достаточно хорошей производительности ST (и я бы утвердил 3GS с iOS 4.3+, в зависимости от ожиданий ваших пользователей). На Android только для последних устройств достаточно для ST 1.1, но ST 2 ориентирована на производительность Android. Я уверен, что Sencha продолжит инновации и производительность, потому что их бизнес зависит от нее.

Если вы используете Sencha Touch (или любой JavaScript), обязательно используйте мини-версию (-debug).

Я также создал тривиальные родные приложения на iOS и Android, и в действительности нет никакого сравнения; native намного быстрее.

Ответ 6

Я сделал несколько приложений с ST2 и упакован для родных. Конечно, вы можете сравнить их, однако они очень разные звери!

Проще говоря, если ваше приложение Sencha хорошо работает в Safari и Android Stock, оно будет работать аналогичным образом, как только оно будет завершено для iOS или Android. Phonegap/Cordova не сильно влияют на производительность, это просто мост/контейнер для собственной функциональности.

Я думаю, что если вы беспокоитесь о производительности, посмотрите на множество руководств по оптимизации приложений ST2. Существует множество возможностей для улучшения переходов и прокрутки списка.

Если вы довольны тем, как приложение работает как веб-приложение, я думаю, что вы уже ответили на свой вопрос. Webapps не являются родными, и это маскирование, сделанное некоторыми из более крупных фреймворков, вводит в заблуждение. В конечном итоге у пользователя будут ожидания, которые не всегда выполняются.