Ana içeriğe geç

JIT derleme

Just-in-Time Compilation

İngilizcesi
JIT Compilation
Türkçe karşılığı
anında derleme
Okunuşu
cit

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/jit-compilation

Kısaca

JIT derleme, programın en sık çalışan kısımlarını çalışma anında makine koduna çevirerek yorumlayıcının hızlı açılışını derlenmiş kodun hızıyla birleştirir.

JIT derleme nedir?

Just-in-time (JIT) derleyici, çalışan bir programın içinde iş görür. Program, kodu hemen çalıştırabilen bir yorumlayıcıyla başlar; bu sırada çalışma ortamı her fonksiyonun ve döngünün kaç kez çalıştığını sayar. Hot, yani çok sık çalıştığı anlaşılan kod, işlemcinin anladığı makine koduna derlenir ve sonraki çağrılar bu daha hızlı sürümü kullanır.

Program çalışırken derlediği için bir JIT derleyici, gerçekte olan duruma göre optimizasyon yapabilir: bir fonksiyon hep sayılarla çağrılıyorsa, sayılara özel kod üretebilir. Bu tahmin sonradan yanlış çıkarsa çalışma ortamı optimize edilmiş kodu atar ve daha yavaş koda geri döner; buna deoptimizasyon denir. Chrome ve Node.js'teki V8, Java HotSpot sanal makinesi ve .NET hep böyle çalışır; genellikle hızlıdan çok optimize edilmişe uzanan birkaç kademeleri vardır.

JIT derleme, iki klasik yaklaşımın arasında durur. C, Go ve Rust'taki gibi ahead-of-time (AOT) derleme her şeyi program çalışmadan önce çevirir; düz bir yorumlayıcı ise hiçbir şeyi önceden çevirmez. JIT'in bedeli ısınma süresi ve bellektir: kod derlenene kadar yavaştır. Bu yüzden kısa süre çalışan programlar ve iOS uygulamaları gibi çalışma anında kod üretmeyi yasaklayan platformlar AOT kullanır. Python 3.13 sürümünde deneysel bir JIT derleyici ekledi.

Önemli noktalar

  • JIT derleyici, sık çalışan kodu program çalışırken makine koduna çevirir.
  • Programlar bir yorumlayıcıyla başlar; hot kod buna değdiğini gösterince derlenir.
  • Çalışma anında gördükleri, JIT'in kodu özelleştirmesini ve bir tahmin tutmadığında deoptimizasyon yapmasını sağlar.
  • Bedeli ısınma süresi ve bellektir; ahead-of-time derleme ikisinden de kaçınır.

Örnek

Node.js'te V8'in sık çalışan bir fonksiyonu derlemesini izlemekjavascript
// Run with: node --trace-opt hot.js
function add(a, b) {
  return a + b;
}

let sum = 0;
for (let i = 0; i < 1e6; i++) {
  sum = add(sum, i); // a million calls make add "hot"
}
console.log(sum); // 499999500000

// Among V8's log lines, add is compiled by Maglev, then by TurboFan:
// [marking … <JSFunction add …> for optimization to MAGLEV, …, reason: hot and stable]
// [marking … <JSFunction add …> for optimization to TURBOFAN_JS, …, reason: hot and stable]

Sık sorulan sorular

JIT derleme, ahead-of-time derlemeden daha mı hızlı?

Genel olarak hayır. Ahead-of-time derlenmiş programlar hızlı açılır ve çalışırken derleyiciye ihtiyaç duymaz. JIT daha yavaş başlar ama çalışma anında gördüklerini kullanabilir; bu yüzden sunucular gibi uzun süre çalışan programlarda ahead-of-time koda yetişebilir, hatta bazen onu geçebilir. Hangisinin kazanacağı iş yüküne bağlıdır.

Python'ın JIT derleyicisi var mı?

Standart CPython, 3.13 sürümünde varsayılan olarak kapalı, deneysel bir JIT derleyici ekledi. Alternatif bir Python gerçekleştirimi olan PyPy ise yıllardır JIT kullanıyor ve saf Python kodunu çoğu zaman birkaç kat daha hızlı çalıştırıyor.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar