The OpenNET Project / Index page

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

В Chrome появилась поддержка фоновой компиляции JavaScript

14.02.2014 11:54

Разработчики из компании Google сообщили о добавлении в JavaScript-движок V8 поддержки фоновой компиляции JavaScript, которая позволит избежать появления задержек в процессе выполнения web-приложений и положительно повлияет на отзывчивость. Представленное улучшение уже доступно для тестирования в бета-сборках Chrome, Chrome для Android и Chromium.

В V8 применяется техника адаптивной JIT-компиляции. Так как некоторые виды оптимизации требуют накопления статистики и расходуют значительные процессорные ресурсы, глубокая оптимизация выполняется только для наиболее востребованных и часто выполняемых блоков кода (например, математические операции, цикличная обработка данных, рекурсивные вызовы). Редко используемый код и код, который только начал выполняться, компилируется по упрощённой схеме. До сих пор основной проблемой подобного подхода было то, что стадия оптимизирующей компиляции инициировалось в непредсказуемый для выполняемого web-приложения момент и приводила к возникновению задержек из-за приостановки выполнения кода до завершения компиляции очередного блока. В некоторых ситуациях задержки были вполне ощутимы и достигали 600 мс.

В новой версии V8 фаза глубокой оптимизирующей компиляции осуществляется в параллельном потоке, без прерывания процесса выполнения JavaScript-кода. Во время компиляции код продолжает выполняться с использованием базовых оптимизаций, а после готовности более эффективного кода, переключается на полностью оптимизированный вариант. Исключение задержек положительно повлияло на производительность сложных ресурсоёмких JavaScript-проектов. Например, показатели прохождения теста Mandreel, оценивающего скорость выполнения JavaScript-порта движка симуляции физических процессов Bullet, улучшились на 27%.



  1. Главная ссылка к новости (http://blog.chromium.org/2014/...)
  2. OpenNews: В движке V8 появилась новая подсистема JIT-компиляции JavaScript-кода
  3. OpenNews: Открыт код Duetto, системы для запуска в web-браузере проектов на языке C++
  4. OpenNews: Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поколения
  5. OpenNews: Взгляд на производительность JavaScript от одного из разработчиков Java
  6. OpenNews: Новые оптимизации в Firefox сократили разрыв в производительности JavaScript и компилируемых языков
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39084-javascript
Ключевые слова: javascript, v8, chrome, jit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, MPEG LA (?), 12:05, 14/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    когда они asm.js добавят?
     
     
  • 2.3, Аноним (-), 12:15, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оно у них и так работает. asm.js на том же V8 будет выполняться быстрее иного жабаскрипта.
    То есть, если ты, к примеру, напишешь распаковщик xz на просто js и оптимизированную версию с использованием asm.js, то asm.js версия будет гораздо быстрее.
     
     
  • 3.8, Lain_13 (ok), 14:29, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А на сколько он при этом близок к бинарнику, собранному из того же кода, из которого генерировали asm.js-код?
     
     
  • 4.41, inferrna (ok), 16:15, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    По потреблению памяти он всё так же далёк, смею вас уверить.
     
     
  • 5.43, Lain_13 (ok), 21:02, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Может тему менять не будем? Тут говорилось о скорости. На занимаемую память лично мне плевать в данном случае.
     
  • 3.30, Аноним (-), 20:46, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Оно у них и так работает. asm.js на том же V8 будет выполняться быстрее иного жабаскрипта.

    К сожалению, проблему обычного asm решить так и не удалось. Когда кул-хацкер начинает переписывать что-либо на ассемблере, итог один - больше тормозит и совершенно не переносимо.

     
  • 3.33, MPEG LA (?), 00:10, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а мужики-то и не знали!
    они внесли некие оптимизации, и таки да, скорость выполнения увеличилась, но "use asm" не запилили: https://code.google.com/p/v8/issues/detail?id=2599
     
  • 3.45, анон (?), 15:02, 16/02/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    несёшь фигню. с каких это пор вот это:

    function sum (a, b) {
        a = a | 0; b = | 0;
        return a + b;
    }

    стало быстрее вот этого :

    /** @type {function (number, number): number} */
    function sum (a, b) {
        return a + b;
    }

    ? Каким образом две смены типа ускоряют код?

     
     
  • 4.46, arisu (ok), 15:08, 16/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    да одинаково примерно будет: трассировщик поможет.
     
     
  • 5.48, анон (?), 23:34, 18/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    почитайте про "|0" и вообще про побитовые операторы в JS, сударь. Вкратце - они супер медленные, из-за смены типа.

    http://es5.javascript.ru/x11.html#x11.10

     
     
  • 6.49, arisu (ok), 06:28, 19/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а я советую прочитать про то, что такое tracing compilers, и почему здесь почти наверняка на входе будут целые числа.
     
  • 2.47, Сеня (??), 22:06, 18/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > когда они asm.js добавят?

    давно уже!

     

  • 1.6, ip1981 (ok), 13:04, 14/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Единственный движок, без проблем работающий на солярке :-)
     
  • 1.7, A.Stahl (ok), 14:29, 14/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >фоновой компиляции JavaScript

    Сколько возни ради этого JS. Странный это язык -- вроде и язык как язык, но никогда не видел, чтобы JS использовался для чего-то кроме свистелок.
    Ну перделки ещё, говорят, пишут на нём.

     
     
  • 2.9, Anonymus (?), 14:32, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    миллионы мух не могут ошибаться
     
     
  • 3.17, Аноним (-), 16:38, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всегда было интересно, с какой целью аноны при любом удобном случае употребляют эту фразу.
    С точки зрения норм русского языка она является отверждением, а так да — мухи любят фекальные массы и никогда их ни с чем не спутают, но какой подтекст туда влкадываете вы?
     
  • 2.10, Аноним (-), 14:39, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>фоновой компиляции JavaScript
    > Сколько возни ради этого JS. Странный это язык -- вроде и язык
    > как язык, но никогда не видел, чтобы JS использовался для чего-то
    > кроме свистелок.
    > Ну перделки ещё, говорят, пишут на нём.

    Отучаемся говорить за всех. То, чего не знаешь лично ты - не тождественно тому, чего вообще не существует. Компренде?

     
     
  • 3.13, A.Stahl (ok), 15:14, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Отучаемся говорить за всех.

    Учимся читать. Где это я говорил "за всех"? :)

     
  • 2.14, Аноным (ok), 15:39, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да с ним уже ничего не сделать, кто хотел, тот давно разобрался, много всего написано... Понятно в общем. Так же Гугл пилит Дарт и вообще полно всяких фреймворков, библиотек и препроцессоров.
     
  • 2.16, тоже Аноним (ok), 16:09, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > никогда не видел, чтобы JS использовался для чего-то кроме свистелок

    То есть, например, банальный калькулятор цены для клиента вам на сайтах никогда не доводилось видеть? Или он всегда был на флеше? Или, может, джаве?

    Попробуйте хотя бы отключить JS на Опеннете. Вы же не цените свистелки и перделки? Вперед!

     
     
  • 3.18, A.Stahl (ok), 16:49, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да, это свистелки.
    Я где-то сказал, что свистелки это плохо?
    (Вы, кстати, не первый, кто в этом треде пытается приписать мне мысли, которые я не озвучивал)
    Я сказал, что JS используется, по большей части, для всякого, связанного с пользовательским интерфейсом. Я сказал, что эта часть кода, на мой взгляд, далеко не самая важная. И вообще странно, что язык используется исключительно для подобных вещей. А также странно, что этому уделяют очень много времени и ресурсов.
    Я много чего сказал (точнее написал).
    Но какая разница что я написал, если никто(это слово не надо понимать буквально) это всё равно не читает и упорно желает приписать мне свои потаённые мыслишки?
    А?:)
     
     
  • 4.24, тоже Аноним (ok), 18:28, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Кто же вас правильно поймет, когда вы так вот буквально пишете:
    - что код пользовательского интерфейса - не самая важная часть сайта
    - и что этот язык используется исключительно для того, для чего не используется реально существующий и использующий этот язык node.js
    Извините, если заслонил вам зеркало...
     
  • 4.29, Аноним (-), 20:40, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >Я сказал, что JS используется, по большей части, для всякого, связанного с пользовательским интерфейсом

    JS язык общего назначения. Тот факт что практически все операционные системы, появившиеся в последнее вермя, используют именно его ни о чём не говорит?

    >Я сказал, что эта часть кода, на мой взгляд, далеко не самая важная

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

     
     
  • 5.37, arisu (ok), 03:35, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > JS язык общего назначения. Тот факт что практически все операционные системы, появившиеся
    > в последнее вермя, используют именно его ни о чём не говорит?

    это какие? перечисляем, не стесняемся.

     
  • 3.23, тот ещё Анонимус (?), 17:49, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Попробуйте хотя бы отключить JS на Опеннете. Вы же не цените свистелки
    > и перделки? Вперед!

    Уже давно без JS на Опеннете. И что?

     
  • 3.28, Анончик (?), 20:33, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    отключил, брат жив.
    что дальше?
     
  • 3.36, arisu (ok), 03:35, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Попробуйте хотя бы отключить JS на Опеннете.

    никогда и не включал. а что должно было произойти?

     
  • 2.20, кевин (?), 17:40, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    я вижу вашу лень даже через слои напусконого сарказмического жира, хорошая попытка.
     
  • 2.34, Аноним (-), 01:20, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Включил недавно JS в elinks. Брат жив.
     
  • 2.38, arisu (ok), 03:37, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Сколько возни ради этого JS. Странный это язык — вроде и язык
    > как язык, но никогда не видел, чтобы JS использовался для чего-то
    > кроме свистелок.
    > Ну перделки ещё, говорят, пишут на нём.

    мода-с. «мы хотим уеб-приложения! чтобы было веселее — мы выберем для этого как можно менее подходящие инструменты, а потом будем героически решать возникшие проблемы!»

     
     
  • 3.39, тоже Аноним (ok), 11:50, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Очень хотелось бы услышать о более подходящих инструментах для веб-приложений.
     
     
  • 4.40, arisu (ok), 11:54, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Очень хотелось бы услышать о более подходящих инструментах для веб-приложений.

    как я уже говорил, суть такова(tm), что «уеб-приложения» не нужны.

    санки, впрочем, это всё предвидели и даже сделали когда-то java webstart, но оно оказалось немного преждевременно. однако сама идея была в миллион миллиардов раз лучше, чем то, что творят сейчас.

     

  • 1.15, krasnodar2000 (?), 15:51, 14/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А реально вообще дождаться такого, что браузер тянет с сервера байт-код,
    а ты у же с какого хочешь языка получаешь этот байткод?
     
     
  • 2.21, кевин (?), 17:42, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > А реально вообще дождаться такого, что браузер тянет с сервера байт-код,
    > а ты у же с какого хочешь языка получаешь этот байткод?

    naCL почти. у LLVM вроде была похожая технология в академических проектах.

     
     
  • 3.27, krasnodar2000 (?), 20:06, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    NaCL не то, это же нативный код
     
  • 3.32, Аноним (-), 22:25, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Pnacl более подходит под вышеперечисленные требования.
     
     
  • 4.42, krasnodar2000 (?), 19:33, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >Pnacl

    о, это вроде оно

     
  • 2.31, Аноним (-), 20:48, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Java не?
     
  • 2.35, Аноним (-), 01:21, 15/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Так на сегодняшний день JavsScript и есть этот байткод.

    А пишут люди на ClojureScript, CoffeeScript и еще сотне разных языков.

     

  • 1.19, Аноним (-), 17:05, 14/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Офигеть. А в мозилле что-то подобное будет?
     
     
  • 2.22, кевин (?), 17:42, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Офигеть. А в мозилле что-то подобное будет?

    напиши будет.

     
     
  • 3.25, Аноним (-), 18:30, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это без всяких приколов - самый реалистичный вариант. Ничем серьёзным мазила для своего браузера не занимается, зато занимается свистелками всерьёз.
     
  • 2.26, Аноним (-), 19:31, 14/02/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    http://bugzil.la/813559
    > Target Milestone: mozilla20

    С 20 версии уже есть и работает.

     

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



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

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