Як виконується наш JavaScript код? Виділю декілька ключових фаз.
- Перетворення в байт-код;
- Виконання;
- Оптимізація
З пунктом 1 все зрозуміло.
Пункт 2. V8 або інший рантайм ранить байт-код і збирає статистику його використання.
Пункт 3. Тут, на основі зібраної статистики використання нашого коду, будуються припущення, як його можна оптимізувати. Тобто виводяться типи наших змінних і на основі цього відбувається компіляція в машинний код.
Таким чином ми бачимо, що для того, щоб привести наш JS до максимально ефективного представлення, потрібен час, щоб зібрати статистику використання нашого коду. Далі, провести аналіз, зробити певні припущення, на основі яких виконати оптимізації й компілювати наш код в машинний.
Це все можливо було б спростити, якшо б у нас типи були з самого старту, тобто, ми б могли привести наш JS до максимально ефективної форми швидше. Можливо навіть без шару байт-коду, а одразу білдити машинний код на основі типів.
До речі, це не нова ідея — до нинішньої архітектури V8 (Ignition + TurboFan) був V8 (Crankshaft), який якраз і робив компіляцію одразу з JavaScript до машинного коду. Це приводило до певних проблем, але пост не про це.
Тому статична типізація у JavaScriptс дає нам:
- Те, за що ми так любимо TypeScript, тільки без TypeScript.
- Перфоманс, бо рантайму стане значно легше оптимізувати наш код.
Цей текст взято з особистого блогу після отримання дозволу автора.
Favbet Tech – це ІТ-компанія зі 100% українською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологій та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Цей матеріал – не редакційний, це – особиста думка його автора. Редакція може не поділяти цю думку.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: