Почему Javascript работает так медленно на iPhone? - PullRequest
11 голосов
/ 22 июля 2010

Я занимаюсь написанием приложения для iPhone.Мне действительно нравится внешний вид PhoneGap , который в основном позволяет вам содержать веб-страницу в приложении.Мои навыки в основном основаны на HTML / Javascript, так что этот инструмент позволяет мне максимально эффективно использовать мои навыки, не тратя много часов на изучение того, как написать приложение для iPhone.на моем iPhone для Javascript, и некоторые кажущиеся простыми примеры работают мучительно медленно.Очень медленноК сожалению, это большая проблема для моей задачи!

Есть ли обходные пути?Если я хочу сделать что-нибудь интересное, мне придется написать «правильное» приложение?

Было бы интересно объяснить, почему Apple, казалось бы, создала такую ​​плохую реализацию Javascript (возможно,деньги? Меньше веб-приложений = больше приложений в магазине?)

Отзывы

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

Ответы [ 5 ]

9 голосов
/ 22 июля 2010

Javascript не особенно медленный, но DOM очень медленный.Я думаю, что это то же самое, что и настольный браузер, но увеличенное.Я бы сначала проверил все манипуляции с DOM, если они не могут быть оптимизированы.

Другой вариант - использовать шаблонизатор.Основные манипуляции с DOM выполняются с помощью внедрения innerHTML, что быстро даже на мобильных устройствах.

Мы создали мобильную версию нашего веб-приложения и используем PURE (JS с открытым исходным кодом.lib, которую мы создали) для рендеринга HTML из данных JSON, и это очень отзывчиво.

Мы пошли по HTML5 (не нативно), но я думаю, что генерация HTML может быть выполнена таким же образом, когда она помещена в PhoneGap.

3 голосов
/ 22 июля 2010

Я не думаю, что Apple создала какую-либо специальную реализацию Javascript для Mobile Safari. Вероятно, он такой же или очень похож на настольный Safari.

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

2 голосов
/ 23 июля 2010

Очевидно, iOS не будет выполнять JIT-компиляцию JavaScript (в отличие от Android) из-за функции безопасности: http://daringfireball.net/linked/2010/07/22/android-ios-js-benchmarks

Хорошая мысль о том, что проблема с доступом к DOM: я не знаю, насколько эти тесты тестируют операции DOM.

0 голосов
/ 08 января 2011

@ Рудигер: Просто мысль - Многие улучшения скорости настольного компьютера со времени «8 лет назад» были достигнуты частично благодаря использованию нескольких процессоров.Javascript является однопоточным, и, вероятно, не сможет использовать преимущества таких нескольких процессоров.Да, я знаю, что браузеры могут воспользоваться этим преимуществом, и что размещение других компонентов на других процессорах может обеспечить большую мощность ЦП для потока Javascript, но у меня есть приложение, которое в основном является необработанной внутренней обработкой Javscript, где главноеидет поиск и манипулирование массивами.

Итак, при сравнении мощности настольного компьютера с мощностью мобильного процессора, для моих целей, может быть, замедление не будет таким плохим?В настоящее время я использую Safari на вполне приемлемых скоростях на шестилетнем ноутбуке с одним процессором.Поэтому я думаю, что Safari на iPhone или iPad для меня может быть не намного хуже.Как вы думаете, это разумно?

0 голосов
/ 22 июля 2010

На самом деле, я думаю, что Apple заинтересована в том, чтобы как можно больше не публиковать javascript на Iphone ... они, похоже, хотят регулировать вещи через свой магазин приложений, требуя, чтобы приложения работали естественным образом. Мне любопытно, если javascript также медленный на телефонах Android, (я никогда не использовал один раньше) .. если это не так, я думаю, это немного странно, что Iphone будет медленным с JavaScript, во всяком случае, они уже теряют долю рынка и будут иметь Я уверен, что когда-нибудь решить эту проблему, я думаю, что люди начинают увлекаться играми Apple и идиотизмом, пытаясь управлять всем теперь, когда в пространстве мобильных устройств появляются более законные альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...