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

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

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

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

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

15.02.2014

Похожие записи