Heuristic kodlarında performans denetimi için YourKit
Jan 30th, 2009 by Haluk Akın
Yöneylem problemlerini çözmek için heuristiclere sıkça başvurulur. Heuristic kodlarında performans denetimi oldukça önemlidir. İyi bir denetlemeyle kodun süresel performansını 10 ila 100 kat, hatta bazen daha bile fazla arttırmak mümkün olacaktır. Bu gibi denetleme işlemlerini yapmak için kullanılan yazılımlara “profiler” denir.
Java’da yazdığım bazı heuristicleri denetlemek için geçtiğimiz hafta YourKit isimli java profiler‘ı kullanmaya başladım. YourKit sayesinde kodlarımda tahmin etmeyeceğim yerlerde darboğazlar buldum ve bu darboğazları giderince süresel performansta büyük artış oldu.
YourKit’in özellikle üç özelliği fazlasıyla önemli:
1. Eclipse ile entegre çalışıyor
2. CPU süresinde method bazlı profiling yapıyor
3. Hafıza kullanımını ayrıntılı olarak denetliyor
Eclipse ile entegrasyonu aşağıdaki şekilde görebilirsiniz. Tıpkı debug ya da normal run yapar gibi profiling yapmaya başlayabiliyoruz. Zaten hali hazırda ayarlamış olduğumuz run configurasyonlarımız otomatik olarak profiling’e hazır bekliyorlar.

Aşağıdaki şekil YourKit’in hafıza profiling ekranından bir kesit gösteriyor. Kırmızı çizgi o anda Java Virtual Machine’de bize ayrılan toplam hafızayı gösteriyor.
Mavi çizgiyse anlık olarak kullandığımız hafızayı gösteriyor. Limit olarak yazan 1.6GB Java Virtual Machine’e maximum heap size olarak belirttiğimiz hafıza.
Eğer yazılımınızda heap memory’yi aştığınıza dair hata alıyorsanız bu ekran genel olarak hafıza kullanımınızı takip etmek için bire bir.

Son ama bir diğer çok önemli özellik de CPU profiling. CPU’nun ne zaman ne kadarını kullandığımızı bu özellik sayesinde görüyoruz. Hangi metodun ne kadar süre harcadığını, CPU’nun yüzde kaçının kullanıldığını bu ekranda görüyoruz.

Fiyatı da çok yüksek sayılmaz. Bütün üniversitede geçerli olacak akademik lisansları sadece 999$’a satıyorlar. Tekil lisanslar 135$ dolarla öğrenci bütçesine pek uygun değil şüphesiz ama fonu olan araştırma projelerinde çok da büyük bir maliyet sayılmaz.
Özet olarak java profiler gerçekten çok faydalı bir ürün. Özellikle heuristic kodlayan yöneylemciler için gerçekten çok faydalı. Ayrıca sadece java değil .net profiling özelliği de var.
