Günümüzde gelişen teknoloji ile birlikte artık çok çekirdekli bilgisayarların kullanımı yaygınlaşmaya başladı. Microsoft ise .NET Framework 4.5 ‘te teknolojinin bu gelişiminden yararlanmamızı sağlayacak yeni özellikler eklemeyi ihmal etmemiş. Bunlardan birisi de Multicore JIT derleme özelliğidir. Bu özellik sayesinde yeni CLR, çok çekirdekli işlemcilerden faydalanarak uygulamalarımızın açılış hızını arttırabilmektedir.

Peki Nasıl?

Uygulamalarımızın normal açılış senaryosu şu şekildedir. Yönetilebilir uygulamamız başlatılır, daha sonra JIT derleyicisi tüm metodları binary olarak derler ve programımız çalıştırılır. Tüm bu işlemler sıralı olarak gerçekleştirilmektedir.

Multicore JIT Compiling

Resimde de görüldüğü üzere .NET 4.5 ile beraber gelen Multicore JIT derleyecisi farklı bir işlemcide paralel olarak çalışarak derleme işlemini gerçekleştirir. Aynı zamanda main thread ise başlangıç metodlarını çalıştırır. ProfileOptimization sınıfı da başlangıç sırasında çalışması gereken metodları belirler. Kod tarafındaki kullanımına bakacak olursak oldukça basit olduğunu göreceksiniz.

ProfileOptimization.SetProfileRoot(AppDomain.CurrentDomain.BaseDirectory);  
ProfileOptimization.StartProfile("StartupProfile.bin");  

Yukarıdaki kod bloğunda öncelikle optimizasyon profilinin kaydedileceği klasörü belirtiyoruz. Alt satırdaki kodda ise profil dosyasının kaydedileceği ismi belirtiyoruz. Geri kalanını Multicore JIT derleyicisi sizin yerinize hallediyorJ Uygulamamızı çalıştırdıktan sonra belirtmiş olduğumuz klasörde profil dosyasının oluştuğunu görebilirsiniz.

Profile File

Önemli Noktalar

Multicore JIT ile ilgili bilinmesi gereken birkaç önemli nokta bulunmaktadır. Bunlardan en önemlisi Multicore JIT, metodların çalışma sırasını değiştirmemektedir. Derleme sırasında optimizasyon yaparak uygulamanın ilk açılışta çalıştırması gereken metodları belirler ve sonraki açılışta profil dosyasından bu bilgileri okuyup derleme işlemini gerçekleştirir. Bir diğer husus da eğer uygulama çalışırken profil dosyasını bulamaz, herhangi bir nedenden dolayı okuyamaz ya da tek çekirdekli bir sistemde çalıştırılırsa normal senaryodaki çalışma şekliyle devam edecektir.

Referans: .NET Framework Team Blog

About the Author