.NET'in CLR, CTS ve JIT derleyicileri

Önceki yazýmýzda "dot NET" platformu konusuna giriþ yapmýþtýk.(Yazýyý okumak için týklayýn) Burada ise daha detaylý olarak .NET kavramlarýný inceleyeceðiz ve .NET'le Java'nýn karþýlaþtýrýldýðý bir testin sonuçlarýna yer vereceðiz.

.NET platformunda istediðimiz programlama dili ile program yazabileceðimizi önceki yazýmýzda söylemiþtik. Bunun için tek þart, kullandýðýmýz dilin .NET için yazýlmýþ olan bir derleyicisine ihtiyacýmýz olduðudur. .NET uyumlu programlama dili oluþtururken belirli standartlara uyulmasý gerekir. Bu standartlar CLS (Common Language Specifications - Dillerin ortak özellikleri) ile belirlenmiþtir. CTS(Common Type System) ise veri tipleri, nesneler, arayüzler ve programlama dillerine ait özellikleri tanýmlar ve CLS'in bir parçasý olarak karþýmýza çýkar. CLS'de tanýmlanmýþ kurallara uymak þartý ile istersek kendi programlama dilimizi dahi geliþtirebiliriz veya herhangi bir dili .NET platformunda uygulama geliþtirmek üzere deðiþtirebiliriz.

CLR ,programlarýmýzý deðiþik þekilde derleyebilir. Varsayýlan derleme türü JIT(Just IN TIME- çalýþam anýnda derleme) 'dýr. Program çalýþýrken daha önce derlenmemiþ bir parçasýna gelince hemen o kýsmý da derler ve bunu hafýzda chach'e koyar. Tekrar ayný program parçasýný çalýþtýrmak gerekirse burayý hafýzadan çalýþtýrýr. Eðer RAM 'imizi yeteri kadar büyükse, programýn tamamý derlenmiþ ve hafýzada depolanmýþ durumda olabilir. Bu durumda programýmýz çok hýzlý çalýþýr.

Hafýzamýzýn yeteri kadar büyük olmadýðý durumlarda EconoJIT (Ekonomik JIT) derleyicisini kullanabiliriz. Bu derleyici ile programýn derlenmiþ kýsýmlarý hafýzada depolanmaz ve her seferinde ayný program parçasý derlenir. Tabi ki bu derleyici normal JIT'e göre programlarýmýzý daha yavaþ çalýþtýrýr. Ama RAM 'imizi çok daha az kullanýr.

CLR ile gelen üçüncü derleyicimiz PreJIT(ön JIT derleyicisi) ise derleme iþini program çalýþmadan önce yapar ve tüm makine kodlarýný bir yerde saklar. Çalýþma anýnda çok hýzlý olan programýmýz diðer JIT derleyicileriyle derlenmiþ olanlara nazaran çok hýzlý çalýþýr.

Kolayca görebileceðimiz birkaç noktaya da parmak basmak istiyorum. .NET ile yazdýðýnýz programlar diðerlerine göre yavaþ çalýþýr. Çünkü iki defa derleme aþamasýndan geçerler, program kodu MSIL'ye, MSIL ise makine koduna çevrilir. Diðer taraftan .NET ile programlarýmýz platform baðýmsýz olacak, .NET uyumlu herhangi bir dil ile program geliþtirebileceðiz ve programýmýz CLR altýnda daha güvenli bir þekilde çalýþacaktýr.

.NET perfromans testi linkindeki sonuçlara göre : Genelde C# Java'dan 3.30 kat daha hýzlý. C# Visual C++ 6.0'dan ise 3.11 kat daha hýzlý çalýþýyor. Hatta VB.NET kodu VB 6.0'a nazaran 46.45 kat daha hýzlý çalýþýyor. :-)