Почему Javascript работает так медленно на iPhone?

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

Я делал некоторые тесты на моем iPhone для Javascript, а некоторые казалось бы, простые примеры выполнялись очень медленно. Очень медленно. Это, к сожалению, большая проблема для моей задачи!

Любая работа вокруг? Если я хочу сделать что-нибудь интересное, мне придется написать "правильное" приложение?

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

Ссылки

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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