AOT-компіляція
Коротко: AOT («Ahead of Time») перекладає програму на машинний код ще до запуску, замість того щоб інтерпретувати її під час виконання чи перекладати JIT.
Докладніше: C, C++, Rust і Go класично працюють так. Мови з віртуальною машиною теж пропонують AOT, наприклад GraalVM Native Image для Java чи .NET Native AOT.
Подробиці
- Переваги: Швидкий запуск, немає прогріву, часто менше пам’яті, проста поставка без середовища виконання.
- Недоліки: Пікова продуктивність може поступатися JIT, що використовує реальні дані часу виконання. Динамічні можливості на кшталт рефлексії потребують налаштування наперед.
- Застосування: Безсерверні функції та контейнери, де важливий холодний старт, а також утиліти командного рядка.
- Змішані форми: Оптимізація за профілем (PGO) подає AOT-компілятору вимірювання пробного запуску. Angular і Dart використовують AOT для швидких вебзастосунків.
- Прив’язка до платформи: Результат працює лише на цільовій архітектурі.
Див. також: проміжне подання та оптимізація компілятора