2010-07-22 5 views
11

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

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

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

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

Ссылки

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

+4

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

+0

Надеюсь, вы не саркастически относитесь к «захватывающим картинам в моей голове»! –

+2

Немного. Кажется, вы думаете, что для работы с JavaScript на мобильных телефонах есть много возможностей. Я сомневаюсь, что у Apple много мотивации, чтобы сделать веб-браузер плохой на iPhone. Они вкладывают много маркетинговых решений в приложения, но они также продают iPhone как интернет в кармане. У них не хватает конкурентов. –

ответ

9

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

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

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

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

3

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

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

-1

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

+3

Абсолютный bollocks. Процессор работает медленно. JavaScript интерпретируется. Apple делает JavaScript быстрее на iPhone с каждой версией (см. Http://daringfireball.net/2008/07/webkit_performance_iphone для 2.0 и http://waynepan.com/2009/03/24/iphone-30-javascript-performance/ для 3.0). Насколько я понимаю, Android 2.2 имеет лучшую производительность JavaScript (http://arstechnica.com/gadgets/news/2010/07/android-22-demolishes-ios4-in-javascript-benchmarks.ars), но вы также можете " t купить любые телефоны, которые работают с 2.2 больше. –

+2

Это груз дерьма. Не имеет никакого отношения к тому, что мобильные процессоры - это скорость работы настольных компьютеров 8 лет назад, несмотря на более сложную графику с openGL и больше использования сети. Android использует почти ту же самую реализацию Safari, которая называется движком Gecko, она чрезвычайно быстро по сравнению с другими, и они являются большим вкладом в проект с открытым исходным кодом, и все это несколько раздражает. Из того, что я видел в попытках Googles, и теперь яблоки пытаются сделать Gecko быстрее - это делать предметы, прежде чем они будут готовы, и imo не сможет пройти тест Acid 3. – Rudiger

+3

@ Rudiger Gecko абсолютно ничего не делает с Apple, Google или Safari или Android - Я предполагаю, что вы хотели сказать «WebKit». Кроме того, ваша последняя строка о «рендеринге вещей до их готовности» не имеет логического смысла. @Paul Javascript, как правило, JIT, скомпилированный в эти дни после толкования - я не уверен, что iPhone/iPad/Android это сделать, но Opera Mobile на WinMobi, Symbian делает JIT-компиляцию JS - возможно, iPad JS настолько медленный, JIT. Я не знаю. – lucideer

2

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

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

0

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

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

Смежные вопросы