Прокачуємо JavaScript за допомогою TurboFan

Привіт, Хабр! Щось давно ми не говорили про Google Chrome і простих веб-технологія. Давайте це виправимо.



Як вам всім, напевно, відомо, екосистема JavaScript розвивається відразу в декількох напрямках. Серед основних змін можна виділити, наприклад, прогрес в основних стандартах мови — недавнє закріплення норм ECMAScript 2015. Крім таких серйозних змін, розвивається мова й у безлічі маленьких експериментів — наприклад — Strong Mode.

Само собою, для забезпечення зростаючих потреб і підтримки нових технологій необхідний новий, гнучкий динамічний (just-in-time) компілятор, і ми старанно працювали над ним для нашого JavaScript-движка V8.

TurboFan (прим.: кодове ім'я нового компілятора) створений «з нуля», і в процесі розробки ми враховували нові можливості JavaScript. TurboFan вміє оптимізувати більше коду і робить це успішніше, ніж попередній JIT-компілятор, що підтримує гнучкі та динамічні режими оптимізації. Крім того, новий компілятор написаний з урахуванням накопиченого досвіду по CrankShaft'у, а значить, його стане набагато простіше підтримувати і покращувати. Завдяки цим та деяким іншим особливостям ми навчили працювати TurboFan з тими видами коду, які кинули серйозний виклик попереднього компілятору. Проблеми з оптимізацією були у asm.js, літералів класів, областей видимості (scopes), обчислюваних властивостей і циклів for-of.

У поточному виконанні новий динамічний компілятор вже показує багатообіцяючий зростання продуктивності, в тому числі збільшення результатів zLib-тесту в бенчмарку Octane на 29%.


TurboFan працює для деяких видів коду в Google Chrome починаючи з версії 41, прискорюючи як традиційний контент, так і деякі можливості, які забезпечуються новими технологіями в JavaScript.

З часом ми плануємо підключати до нового компілятору виконання все більшого числа різного коду JavaScript, і, в кінцевому підсумку, повністю замінити CrankShaft, прискоривши виконання мільйонів вже написаних рядків коду і готових скриптів. Залишайтеся на зв'язку, скоро розповімо дещо ще. ;)

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.