JIT (just-in-time compilation; dinamik çeviri olarak da bilinir;) çalıştırmanın bir yoludur. Yürütülmeden önce bir program yürütülürken çalışma zamanında derleyici içerir. Genellikle bu, kaynak kodu ve daha sonradan makine diline bytecode kod çevirisini içerir ve bu kod doğrudan doğruya çalıştırılır. Bir JIT derleyicisi uygulayan bir sistem genellikle yürütülen kodu sürekli olarak analiz eder, daha sonra derleme veya tekrar derlemeden elde edilen hızlanmanın bu kodun derlenmesinin yükünden daha ağır olacağı kod bölümlerini tanımlar.
JIT derlemesi, makine koduna çevirı için iki geleneksel yaklaşımın birleşimidir - zamanında hazırlama derlemesi (AOT derlemesi) ve yorumlayıcı. Her ikisini de bazı avantaj ve dezavantajlarını birleştirir. Kabaca, JIT derlemesi, yorumlayıcı esnekliği ile derlenmiş kodun hızını, bir yorumlayıcının yükü ve derlemenin ilave yükü ile birleştirir. JIT derlemesi bir biçimidir ve gibi izin verir. Bu nedenle teori olarak JIT derlemesi statik derlemeden daha hızlı yürütülebilir. Yorumlama ve JIT derleme, çalışma zamanı sistemi geç veri türlerini işleyebileceğinden ve güvenlik garantilerini uygulayabildiğinden dinamik programlama dilleri için özellikle uygundur.
Uygulamalar
JIT derlemesi bazı programlara uygulanabilir veya belirli kapasitelerde, özellikle düzenli ifadeler gibi dinamik kapasitelerde kullanılabilir. Örneğin, bir metin editörü, daha hızlı bir eşlemeye izin vermek için makine koduna çalışma zamanında sağlanan normal bir ifadeyi derleyebilir; bu, yalnızca çalışma zamanında desen sağlandığından vaktinden önce yapılamaz. Birkaç modern çalışma zamanı ortamı, Microsoft'un .NET Framework sistemiy'le birlikte çoğu Java uygulaması da dahil olmak üzere, yüksek hızlı kod çalıştırma için JIT derlemesine güvenmektedir. Benzer şekilde, birçok düzenli ifade kütüphanesi bayt kodu veya makine kodu için düzenli ifadelerin JIT derlemesini içerir. Makine kodunu bir CPU mimarisinden diğerine çevirmek için bazı emülatörlerde JIT derlemesi de kullanılır.
JIT derlemesinin ortak bir uygulaması ilk olarak bayt koduna (sanal makine kodu) AOT derleme, bayt kodu derleme olarak bilinir ve bayt kodunun yorumlanması yerine makinenin koduna (dinamik derleme) JIT derlemesine sahiptir. Bu, derlemeden kaynaklanan gecikme pahasına yorumlama ile karşılaştırıldığında çalışma zamanı performansını artırır. JIT derleyicileri tercümanlarda olduğu gibi kesintisiz olarak tercüme eder, ancak derlenmiş kodun önbelleğe alınması verili bir çalıştırma sırasında aynı kodun gelecekteki yürütülmesinde gecikmeyi en aza indirir. Programın yalnızca bir kısmı derlendiğinden, tüm program çalıştırılmadan önce derlenenden daha az gecikme var.
Genel bakış
Bir bayt kodu derlenmiş sistemde, kaynak kodu bayt kodu olarak bilinen bir ara gösterime dönüştürülür. Bytecode, herhangi bir bilgisayar için makine kodu değildir ve bilgisayar mimarileri arasında taşınabilir olabilir. Bayt kodu daha sonra bir sanal makineden yorumlanabilir veya sanal makinede çalıştırılabilir. JIT derleyicisi bayt kodlarını birçok bölümde okur ve bunları dinamik olarak makine koduna derler; böylece program daha hızlı çalışabilir.
Bu, dosya başına, işlev başına veya herhangi bir keyfi kod parçası üzerinde yapılabilir; kod yürütüldüğünde (dolayısıyla "tam zamanında" adı alır) derlenebilir, ardından önbelleğe alınır ve daha sonra yeniden derlemeye gerek duymadan yeniden kullanılabilir.
JIT kodu genelde tercümanlardan daha iyi bir performans sunar. Buna ek olarak, bazı durumlarda, statik derlemeden daha iyi bir performans sunabilir; çünkü birçok optimizasyon yalnızca çalıştırma zamanında yapılabilir:
- Derleme hedeflenen CPU'ya ve uygulamanın çalıştığı işletim sistemi modeline göre optimize edilebilir. Örneğin, JIT, CPU'nun desteklediğini algıladığında SSE2 vektör işlemci talimatlarını seçebilir. Bununla birlikte, şu anda bunu gerçekleştiren ana akım JIT yoktur. Statik bir derleyici ile bu seviyede optimizasyon özgüllüğünü elde etmek için, her bir amaçlanan platform / mimari için bir ikili derleme veya kodun bir bölümünün birden çok versiyonunu tek bir ikili içine dahil etmesi gerekir.
2. Sistem, programın içinde bulunduğu ortamda gerçekte nasıl çalıştığına ilişkin istatistikleri toplayabilir, optimum performans için yeniden düzenleyebilir ve yeniden derleyebilir. Bununla birlikte, bazı statik derleyiciler, profil bilgilerini girdi olarak da alabilir.
3. Sistem, dinamik bağlantı avantajlarını kaybetmeden ve statik derleyiciler ve bağlayıcılara özgü genel giderler olmadan küresel kod optimizasyonlarını (örn., Kütüphane işlevlerinin dahil edilmesi) yapabilir. Özellikle, genel satır içi ikameleri yaparken, statik bir derleme işlemi, çalışma zamanı kontrollerine ihtiyaç duyabilir. Nesnenin gerçek sınıfı satır içi yöntemi geçersiz kılarsa ve dizi erişimlerine ilişkin sınır koşul kontrollerinin işlenmesi gerekebileceğinde sanal bir çağrı olmasını sağlarlar. Çoğu durumda zamanında derleme ile bu işlemler döngülerin dışına taşınabilir, bu da genellikle yüksek hız artışları sağlar.
4. Bu, statik olarak derlenmiş çöp toplama dilleri ile mümkün olsa da, bir bayt kodu sistemi yürütülen kodu, daha iyi önbellek kullanımı için daha kolay bir şekilde yeniden düzenleyebilir.
Microsoft'un Native Image Generator (Ngen) hizmeti, ilk gecikmeyi azaltmada başka bir yaklaşım yapır. Ngen, Ortak Ara Dil görüntüsünde makine yerel koduna bayt olarak önceden derleme yapar. Sonuç olarak, çalışma zamanı derlemesine gerek yoktur. Microsoft Visual Studio 2005 ile birlikte gelen .NET framework 2.0, kurulumdan hemen sonra tüm Microsoft kitaplık DLL'lerinde Ngen'i çalıştırır. Bununla birlikte, profil destekli statik olarak derlenen kodun aşırı durumlarda JIT tarafından derlenmiş kod kadar iyi olamayacağı aynı sebeplerden ötürü JIT'lenmiş kodun kalitesi kadar iyi olmayabilir.
Bir AOT (zaman öncesi) derleyiciyi bir JIT derleyicisi (Excelsior JET) veya tercüman () ile birleştiren Java uygulamaları da mevcuttur.
Kaynakça
- ^ "Arşivlenmiş kopya". 21 Nisan 2018 tarihinde kaynağından . Erişim tarihi: 5 Şubat 2018.
- ^ . 6 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 6 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 6 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 7 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 6 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 14 Mayıs 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 6 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ "Arşivlenmiş kopya". 5 Şubat 2018 tarihinde kaynağından . Erişim tarihi: 5 Şubat 2018.
- ^ . 5 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Şubat 2018.
- ^ (PDF). 29 Haziran 2016 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 5 Şubat 2018.
Dış bağlantılar
- JIT 5 Şubat 2018 tarihinde Wayback Machine sitesinde .
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
JIT just in time compilation dinamik ceviri olarak da bilinir calistirmanin bir yoludur Yurutulmeden once bir program yurutulurken calisma zamaninda derleyici icerir Genellikle bu kaynak kodu ve daha sonradan makine diline bytecode kod cevirisini icerir ve bu kod dogrudan dogruya calistirilir Bir JIT derleyicisi uygulayan bir sistem genellikle yurutulen kodu surekli olarak analiz eder daha sonra derleme veya tekrar derlemeden elde edilen hizlanmanin bu kodun derlenmesinin yukunden daha agir olacagi kod bolumlerini tanimlar JIT derlemesi makine koduna ceviri icin iki geleneksel yaklasimin birlesimidir zamaninda hazirlama derlemesi AOT derlemesi ve yorumlayici Her ikisini de bazi avantaj ve dezavantajlarini birlestirir Kabaca JIT derlemesi yorumlayici esnekligi ile derlenmis kodun hizini bir yorumlayicinin yuku ve derlemenin ilave yuku ile birlestirir JIT derlemesi bir bicimidir ve gibi izin verir Bu nedenle teori olarak JIT derlemesi statik derlemeden daha hizli yurutulebilir Yorumlama ve JIT derleme calisma zamani sistemi gec veri turlerini isleyebileceginden ve guvenlik garantilerini uygulayabildiginden dinamik programlama dilleri icin ozellikle uygundur UygulamalarJIT derlemesi bazi programlara uygulanabilir veya belirli kapasitelerde ozellikle duzenli ifadeler gibi dinamik kapasitelerde kullanilabilir Ornegin bir metin editoru daha hizli bir eslemeye izin vermek icin makine koduna calisma zamaninda saglanan normal bir ifadeyi derleyebilir bu yalnizca calisma zamaninda desen saglandigindan vaktinden once yapilamaz Birkac modern calisma zamani ortami Microsoft un NET Framework sistemiy le birlikte cogu Java uygulamasi da dahil olmak uzere yuksek hizli kod calistirma icin JIT derlemesine guvenmektedir Benzer sekilde bircok duzenli ifade kutuphanesi bayt kodu veya makine kodu icin duzenli ifadelerin JIT derlemesini icerir Makine kodunu bir CPU mimarisinden digerine cevirmek icin bazi emulatorlerde JIT derlemesi de kullanilir JIT derlemesinin ortak bir uygulamasi ilk olarak bayt koduna sanal makine kodu AOT derleme bayt kodu derleme olarak bilinir ve bayt kodunun yorumlanmasi yerine makinenin koduna dinamik derleme JIT derlemesine sahiptir Bu derlemeden kaynaklanan gecikme pahasina yorumlama ile karsilastirildiginda calisma zamani performansini artirir JIT derleyicileri tercumanlarda oldugu gibi kesintisiz olarak tercume eder ancak derlenmis kodun onbellege alinmasi verili bir calistirma sirasinda ayni kodun gelecekteki yurutulmesinde gecikmeyi en aza indirir Programin yalnizca bir kismi derlendiginden tum program calistirilmadan once derlenenden daha az gecikme var Genel bakisBir bayt kodu derlenmis sistemde kaynak kodu bayt kodu olarak bilinen bir ara gosterime donusturulur Bytecode herhangi bir bilgisayar icin makine kodu degildir ve bilgisayar mimarileri arasinda tasinabilir olabilir Bayt kodu daha sonra bir sanal makineden yorumlanabilir veya sanal makinede calistirilabilir JIT derleyicisi bayt kodlarini bircok bolumde okur ve bunlari dinamik olarak makine koduna derler boylece program daha hizli calisabilir Bu dosya basina islev basina veya herhangi bir keyfi kod parcasi uzerinde yapilabilir kod yurutuldugunde dolayisiyla tam zamaninda adi alir derlenebilir ardindan onbellege alinir ve daha sonra yeniden derlemeye gerek duymadan yeniden kullanilabilir JIT kodu genelde tercumanlardan daha iyi bir performans sunar Buna ek olarak bazi durumlarda statik derlemeden daha iyi bir performans sunabilir cunku bircok optimizasyon yalnizca calistirma zamaninda yapilabilir Derleme hedeflenen CPU ya ve uygulamanin calistigi isletim sistemi modeline gore optimize edilebilir Ornegin JIT CPU nun destekledigini algiladiginda SSE2 vektor islemci talimatlarini secebilir Bununla birlikte su anda bunu gerceklestiren ana akim JIT yoktur Statik bir derleyici ile bu seviyede optimizasyon ozgullugunu elde etmek icin her bir amaclanan platform mimari icin bir ikili derleme veya kodun bir bolumunun birden cok versiyonunu tek bir ikili icine dahil etmesi gerekir 2 Sistem programin icinde bulundugu ortamda gercekte nasil calistigina iliskin istatistikleri toplayabilir optimum performans icin yeniden duzenleyebilir ve yeniden derleyebilir Bununla birlikte bazi statik derleyiciler profil bilgilerini girdi olarak da alabilir 3 Sistem dinamik baglanti avantajlarini kaybetmeden ve statik derleyiciler ve baglayicilara ozgu genel giderler olmadan kuresel kod optimizasyonlarini orn Kutuphane islevlerinin dahil edilmesi yapabilir Ozellikle genel satir ici ikameleri yaparken statik bir derleme islemi calisma zamani kontrollerine ihtiyac duyabilir Nesnenin gercek sinifi satir ici yontemi gecersiz kilarsa ve dizi erisimlerine iliskin sinir kosul kontrollerinin islenmesi gerekebileceginde sanal bir cagri olmasini saglarlar Cogu durumda zamaninda derleme ile bu islemler dongulerin disina tasinabilir bu da genellikle yuksek hiz artislari saglar 4 Bu statik olarak derlenmis cop toplama dilleri ile mumkun olsa da bir bayt kodu sistemi yurutulen kodu daha iyi onbellek kullanimi icin daha kolay bir sekilde yeniden duzenleyebilir Microsoft un Native Image Generator Ngen hizmeti ilk gecikmeyi azaltmada baska bir yaklasim yapir Ngen Ortak Ara Dil goruntusunde makine yerel koduna bayt olarak onceden derleme yapar Sonuc olarak calisma zamani derlemesine gerek yoktur Microsoft Visual Studio 2005 ile birlikte gelen NET framework 2 0 kurulumdan hemen sonra tum Microsoft kitaplik DLL lerinde Ngen i calistirir Bununla birlikte profil destekli statik olarak derlenen kodun asiri durumlarda JIT tarafindan derlenmis kod kadar iyi olamayacagi ayni sebeplerden oturu JIT lenmis kodun kalitesi kadar iyi olmayabilir Bir AOT zaman oncesi derleyiciyi bir JIT derleyicisi Excelsior JET veya tercuman ile birlestiren Java uygulamalari da mevcuttur Kaynakca Arsivlenmis kopya 21 Nisan 2018 tarihinde kaynagindan Erisim tarihi 5 Subat 2018 6 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 6 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 6 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 7 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 6 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 14 Mayis 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 6 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 Arsivlenmis kopya 5 Subat 2018 tarihinde kaynagindan Erisim tarihi 5 Subat 2018 5 Subat 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 5 Subat 2018 PDF 29 Haziran 2016 tarihinde kaynagindan PDF arsivlendi Erisim tarihi 5 Subat 2018 Dis baglantilarJIT 5 Subat 2018 tarihinde Wayback Machine sitesinde