Сегодня мы представляем вам Коленвал ок.
переулок ), новая инфраструктура компиляции для V8, движка JavaScript Google Chrome. Используя агрессивную оптимизацию, Crankshaft значительно повышает производительность ресурсоемких приложений JavaScript — зачастую более чем в два раза! Это делает веб-страницы и приложения, использующие сложный код, более отзывчивыми и быстрыми для пользователей.
Давайте сравним производительность Chrome с Crankshaft и без него на стандартный набор тестов V8 :
Больше всего Crankshaft улучшает тесты Richards, DeltaBlue и Crypto. Это показывает, что мы ускорили операции доступа к свойствам объектов, арифметические операции, тяжелые циклы и вызовы функций.
В целом, Crankshaft улучшает производительность V8 на 50% в этом наборе тестов.
Это самый большой прорыв с момента выпуска Chrome в 2008 году:
Помимо увеличения пиковой производительности, измеренной в тестах, Crankshaft также ускоряет время инициализации веб-приложений, таких как GMail. Наш тест перезагрузки страницы показали, что Crankshaft ускоряет загрузку страниц со значительным объемом кода JavaScript на 12%.
Crankshaft использует адаптивную компиляцию для улучшения времени запуска и максимальной производительности.
Идея состоит в том, чтобы существенно оптимизировать код, который выполняется часто, и не тратить время на оптимизацию кода, который выполняется нечасто.
Из-за этого тесты, которые выполняются за несколько миллисекунд (например, SunSpider), покажут лишь небольшое ускорение при использовании Crankshaft. Чем больше приложение, тем больше эффект от нового двигателя.
Коленчатый вал состоит из четырех основных компонентов:
- Базовый компилятор используется для всего кода.
Работает быстро и не требует сложных оптимизаций.
Basic в два раза быстрее, чем V8 в Chrome 9, и создает на 30 % меньше кода.
- Профилировщик , который отслеживает процесс выполнения и находит «горячие» участки кода, выполнение которых занимает больше всего времени.
- Оптимизирующий компилятор , который перекомпилирует выявленные «горячие» участки кода.
Он использует Подача SSA для таких оптимизаций, как перемещение или удаление инвариантов цикла , линейное сканирование [1] и встраивание .
Оптимизирующий компилятор использует информацию, собранную при выполнении исходной версии кода.
- Поддержка деоптимизации , благодаря чему оптимизирующий компилятор может свободно делать свои оценки относительно полезности отдельных оптимизаций.
Если предположения, использованные компилятором для выбора той или иной оптимизации, окажутся неверными, то можно вернуться к выполнению кода, полученного базовым компилятором.
Работа над сборками для ARM и 64-битных архитектур уже ведется.
Мы довольны скоростью выполнения JavaScript-кода, которой мы достигли с помощью Crankshaft. Crankshaft предоставляет отличную инфраструктуру для дальнейшего ускорения V8, и мы продолжим улучшать производительность JavaScript для веб-приложений следующего поколения.
Кевин Милликин, инженер-программист, и Флориан Шнайдер, инженер-программист [1] Спасибо мралеф позади уточнения к переводу .
Теги: #Chromium #Google Chrome #V8 #коленчатый вал #JavaScript
-
Что Нужно Знать Перед Соинвестированием
19 Oct, 24 -
Созданы Наушники С «Карманом» Для Ipod
19 Oct, 24