The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Исследование проблем с производительностью JavaScript на мобильных устройствах

15.07.2013 12:08

Дрю Кроуфорд (Drew Crawford), специализирующийся на разработке мобильных приложений, опубликовал подробный анализ проблем с производительностью мобильных web-приложений, мешающих им конкурировать с нативными программами. В статье сделаны неутешительные выводы: в силу особенностей динамического языка и методов работы с памятью, JavaScript-приложения существенно отстают по производительности от нативных программ и в ближайшем будущем вряд ли ситуация заметно изменится, по крайней мере без внесения изменений в язык и API. Наиболее перспективным в этом плане выглядит Asm.js, низкоуровневое подмножество языка JavaScript со строгой типизацией.

В текущем виде JavaScript слишком медленный для разработки мобильных приложений. Отставание по производительности от C/C++ оценивается примерно в 50 раз, а от Java/Ruby/Python/C# в 10 раз, если размер программы укладывается в 35 Мб, при дальнейшем увеличении размера приложения производительность деградирует экспоненциально. Наиболее жизнеспособным вариантом для продвижения JavaScript для разработки мобильных приложений называется доведение производительности мобильных устройств до уровня настольных систем. Сам язык, без кардинальных изменений, не позволяет приблизиться к производительности нативных программ. Проблемы также наблюдаются в реализации системы сборки мусора, которая не рассчитана на работу в окружениях с ограниченным ресурсом памяти.

  1. Главная ссылка к новости (http://sealedabstract.com/rant...)
  2. OpenNews: Релиз Firefox 22 с поддержкой Asm.js
  3. OpenNews: Представлен Portable Native Client для запуска платформонезависимых C/C++ программ в браузере
  4. OpenNews: В Firefox 22 появится Asm.js, низкоуровневое высокопроизводительное подмножество JavaScript
  5. OpenNews: Новые версии языков Dart и TypeScript, претендующих на роль альтернатив JavaScript
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/37421-javascript
Ключевые слова: javascript, web, mobile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:14, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    >  Наиболее перспективно в этом плане выглядит Asm.js, низкоуровневое
    > подмножество языка JavaScript со строгой типизацией

    Ага, сначала создадим себе проблемы на ровном месте, а потом будем героически с ними бороться, вбивая эпические костыли. Вебдванольненько.

     
     
  • 2.24, Аноним (-), 16:32, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это какие проблемы создал JS относительно смартфонов? Месье не в курсе, что когда его проектировали, еще и смартфонов-то не существовало? Скорее уж проблемы в пользователях смартфонов, упорно пользующихся сайтами на JS на своих костыльных машинках.
     
     
  • 3.30, Аноним (-), 19:15, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Это какие проблемы создал JS относительно смартфонов?

    Динамическая типизация, GC. Сразу понятно было что это быстрым не будет.

     
     
  • 4.41, Аноним (-), 21:36, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Анон, читай что пишешь. Это в середине 90-х было сразу понятно, что на гламурных смартфонах в 2010-х он будет тормозить, что ли?
     
     
  • 5.49, анонимс (?), 17:23, 16/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В середине 90-х были ходовыми конфигурации Pentium ~166MMX, 32-64Mb. Современные смартфоны намного производительнее тех машин. (На моем ZOPO C2 3DMark выдает ~10fps)
     
  • 4.51, arisu (ok), 06:53, 17/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Сразу понятно было что это быстрым не будет.

    офигеть ты эксперт.

     
  • 3.43, all_glory_to_the_hypnotoad (ok), 22:36, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Это какие проблемы создал JS относительно смартфонов?

    ~ большая куча тупых веб гогнкодеров будет теперь херачить медленные, прожорливые и ненужные приложения для смартов. Вместе с такими же бездарными и тупыми CIOшниками совсем скоро будет очень трудно найти вменяемый смарт. Ну чтобы для приложения типа браузера и почты не нужно было носить в кармане портативную буржуйку с чемоданом дров.

     
     
  • 4.56, Ононимус (?), 12:18, 02/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    вообще в этот шаблон:

    ~ большая куча тупых %LANG_NAME% гогнкодеров будет теперь херачить медленные, прожорливые и ненужные приложения,

    можно влепить оочень много чего
    особенно сюда напрашивается самизнаетечто...

     
  • 2.44, rshadow (ok), 01:41, 16/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Что только не придумают лишь бы пяток самых нормальных скриптовых языков в браузер не впилить.
     
     
  • 3.52, arisu (ok), 06:54, 17/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Что только не придумают лишь бы пяток самых нормальных скриптовых языков в
    > браузер не впилить.

    ящитаю, gw-basic'а было бы достаточно!

     

  • 1.2, Аноним (-), 13:25, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Отставание по производительности от C/C++ оценивается примерно в 50 раз, а от
    > Java/Ruby/Python/C# в 10 раз

    Сомнительные какие-то цифры. Я бы мог поверить что яваскрипт сопоставим с питоном (то есть в полтора/два раза), но чтобы в 10 раз?

     
     
  • 2.3, Аноным (ok), 13:27, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вообще ж писали, что Node.js очень быстрые по сравнению со всякими Питонами и Рубями.
     
     
  • 3.10, Nuzhny (?), 14:38, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На мобильных же устройствах! Думаю, что из динамики lua (или luaJit) показал бы наилучшие результаты.
     
  • 3.12, Аноним (-), 14:40, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Быстрые на x86/x86_64. А тут мало памяти и ARM.
     
     
  • 4.15, Аноным (ok), 15:03, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Через год 2 гига мало будет.
     
     
  • 5.57, Ононимус (?), 12:20, 02/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Через год 2 гига мало будет.

    вы, походу, гость из прошлого

     
  • 2.26, Аноним (-), 18:08, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Странно, что в один ряд воставили Java и Python. Между ними как бе осне больштй разрыв в производительности.
     
     
  • 3.31, Аноним (-), 19:16, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > бе осне больштй разрыв в производительности.

    Что не мешает и тому и другому быть редкостным тормозиловом :).

     
     
  • 4.47, Аноним (-), 11:37, 16/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ахтунг анонимные аналитики в треде, все на космический корабль и летим в другую галактику.
     

  • 1.4, x0r (??), 13:27, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    он все понял
     
  • 1.5, anoname (?), 13:30, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >JavaScript-приложения существенно отстают по производительности от нативных программ

    Вот это новость! А мужики-то не знают.

     
  • 1.7, demimurych (ok), 13:33, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Не вполне понял.
    В статье графики о том что javascript отстает по производительности. Ок принимаем это за аксиому, но тут же напрашивается вопрос, где сравнение не в попугаях, а на реальных задачах?

    То что javascript медленнее совсем не говорит о том, что его производительности недостаточно для эффективного решения таких то и таких то задач.

     
  • 1.8, Аноним (-), 14:19, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    35 мегабайт джаваскрипта. Это что, angular.js?
     
     
  • 2.18, pavlinux (ok), 16:02, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    code This file is part of the superpuper project Copyright C 20... большой текст свёрнут, показать
     

  • 1.11, Анонимный_Аноним (?), 14:39, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уже жду аппаратную реализацию javascript и грелок (телефонов) с ядерным реакторам вместо батареи.
     
  • 1.13, Аноним (13), 14:53, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    поэтому ведщроид всегда будет лагать, и жрать батарею. и всякие хромооси с фаерфокссистемами.
     
     
  • 2.16, Аноным (ok), 15:05, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А Ведроид-то тут причём, Жабоскрипт с Жабой путаем? К тому же на Ведроиде можно нативненькое писать.
     
     
  • 3.17, Аноним (-), 15:16, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >C/C++ оценивается примерно в 50 раз, а от Java/Ruby/Python/C# в 10 раз

    Между нативом и явой разница в 5 раз.

     
     
  • 4.20, pavlinux (ok), 16:11, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>C/C++ оценивается примерно в 50 раз, а от Java/Ruby/Python/C# в 10 раз
    > Между нативом и явой разница в 5 раз.

    Докажи!

     
  • 4.27, Аноним (-), 18:10, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    У меня от вас JIT, месье.
     
     
  • 5.32, Аноним (-), 19:18, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня от вас JIT, месье.

    С JIT оно и сливает раза в три. Бенчи можно посмотреть допустим на quicklz.com - одна и та же библа в разных реализациях, один и тот же алгоритм. Ява и дотнет стабильно проиграли севой версии в 3 раза.

     
  • 2.23, kurokaze (ok), 16:28, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > поэтому ведщроид всегда будет лагать, и жрать батарею.

    Очень толсто (как программист на Obj-C/Java говорю)

    > и всякие хромооси

    Еще толще

    >с фаерфокссистемами.

    А тут в тему статьи ты наконец попал. Так ты троллил или только пытался? Незачёт

     
     
  • 3.33, Аноним (-), 19:19, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Очень толсто (как программист на Obj-C/Java говорю)

    Спасибо, я видел как работает ведроид если там парочку программ запустить. Самый прикол - даже самый занюханный хелловорлд на этом менее 30Мб RSS не жрет в принципе. А т.к. там еще системой занято дофига - понятно что получается.

     

  • 1.14, Пиу (?), 14:58, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    лол, капитан очевидносте!
    уже даже плюсы довели до юзабельного состояния, а он о жабоскрипте думает
     
  • 1.19, Аноним (-), 16:02, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    скомпилированная программа оказала быстрее интерпретируемой! ну надо же какое открытие! вот такие открытия делают "специалисты".
     
     
  • 2.21, pavlinux (ok), 16:14, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому Дрю Кроуфорд, специалист по разработке мобильных приложений. А не высер на опеннете.
     
     
  • 3.34, Аноним (-), 19:20, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > опеннете.

    Выceры на опеннете - прерогатива павлина :).

     

  • 1.22, Аноним (-), 16:27, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересный кусок:

    A Rust contributor weighs in:

    I’m a contributor to the Rust project, whose goal is zero-overhead memory safety. We support GC’d objects via “@-boxes” (the type declaration is “@T” for any type T), and one thing we have been struggling with recently is that GC touches everything in a
    language. If you want to support GC but not require it, you need to very carefully design your language to support zero-overhead non-GC’d pointers. It’s a very non-trivial problem, and I don’t think it can be solved by forking JS.

     
  • 1.25, edwin (??), 17:38, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Правильнее назвать статью: "проблемы работы движков JS в браузерах для мобильных платформ" ... ИМХО - так все-же правильно.
    И работы в этом направлении идут очень интенсивно ... причем как в плане самого движка JS так и того, каким CPU в мою устройствах ...
      
     
  • 1.28, Аноним (-), 19:08, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Чота я сомневаюсь что JavaScript медленее чем питон/руби, надо смотреть конечно что за тесты он там гонял. Но так-то JavaScript может действительно не хватает некоторых быстрых контейнеров (не аналога std::map, например) и алгоритмов
     
  • 1.29, Аноним (-), 19:12, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Да цифры что-то сомнительные
    Например здесь JS по производительности выглядит очень неплохо. Понятно что тесты синтетические, но все-таки
    http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&la
     
  • 1.35, Аноним (-), 19:37, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В текущем виде JavaScript слишком медленный для разработки мобильных приложений. Отставание по производительности от C/C++ оценивается примерно в 50 раз, а от Java/Ruby/Python/C# в 10 раз, если размер программы укладывается в 35 Мб, при дальнейшем увеличении размера приложения производительность деградирует экспоненциально.

    В статье написано, что отставание в 5 раз, ещё 10 раз дают разница в железе десктопа и мобильных девайсов. Сравнения с Pythonом, Java и Ruby как такового не было, они просто вспоминались в процессе статьи. Текущую новость лучше удалить - слишком уж не соответствует оригиналу.

     
     
  • 2.36, Аноним (-), 19:45, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То, что по-видимому было искажено в результате перевода 50 раз здесь - нативные... большой текст свёрнут, показать
     

  • 1.37, Заоза (ok), 20:05, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Приложения на андройде почти все поголовно на яве, отсюда уже можно сделать вывод. Уже процы на топовые смартфоны ставят по 1.5ггц, да и память до 2х гигов вставляют, от этого хромает энергосбережение, если я у себя на самом слабеньком одноядерном процессоре 768 мгц еле еле выжимаю 10 рабочих дней, то я не представляю сколько работают топовые четырех\восьми яд., с всякими супер амоледами с разрешением 1920 на 1080, это ужас просто, день, два? Каждый день зарядка? Что это за кара такая?....
     
     
  • 2.38, Аноным (ok), 20:16, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если брать какой-либо известный современный флагман, то просто в роли звонилки в 2г-сети он более 4 дней не протянет никак.
     
  • 2.40, pro100master (ok), 21:29, 15/07/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    2ГГЦ на АРМ это, в лучшем случае, 200МГц на Интеле по bogomips. В реальности, все еще хуже, за счет дико умных предсказателей и кешей всё той же компании. В своё время, у меня на каком-то втором пне интернет-странички так же тормозили :)
     
     
  • 3.46, NikolayV81 (?), 09:48, 16/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Будем думать с возвращением intel хоть и через процессоры для win8 конкуренция заставит немного почесаться. А так если там 2-4Вт термопакет, то что можно ожидать от сравнения хотя-бы с 17Вт Intel-а в i-3-5-7...U при равной частоте не может быть одинаковой производительности.
     

  • 1.39, Михрютка (ok), 21:11, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > если размер программы укладывается в 35 Мб,
    > при дальнейшем  увеличении размера приложения производительность деградирует экспоненциально.

    это вот что это такое за фигню я только что прочитал?

     
  • 1.42, Аноним (-), 22:30, 15/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подучите английский и выбросите этот отвратительный промт, которым вы переводили статью.
    >от Java/Ruby/Python/C# в 10 раз, если размер программы укладывается в 35 Мб

    это же ложь, где вы это нашли?
    Я вижу:
    >As long as their applications will be running on systems equipped with more than three times as much RAM as required, then garbage collection is a reasonable choice.

    Впрочем, я не знаю что я ожидал.

     
     
  • 2.53, arisu (ok), 07:02, 17/07/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > выбросите этот отвратительный промт, которым вы переводили статью.

    тогда «пиривотчеку» придётся отрезать себе голову. не то, чтобы кто-то потом заметил разницу в интеллекте, но эстетика-с… да и кушает он туда.

    p.s. «пиривот» взялся вот отсюда: «If you find yourself with 6 times as much memory as you need, garbage collection is actually going to be pretty fast.  So for example, if you are writing a text editor, you might realistically be able to do everything you want in only 35MB, which is 1/6th the amount of memory before my iPhone 4S crashes.» и так далее. вот они, заветные «триццатьпятьмигабайтов».

    ну, это ж опеннет: тут «пиривотчеки» традиционно понимают только цифры и fuck, остальное домысливают в меру своего идиотизма. ради чего на опеннет и хожу: сравнение оригинала и «пиривота» или «выжимки» часто неимоверно доставляет. вплоть до того, что «пиривотчик» на опеннете может написать полностью противоположное тому, что говорится в оригинале.

     

  • 1.45, anonymous (??), 08:35, 16/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Откровение капитана Очевидность.
     
  • 1.48, Аноним (-), 17:07, 16/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Страницы в 10+ мегабайт кода без учета картинок и флэша нужно добавлять в списки блокировок рекламы
     
  • 1.50, arisu (ok), 06:51, 17/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    развёрнутая статья, которая поясняет тупообезьянам, отчего их жысы-поделки всегда будут сосать.

    и совершенно бесполезная, потому что тупообезьяны не то, что понять — они и прочесть такое количество букв не способны.

     
     
  • 2.54, Михрютка (ok), 14:08, 17/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > развёрнутая статья, которая поясняет тупообезьянам, отчего их жысы-поделки всегда будут
    > сосать.
    > и совершенно бесполезная, потому что тупообезьяны не то, что понять — они
    > и прочесть такое количество букв не способны.

    самое печальное, что да. я уже пару разоблачений прочитал.

    I think a better title would be: “Reminder that JS is crippled on iOS.” Or something along those lines. Yup. It is. But don’t blame JavaScript. Blame Apple. They don’t want you to use JavaScript because then your code would be more portable. And that’s the last thing they want!

    праздник. жыды как обычно виноваты.

     
     
  • 3.55, arisu (ok), 14:53, 17/07/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ну дык. капитаню помаленьку.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру