Sobes.tech
Middle

Čo je AOT-kompilácia?

sobes.tech AI

Odpoveď od AI

AOT (Ahead-of-Time) kompilácia je proces prevodu zdrojového kódu programu alebo bajtkódu na strojový kód pred spustením.

Kľúčové rozdiely oproti JIT (Just-In-Time) kompilácii:

  • Čas kompilácie: Prebieha vopred, často počas fázy zostavovania aplikácie.
  • Výkon: Strojový kód je pripravený na okamžité spustenie, čo môže zlepšiť čas štartu a maximálny výkon, pretože počas behu nie sú žiadne dodatočné náklady na kompiláciu.
  • Veľkosť spustiteľného súboru: Môže byť väčší, pretože obsahuje celý skompilovaný strojový kód.
  • Závislosť od platformy: Výsledný strojový kód je špecifický pre cieľovú architektúru procesora a operačný systém.

Príklady použitia:

  • C/C++, Rust, Go (predvolené).
  • .NET (Native AOT, ReadyToRun).
  • Java (GraalVM Native Image).
  • Angular (pre časť klienta webových aplikácií).

Výhody:

  • Rýchly štart
  • Potenciálne vyšší maximálny výkon
  • Zníženie spotreby zdrojov počas behu (bez JIT kompilátora)
  • Zlepšená bezpečnosť (bez dynamickej kompilácie)

Nevýhody:

  • Zvýšený čas kompilácie
  • Väčšia veľkosť spustiteľného súboru
  • Ťažkosti s reflexiou a dynamickým kódom v niektorých prípadoch
  • Závislosť od platformy

Príklad použitia v .NET:

dotnet publish -c Release -r win-x64 /p:PublishAot=true
# Publikuje samostatnú aplikáciu s AOT kompiláciou pre Windows x64

Príklad použitia GraalVM:

native-image -jar myapp.jar
# Vytvára nativný spustiteľný súbor z archívu JAR