Sobes.tech
Middle

AOT-kompilyasiya nədir?

sobes.tech Süni İntellekt

AI-dan cavab

AOT-kompilyasiya (İlkin-Əvvəlki Vaxt Kompilyasiyası) — proqramın mənbə kodunun və ya bayt-kodunun tətbiqin işə salınmasından əvvəl maşın koduna çevrilməsi prosesidir.

Əsas xüsusiyyətlər:

  • İşə başlamadan əvvəl yerinə yetirilir: Kompilyasiya bir dəfə yerinə yetirilir, JIT (Just-In-Time) kompilyasiyasından fərqli olaraq, bu işə salınma zamanı baş verir.
  • İcra edilə bilən fayl yaradılması: Nəticə, hədəf arxitektura və əməliyyat sisteminə xas olan icra edilə bilən fayldır.
  • İşə salınma zamanı kompilyasiya mərhələsinin olmaması: Bu, iş zamanı kompilyasiya ilə əlaqəli əlavə xərcləri aradan qaldırır.

Üstünlüklər:

  • Daha sürətli işə başlamaz vaxtı: Proqram dərhal işləməyə hazırdır, JIT kompilyasiyasının gecikməsiz.
  • Optimizasiya: Kompilyator bütün proqram əsasında daha aqressiv optimizasiyalar edə bilər, yalnız müəyyən hissələrdə deyil.
  • Əvvəlcədən proqnozlaşdırılan performans: JIT mərhələsinin olmaması, "isti" vəziyyətin qarşısını alır və daha stabilliklə cavab vaxtını təmin edir.
  • İş zamanı resurs tələblərinin azaldılması: JIT kompilyatorunu yaddaşda saxlamağa və onun işini yerinə yetirməyə ehtiyac yoxdur.
  • Fayl ölçüsünün kiçilməsi: Bəzi hallarda, AOT ilə kompilyasiya olunmuş proqramlar daha kiçik ola bilər, çünki onlar JIT kompilyator və əlaqəli meta məlumatları ehtiva etmir.

Əksikliklər:

  • Daha uzun kompilyasiya vaxtı: Proses əhəmiyyətli vaxt ala bilər.
  • Dinamik optimizasiyaların olmaması: Real vaxtda yerinə yetirməyə və profilə əsaslanan optimizasiyaları tətbiq etmək mümkün deyil.
  • Xüsusi ikili faylların yaradılması: Hər bir hədəf platforması üçün ayrıca kompilyasiya tələb olunur.
  • Daha böyük ikili fayl ölçüsü: Bəzən, AOT bütün zəruri kod və asılılıqları daxil etdiyi üçün ölçünü artıra bilər.

İstifadə nümunələri:

  • .NET Native
  • OpenJDK (GraalVM Native Image)
  • Go
  • Rust
  • Bəzi JavaScript çərçivələri (məsələn, Angular ilə AOT)

AOT kompilyasiyası tez-tez başlanğıc vaxtı kritik olan, proqnozlaşdırılan performans tələb edən və ya məhdud resurslara malik cihazlara yerləşdirmə üçün istifadə olunur.