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