Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

TJIT

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
TJIT, (tracing just-in-time compilation veya "izlenen JİT derlemesi") bir programın çalışma zamanında yürütülmesinin program optimizasyonunu yapmak için sanal makineler tarafından kullanılan bir tekniktir. Bu, sık yürütülen işlemlerin doğrusal bir sırasını kaydetmek, bunları yerel makine dili koduna derlemek ve yürütmek suretiyle yapılır. Bu yöntem bazında çalışan geleneksel just-in-time (JIT) derleyicilere karşıdır. Genel bakış Just-in-time derleme, bir programın parçalarını çalışma zamanında makine koduna derleyerek programların yürütme hızını artırmak için kullanılan bir tekniktir. Farklı JIT derleyicileri kategorize etmenin bir yolu derleme kapsamı gereğidir. Yöntem tabanlı JIT derleyicileri bir seferde tek bir yöntemi çevirmeyle makine koduna çevirirken, JIT'leri izleme sıklıkla yürütülen döngüleri derleme birimi olarak kullanır. İzleme JIT'leri, programların zamanlarının çoğunu programın bazı döngülerinde ("sıcak döngüler") geçirdiği (kontrol akışı) ve sonraki döngü yinelemelerinin benzer yolları genellikle kullandığı varsayımlarına dayanır. JIT izleme özelliğine sahip sanal makineler çoğunlukla karma mod yürütme ortamlarıdır, yani izleme JIT'ine ek olarak bir yorumlayıcıya veya yöntem derleyicisine sahip oldukları anlamına gelir. Teknik detaylar Bir izleme JIT derleyicisi, çalışma zamanında çeşitli aşamalardan geçmektedir. İlk olarak, döngüler için profil bilgileri toplanır. Sıcak bir döngü tanımlandıktan sonra, o döngünün yürütülen tüm işlemleri kaydeden özel bir izleme modu girilir. Bu işlem dizisine bir iz denir. İz daha sonra optimize edilmekte ve makine koduna derlenmektedir. Bu döngü tekrar çalıştırıldığında, derlenmiş iz, program karşılığı yerine çağrılır. Bu adımlar aşağıda ayrıntılı olarak açıklanmıştır: 1) Profillemenin amacı, "sıcak döngü"leri tanımlamaktır. Bu genellikle her döngü için yineleme sayısını sayarak yapılır. Bir döngü sayımı belirli bir eşiği aştıktan sonra döngü "sıcak" kabul edilir ve izleme modu girilir. 2) İzleme aşamasında, döngü normalde yürütülü, ancak ek olarak her yürütülen işlem iz içine kaydedilir. Kaydedilen işlemler çoğu zaman bir ara temsilci formunda saklanır. İzleme, işlev çağrılarını izler ve izlemeye yönlendirilirler. İzleme, döngü sona erene kadar devam eder ve başlangıca geri döner. İz aşağıdaki döngüden bir somut yürütme yolu ile kaydedildiğinden, o iz daha sonra o yoldan ayrılabilir. Bunun olabileceği yerleri belirlemek için ize özel koruma talimatları eklenir. Muhafız, orijinal durumun hala geçerli olup olmadığını belirlemek için hızlı bir kontroldur. Bir muhafız başarısız olursa, iz yürütülmesi durdurulur. 3) Optimizasyon ve kod üretme aşaması - İzleme yürütme sırasında yapıldığından, çalışma zamanı bilgilerini (örneğin, çalışma zamanı tür bilgileri) içerecek şekilde yapılabilir. Bu bilgi daha sonra kod verimliliğini artırmak için optimizasyon aşamasında kullanılabilir. İzlerin optimize edilmesi kolaydır, çünkü bunlar yalnızca bir yürütme yolunu temsil eder, bu da hiçbir kontrol akışı mevcut olmadığı ve hiçbir işleme ihtiyacı olmadığı anlamına gelir. Tipik optimizasyonlar, sabit alt ifade kaldırma, ölü kod eleme, kayıt tahsisi, değişmez kod hareketi, sabit katlama ve kaçış analizi içerir. Optimizasyon sonrasında, iz makine koduna dönüştürülür. Optimizasyona benzer şekilde, izlerin doğrusal doğası nedeniyle bu kolaydır. İz, makine koduna derlendikten sonra, döngünün sonraki iterasyonlarında yürütülebilir. Izleme işlemi, başarısız oluncaya kadar devam eder. Tarihi JIT fikirleri 1960'lı yıllaradek uzanırken, JIT'lerin izlenmesi daha yeni kullanılmaya başlamıştır. Günümüzün JIT'leri izleme fikrine benzer bir fikir 1970 yıllarda çıktı. Derlenmiş kodun, yorumlama sırasında gerçekleştirilen eylemleri basitçe depolayarak çalışma zamanında bir yorumlayıcıdan türetilebileceği gözlemlendi. İzlemenin ilk uygulaması Dynamo, "işlemci üzerinde yürütülen yerel talimat akışının performansını şeffaf bir şekilde geliştiren bir yazılım dinamik optimizasyon sistemi" dir. Bunu yapmak için, yerel yönerge akışı "sıcak" bir yönerge sırası bulunana kadar yorumlanır. Bu sıralama için optimize edilmiş bir sürüm oluşturulur, önbelleğe alınır ve yürütülür. Dinamo daha sonra DinamoRIO'ya aktarıldı. Bir DinamoRIO tabanlı proje, izleme ve kısmi değerlendirmeyi birleştiren bir tercüman yapısı için bir çerçeve idi. "Dil uygulamalardan tercüman yükünü dinamik olarak kaldırmak" için kullanıldı. 2006'da, üst düzey bir dil için ilk izleme JIT derleyicisi olan HotpathVM geliştirildi. HotpathVM'nin motivasyonu, kaynak kısıtlı mobil cihazlar için verimli bir JVM'ye sahip olmaktı. Bir izleme JIT örneği Mozilla Firefox için JavaScript uygulamalardan biri olan TraceMonkey'dir (SpiderMonkey). TraceMonkey sıklıkla yürütülen döngü izlerini çalışma zamanında dinamik dil JavaScript'inde derler ve oluşturulan kodu her bir yolda gerçekleşen gerçek dinamik türler için uzmanlaştıracaktır. JIT'leri takip eden bir diğer proje PyPy'dir. PyPy'nin çeviri araç zinciri ile yazılmış olan dil uygulamaları JIT'lerin izlenmesini kullanmayı mümkün kılar ve böylece o tercüman kullanılarak yürütülen herhangi bir programın performansını arttırır. Bu, tercüman tarafından yürütülen program yerine, tercümanın kendisini izleyerek mümkündür. JIT'leri izleme, Ortak Ara Dil (CIL) için SPUR projesinde Microsoft tarafından keşfedildi. SPUR, bir JavaScript uygulaması izlemek için de kullanılabilen CIL için genel bir izleyici idi. Kaynakça Kategori:Derleyici yapımı Kategori:Yazılım optimizasyonu Kategori:Programlama dilleri
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri