AOT derlemesi - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Çalışma zamanı yükünün azaltılması
  • 2 Performans
  • 3 Örnek
  • 4 Kaynakça
  • 5 Dış bağlantılar
  • 6 Ayrıca bakınız

AOT derlemesi

  • Català
  • Čeština
  • English
  • Español
  • فارسی
  • Suomi
  • Français
  • Հայերեն
  • 한국어
  • Português
  • Русский
  • Simple English
  • Slovenščina
  • Українська
  • 粵語
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Programın yürütülmesi
Genel kavramlar
  • Kod
  • Dönüştürülme
    • Derleyici
      • Derleme zamanı
    • Optimizing compiler
  • Intermediate representation (IR)
  • Execution
    • Çalıştırma sistemi
      • Runtime
    • Executable
    • Yorumlayıcı
    • Sanal makina
Kod çeşitleri
  • Kaynak kodu
  • Hedef kodu
  • Bytecode
  • Makina kodu
  • Mikrokod
Derleme stratejileri
  • (Zamanın-önünde) (Ahead-of-time) (AOT)
  • Tam-zamanında (Just-in-time) (JIT)
    • Tracing just-in-time(TJIT)
    • Compile and go system
  • Önderleme
  • Transderleme
  • Yenidenderleme
Kaydadeğer çalışmazamanları (runtime)
  • Android Runtime (ART)
  • BEAM (Erlang)
  • Common Language Runtime (CLR) ve Mono
  • CPython and PyPy
  • crt0 (C target-specific initializer)
  • Java sanal makinesi (JVM)
  • LuaJIT
  • Objective-C and Swift's
  • V8 and Node.js
  • Zend Engine (PHP)
Kaydedeğer derleyiciler & araç setleri
  • GNU Compiler Collection (GCC)
  • LLVM and Clang
  • MSVC

AOT derlemesi (Ahead-of-time compilation) C veya C++ gibi daha üst düzey bir programlama dili, Java bytecode veya .NET Framework Ortak Ara Dil (Common Intermediate Language, CIL) kodu gibi bir ara temsilciliğin yerli (sisteme bağlı) bir makine diline derleme eylemidir.[1] Sonuçta ortaya çıkan ikili dosya yerel olarak çalıştırılabilir.[2]

AOT, standart bir yerli derleyici gibi makine tarafından optimize edilmiş kodlar üretir. AOT, mevcut bir sanal makinenin (virtual machine, VM) bayt kodunu makine koduna çevirir.[3]

Çalışma zamanı yükünün azaltılması

[değiştir | kaynağı değiştir]

Bir ara temsil olarak derlenebilir bir yönetilen kodun çalışma zamanı olan bazı programlama dilleri, (JIT) derleme kullanır. Kısaca, ara kod yürütülürken, bir uygulamanın performansını yavaşlatan ara kod, yerel bir çalışma için makine koduna derlenir. Önceden hazırlanan derleme, yürütme aşamasından ziyade yürütmeden önce bu adımı atma ihtiyacını ortadan kaldırır.[4]

Dinamik olarak yazılan diller için yerli makine koduna veya diğer statik VM bayt koduna öncül derleme yalnızca sınırlı sayıda mümkündür. Örneğin, Yüksek Performanslı Erlang Projesi (HiPE) AOT derleyicisi, Erlang dili için gelişmiş statik tipte yeniden yapılandırma teknikleri ve tip spekülasyonları nedeniyle yapılabilir.[5]

Çoğu durumda, tamamen AOT tarafından derlenmiş programlar ve kütüphanelerle, bir çalıştırma ortamının yararlı bir bölümünü düşürmek, böylelikle disk alanı, bellek, pil ömrü ve başlatma sürelerini (JIT ısınma aşaması yok) azaltmak vb. işlemler mümkündür. Bu, gömülü veya mobil cihazlarda yararlı olabilir.

Performans

[değiştir | kaynağı değiştir]

AOT derleyicileri, çoğu durumda JITing'in çok pahalı olduğu düşünülen karmaşık ve gelişmiş kod optimizasyonlarını gerçekleştirebilirler. Bunun aksine, AOT genellikle JIT'de, çalışma zamanı profilli yönlendirmeleri, sahte sabit yayılımı veya dolaylı sanal işlevi yerleştirme gibi bazı optimizasyonları gerçekleştiremez.[6]

Ayrıca, JIT derleyicileri spekülatif olarak kod üzerinde varsayımlar yaparak sıcak kod optimize edebilir. Daha sonra spekülatif bir varsayım kanıtlarsa, üretilen kodun deoptize edilmesi mümkündür. Bu işlem, kodun uyarlanabilir optimizasyonla yeniden optimize edilene kadar çalışan yazılımın performansını yavaşlatır. Bir AOT derleyicisi böyle varsayımlar yapamaz ve derleme zamanında olabildiğince çok bilgiyi çıkarması gerekir.[7] Daha az uzmanlaşmış bir koda başvurmaya ihtiyacı vardır, çünkü bir yöntemle hangi türlerin geçeceğini bilmiyor. Bu gibi sorunlar, profil yönlendirmeli optimizasyonlar ile hafifletilebilir. Ancak bu durumda bile, oluşturulan kod, JIT derleyicisinin yaptığı gibi değişen çalışma zamanı profiline dinamik olarak adapte edilemez.

Örnek

[değiştir | kaynağı değiştir]

Android mobil işletim sistemi, JIT derleyicisi kullanan bir sanal makine olan Dalvik ile 2008'de teslim edildi.[8] 2013'te yerini AOT derlemesi kullanan yeni bir sanal makine olan Android Runtime yerini aldı, ancak 2017'de Runtime bir JIT derleyicisi aldı.[9]

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ "Arşivlenmiş kopya". 22 Mayıs 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  2. ^ "Arşivlenmiş kopya". 12 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  3. ^ "Arşivlenmiş kopya". 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  4. ^ "Arşivlenmiş kopya". 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  5. ^ "Arşivlenmiş kopya". 12 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  6. ^ "Arşivlenmiş kopya". 7 Aralık 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  7. ^ "Arşivlenmiş kopya". 12 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  8. ^ "Arşivlenmiş kopya". 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 
  9. ^ "Arşivlenmiş kopya". 12 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Şubat 2018. 

Dış bağlantılar

[değiştir | kaynağı değiştir]
  • AOT IBM 5 Şubat 2018 tarihinde Wayback Machine sitesinde arşivlendi.

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  • asm.js (JavaScript)
  • Bartok (CIL)
  • Excelsior JET (Java)
  • GNU Compiler for Java
  • IL2CPU (CIL)
  • NGen (CIL)
  • RubyMotion (Ruby)
  • SharpOS AOT (CIL)
"https://tr.wikipedia.org/w/index.php?title=AOT_derlemesi&oldid=33636636" sayfasından alınmıştır
Kategori:
  • Derleyiciler
Gizli kategori:
  • Webarşiv şablonu wayback bağlantıları
  • Sayfa en son 12.45, 9 Ağustos 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
AOT derlemesi
Konu ekle