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-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру