The OpenNET Project / Index page

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

В Chrome тестируют новый подход к компиляции JavaScript

15.02.2017 12:31

Разработчики JavaScript-движка V8 объявили о начале тестирования упрощённой схемы компиляции JavaScript, основанной на применении интерпретатора Ignition и JIT-компилятора Turbofan для всего JavaScript, а не для специфичных ситуаций. Новый режим включен по умолчанию для контрольной группы пользователей веток Chrome Canary и Chrome Developer. Остальные могут включить новый режим, активировав опцию "Experimental JavaScript Compilation Pipeline" в "chrome:flags".

Ранее в V8 использовался достаточно сложный многоуровневый процесс компиляции JavaScript, в котором одноразовый код интерпретировался на первой стадии, после чего генерировался машинный код для JIT, который периодически обновлялся и улучшался двумя оптимизирующими JIT-компиляторами. В частности, вначале генерировался машинный код для всего JavaScript при помощи быстрого JIT-компилятора FullCodegen, а для устранения задержки перед готовностью JIT-компилятора применялся интерпретатор Ignition, который также брал на себя единичные операции, не требующие высокой скорости выполнения, для которых нет смысла привлекать полноценный JIT.

Вместо машинного кода Ignition использует байткод, выполняемый в регистровой виртуальной машине, который требует в 2-4 раза меньше памяти, а по скорости выполнения в реальных приложениях очень близок к неоптимизированному машинному коду. После формирования базового машинного кода для JIT, вступали в строй два дополнительных JIT-компилятора, которые генерировали оптимизированный код, учитывая накопленную статистику. Выбор того или иного оптимизирующего компилятора зависел от контекста, но Turbofan изначально развивался как будущая замена Crankshaft, по мере тестирования и стабилизации забирая на себя всё больше функций.

Новая схема подразумевает применение на первой стадии только интерпретатора с байткодом с подключением по мере выполнения кода JIT-компилятора Turbofan. Таким образом, полностью исключается фаза упреждающей генерации неоптимизированного машинного кода JIT-компилятром FullCodegen, а также удаляются привязки к старому JIT-компилятору Crankshaft и лишняя логика разветвлений. Ожидается, что изменение положительно скажется на производительности реальных JavaScript-приложений и позволит снизить расход памяти.

  1. Главная ссылка к новости (http://v8project.blogspot.ru/2...)
  2. OpenNews: Для WebKit реализован JIT-компилятор на основе наработок LLVM
  3. OpenNews: В Chrome появилась поддержка фоновой компиляции JavaScript
  4. OpenNews: В JavaScript-движок V8 добавлена поддержка WebAssembly
  5. OpenNews: В Chrome и движке V8 обеспечена поддержка спецификаций ECMAScript 6 и 7
  6. OpenNews: Представлен TurboFan, новый JIT-компилятор для JavaScript-движка V8
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46051-turbofan
Ключевые слова: turbofan, chrome, v8, pipeline
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, freehck (ok), 12:44, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    Значит, теперь JS будет выполняться ещё быстрее. Чудно.
    Пожелаем Хромовцам успеха.
     
     
  • 2.32, rshadow (ok), 19:12, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Значит, теперь JS будет выполняться ещё быстрее. Чудно.
    > Пожелаем Хромовцам успеха.

    А тем временем мозилла все тормознее и тормознее...

    "На правах накидывальщика на вентилятор"


     
     
  • 3.35, Аноним (-), 19:23, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот нет, в последней вроде нарастание тормозов приостановилось, стало вроде чуть лучше. Сугубо личное видение.
     
     
  • 4.37, rico (ok), 20:51, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вы про многопоточный режим?
     
     
  • 5.39, rshadow (ok), 22:46, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее всего. Он действительно сделал быстрее и отзывчевее интерфейс.
    Только вот js движек от этого лучше не стал.
     
     
  • 6.42, Аноним (-), 00:55, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Рекомендую 52-ю версию FF Разница и улучшения поразительны Особо тем у кого оп... большой текст свёрнут, показать
     
     
  • 7.47, Имя (?), 01:44, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > не нравиться... становиться... сталкиваються

    http://tsya.ru/
    Неужели это так сложно?

     
     
  • 8.51, vdb (?), 03:27, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    171 Що вони роблять -- Лежать 187 Это не лечится ... текст свёрнут, показать
     
  • 2.53, Lain_13 (ok), 18:18, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не совсем так.
    Смысл в том, что они выкинули черновую компиляцию байткода на мороз и сразу выполняют оный на виртуальной машине, а в процессе подменяют критичные блоки на оптимизированный машинный код… как и раньше. О виртуальной машине они сказали, что скорость отличается незначительно. Оптимизировать жу лечше того, что уже было, тоже не просто и даже если добавили новые оптимизации, то прирост там самый минимальный.
    Т.е. в основном изменится не скорость исполнения, а скорость запуска кода. Это важно для крупных веб-приложений вроде того же gmail.
     
  • 2.55, Sen (?), 13:52, 22/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ошибочка, просто вернутся к нормальному интерпретатору, а всё требующее быстродействия будут пихать в NaCl;)
     

  • 1.2, Аноним (-), 13:02, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    ох и отхлебнем хаках из чаши с новой архитектурой.
     
     
  • 2.31, rshadow (ok), 19:11, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Интерпритатор же координально не меняется. Все должно быть нормально.

    А любители хаков должны страдать, да.

     

  • 1.3, username (??), 13:08, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Регистровой, ну вот, опять..
     
     
  • 2.6, Crazy Alex (ok), 13:20, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    И за что такая нелюбовь?
     
  • 2.21, Аноним (-), 16:10, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    регистровая лучше стековой.
     
     
  • 3.48, Аноним (-), 02:00, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    да да, мы уже видели .net и jvm
     

  • 1.10, Shichael Migorin (?), 14:07, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Спасибо гуглу за то что действительно развивают свой браузер а не пихают туда всякую фигню, создавая видимость работы
     
     
  • 2.13, Нониус (?), 14:22, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Спасибо гуглу за то что действительно развивают свой браузер а не пихают
    > туда всякую фигню, создавая видимость работы

    Ну да, с мобильника анонимно зайти можно? Подминают как тот трактор всех.

     
     
  • 3.14, Нониус (?), 14:27, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Модеры, вы дети.
    Научитесь жить не категориями.
     
  • 3.33, rshadow (ok), 19:16, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Дык смысл прокси в браузере если ДНС и все остальное в открытую ходит. Рутуй телефон, настраивай tor/vpn/iptables ...

    Прокси в браузере это чтобы сайты открывать забаненные сами знаете кем, а не приватность. Исключение только tor browser. Все остальное это желание идеального сферического коня в вакууме от программ которые к этому даже не стремятся.

     
     
  • 4.43, Crazy Alex (ok), 01:21, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Смысл в том, что сайт вместо настоящего IP что-то левое видит. Ваш К.О.
     

  • 1.24, Aleksdem (ok), 16:52, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Убрали бы эту бесовщину совсем и пусть делают нормальные сайты, не требующие гигабайты памяти при открытии главной страницы. :)
     
     
  • 2.27, Аноним (-), 17:32, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Зачем ускорять интерпретаторы? Надо наоборот их замедлять, чтобы снова back to 70s, когда надо было каждый байтик экономить. Повысило бы дисциплину. Все бы думали по сто раз, прежде чем объявлять еще одну переменную, когда можно поменять местами значения двух числовых переменных без использования третьей.

    Такова логика ретроградов вроде Aleksdem.

     
     
  • 3.28, Aleksdem (ok), 18:09, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пусть и ретроград, но как-то не улыбается покупать новый комп только потому, что на старом тормозит браузер. При этом полезной и интересной информации больше не становится. Хотят плевать на оптимизацию - ок, но почему за мой счёт то? И за ваш, кстати. Чай не с компов 10-летней давности сидите. :)

    Типа как в шутке "Почему денег нет у них, а держаться должен я?" :)

     
     
  • 4.30, Аноним (-), 18:51, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Хотят плевать на оптимизацию - ок, но почему за мой счёт то?

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

     
  • 4.36, Отражение луны (ok), 20:41, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ты видишь проблему в том месте, где она отсутствует.
    Яваскрипт быстр, его компиляция не сжирает много памяти. Его ускоряют просто потому что могут. Память жрется в основном на ресурсы: картинки, текст, разметка, DOM, css, кучи объектов, обслуживающих весь этот зоопарк. И все это - следствие использования HTML вместо нормального языка разметки.
     
     
  • 5.44, Crazy Alex (ok), 01:25, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Если б не было бы в браузере JS - DOM API и кучи хуков, с ним связанных, тоже не было бы. Статическая разметка, которую никто менять не будет - штука довольно дешевая и маложручая, да и перерендерить можно на любой чих.

    Хотя HTML, конечно, урод, с этим не спорю.

     
     
  • 6.52, Аноним (-), 14:23, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Если б не было бы в браузере JS

    Давай сразу к первоисточнику. Если бы не было вселенной, то никаких проблем бы не было сейчас с тормозными браузерами.

     
  • 3.29, Аноним (-), 18:10, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И я бы не сказал, что она хреновая.
     
  • 2.34, rshadow (ok), 19:19, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дык давно такое есть. Сайты называются: "книги", "журналы", "газеты". Пользуйся на здоровье. Потребление оперативной памяти и проца на компе = 0.
     
     
  • 3.45, Crazy Alex (ok), 01:26, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ты перепутал "документ, а не программу" с "хренью, из которой удобно информацию не извлечёшь".
     

  • 1.38, Аноним (-), 21:08, 15/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фаерфокс бы этим занялся.
     
     
  • 2.40, Анончик (?), 23:30, 15/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >Фаерфокс бы этим занялся.

    Фаерфокс занят хромированием.

     
     
  • 3.41, Аноним (-), 00:12, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У нас в проекте (имя проекта могу назвать по требованию - оно достаточно популярно) все анимации полностью отключены в файрфоксе из-за его тормознутости. В хроме всё анимируется, даже в Internet Explorer не без анимаций. А в файрфоксе отключены. Почему? Потому что сейчас мы на той планете, где Internet Explorer рисует анимации быстрее файрфокса.

    Файрфокс сдает хрому и... Internet Explorer'у даже в таких простейших вещах, как одновременное выставление блоку float: right и margin-right: Npx. Специальный css-селектор body.is-firefox (добавляется яваскриптом) у нас используется чаще, чем, скажем, body.is-ie9. В JavaScript некоторые участки также пишутся с учетом существования двух разных групп браузеров: "не-файрфокс" и "файрфокс".

     
     
  • 4.46, Crazy Alex (ok), 01:27, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Так что же за проект?
     
  • 4.49, жульмере хешельбекельме (?), 02:30, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Все правильно делаете, у нас точной такой же подход!
     
  • 4.54, abi (?), 14:42, 17/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Спасибо, что даёте возможность работать без наносной дёргающейся шелухи хотя бы пользователям FF
     
  • 3.50, жульмере хешельбекельме (?), 02:32, 16/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Яичек
     

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



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

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