Sobes.tech
Middle

Dartda turli xil kompilyatsiya turlarining qanday farqi bor?

sobes.tech AI

AIdan javob

Dart foydalanish holatiga qarab bir nechta kompilatsiya rejimini qo'llab-quvvatlaydi:

  1. AOT (Oldindan) Kompilyatsiya:

    • Mobil (iOS, Android), ish stoli (Windows, macOS, Linux) va server platformalari uchun yuqori samarali mahalliy ilovalar yaratish uchun ishlatiladi.
    • Kod ishga tushirishdan oldin mashina kodiga kompilyatsiya qilinadi.
    • Tez ishga tushish va yuqori samaradorlikni ta'minlaydi.
    • Ilovalar chiqarish versiyalarini qurishda (flutter build) ishlatiladi.
    • Hot Reload (Yoqiladigan yangilash)ni qo'llab-quvvatlamaydi.
  2. JIT (Just-In-Time) Kompilyatsiya:

    • Rivojlantirish jarayonida tez iteratsiya sikli uchun ishlatiladi.
    • Kod ish vaqtida mashina kodiga kompilyatsiya qilinadi.
    • Hot Reload va Hot Restartni qo'llab-quvvatlaydi, holatni saqlab qoladi.
    • Rivojlantirish davomida tezkor fikr-mulohaza beradi.
    • Debug rejimida (flutter run) ishga tushirilganda ishlatiladi.
    • AoT ga nisbatan kamroq samarali va ishga tushirish sekinroq bo'ladi, chunki kompilyatsiya ish vaqtida amalga oshiriladi.
  3. Dart2js:

    • Dart kodini optimallashtirilgan JavaScript fayliga aylantiradigan kompilyator.
    • Brauzerda ishlaydigan veb-ilovalar yaratish uchun ishlatiladi.
    • Katta, ammo yuqori darajada optimallashtirilgan JS faylini ishlab chiqaradi.
  4. Dart Dev Compiler (DDC):

    • Tez inkremental kompilyator, Dart kodini JavaScriptga aylantiradi.
    • Brauzerda tez iteratsiya va debugging uchun ishlatiladi.
    • Bir nechta JS fayllarini ishlab chiqaradi, ular debugging uchun osonroq, ammo Dart2js ga nisbatan kamroq optimallashtirilgan.
    • Brauzerda asl Dart kodini debugging qilish uchun Source Mapsni qo'llab-quvvatlaydi.

Asosiy farqlar jadvalda qisqacha:

Xususiyat AoT Kompilyatsiya JIT Kompilyatsiya Dart2js Dart Dev Compiler (DDC)
Qo'llanilishi Release (Mobil/Desktop) Rivojlantirish (Mobil/Desktp) Veb (Release) Veb (Rivojlantirish)
Kompilyatsiya vaqti Ishga tushirishdan oldin Ishga tushirish davomida Ishga tushirishdan oldin Ishga tushirishdan oldin
Ishga tushish tezligi Tez Sekinroq JSga bog'liq Tez
Samaradorlik Yuqori Pastroq Yuqori Pastroq
Chiqish hajmi Optimallashtirilgan Kod + Virtual mashina Optimallashtirilgan Bir nechta fayl
Hot Reload Yo'q Ha Yo'q Qisman (WebDev)
Chiqish Nativ mashina kodi Mashina kodi (JIT) JavaScript JavaScript

Kompilyatsiya rejimini tanlash maqsadli platforma va rivojlantirish bosqichiga (rivojlantirish yoki chiqarish) bog'liq.