EMZETT.
Войти

AOT-компиляция

Коротко: AOT («Ahead of Time») переводит программу в машинный код ещё до запуска, вместо того чтобы интерпретировать её во время выполнения или переводить JIT.

Подробнее: C, C++, Rust и Go классически работают так. Языки с виртуальной машиной тоже предлагают AOT, например GraalVM Native Image для Java или .NET Native AOT.

Подробности

  • Преимущества: Быстрый запуск, нет прогрева, часто меньше памяти, простая поставка без среды выполнения.
  • Недостатки: Пиковая производительность может уступать JIT, использующему реальные данные времени выполнения. Динамические возможности вроде рефлексии требуют настройки заранее.
  • Применение: Бессерверные функции и контейнеры, где важен холодный старт, а также утилиты командной строки.
  • Смешанные формы: Оптимизация по профилю (PGO) подаёт AOT-компилятору измерения пробного запуска. Angular и Dart используют AOT для быстрых веб-приложений.
  • Привязка к платформе: Результат работает только на целевой архитектуре.

См. также: промежуточное представление и оптимизация компилятора