-
Visual Studio 2008 Team Suite ile kod verimliliği üzerine çalışma: Performance Wizard
-
Visual Studio
2008 Team Suite’deki “Analyze” menüsü bu sürüm ile gelen yeni özellikleri
içeriyor. Bunlardan kanımca en önemlilerinden biri olan Performance Wizard
(Türkçesi herhalde “Verim Sihirbazı” olur) konusunda bilgi vermeyi amaçlıyorum.
Makalem başlangıç düzeyinde olacaktır, detay bilgiyi daha sonraki makalelerde
vermeyi planlıyorum.
-
-
Bütün kod
geliştiren kişiler zaman içinde uygulamalarında yavaşlık gözlemleyebilirler. Bu
yavaşlığın iki sebebi olabilir; kod içinden erişilen diğer kaynaklardaki
sorunlar veya kod içinde bulunan döngüler ve yanlış kodlama yöntemleri.
-
-
Verim Sihirbazı
bu iki durumu gözlemleyebileceğiniz araçlar sunuyor. Bu kısımda öncelikle
“Instrumentation” yöntemi üzerinde duracağım.
-
-
Örneğimiz
aşağıdaki basit konsol uygulamasından oluşuyor.
-
namespace
PerformanceApplication
-
{
-
class Program
-
{
-
static void
Main(string[] args)
-
{
-
YavasIs();
-
-
for (int i =
0; i < 10; i++)
-
{
-
DahaYavas();
-
}
-
}
-
-
private static
void YavasIs()
-
{
-
for (int i =
0; i < 10; i++)
-
{
-
System.Threading.Thread.Sleep(300);
-
}
-
}
-
-
private static
void DahaYavas()
-
{
-
for (int i =
0; i < 10; i++)
-
{
-
System.Threading.Thread.Sleep(50);
-
}
-
}
-
}
-
}
-
-
Öncelikle
Analyze menüsünden Launch Performance Wizard menü adımını seçiyoruz.
Karşımıza 3 adımlı bir görev sihirbazı çıkıyor:
-
1.
İlk ekranda solution içerisindeki projeleri içeren bir liste geliyor. Bu
listeden herhangi bir projeyi seçebilirsiniz. Çoğunlukla ASP.Net veya
executable(Exe) projelerininde izleme yapılacağını düşünüyorum. Örneğimizde
PerformanceApplication’ı seçip Next tuşuyla devam edin.
-
2.
İkinci ekranda
Sampling ve Instrumentation seçimleri var, sampling
daha uzun izleme senaryoları için kullanılabilir ama daha az veri toplar,
Instrumentation daha fazla veri toplar. Biz burada Instrumentation seçip devam
tuşuna basıyoruz.
-
3.
Bilgilendirme sayfasıdır, Finish tuşuna basıp sonlandırın.
-
-
Sonuç olarak Performance
Explorer adında bir ekran açılır. Bu ekranda ilk başta Target olarak seçtiğimiz
proje ve raporların görüntülendiği bir ağaç yapısıdır.
-
Uygulamayı
PerformanceApplication üzerinde sağ mouse tuşunda gelen menüde Launch with
Profiling seçerek başlatıyoruz.
-
Output ekranına dikkat
ederseniz Performance Explorer ekranında Projeniz açılırken oluşturulan dll’ler
yedeklenir ve instrumentation yapılacak yeni dll imajları oluşturulur. Bazı
küçük fonksiyonlar gözardı edilebilir, bunları sonuç raporunda
göremeyebilirsiniz. Profiling yaptığınız sürece aspx sayfası veya windows
ekranlarında yapılan her türlü işlemi veya konsol uygulamanızın akışı süresince
çalışan bütün metodlar boyunca kayıt alır ve uygulamayı kapattığınızda bir rapor
oluşturarak ekranda gösterir.
-
İlk bakacağımız
yerlerden birisi özet ekranı. En fazla çağırılan metodlar, ne fazla zaman alan
metodlar burada listelenir. Daha sonra Current view’dan Functions’ı
seçin. Burada da bütün fonksiyonlar çalışma zamanları, çalışma zaman yüzdeleri,
çalışma sayıları şeklinde detay veri olarak gözlemlenebilir.
-
-
Functions ekranındaki
kolonları açıklaması için ekteki adresi inceleyebilirsiniz.
http://msdn.microsoft.com/en-us/library/ms242747.aspx
-
-
Benim Functions
ekranında en çok kullandığım birkaç kolon var.
-
1.
Elapsed Exclusive Time %: Metodun çalışmasında kullanılan % zaman.
-
2.
Elapsed Inclusive Time %: Metodun ve altındaki diğer metodların çalışmasında
kullanılan % zaman.
-
3.
Elapsed Exclusive Time: Metodun çalışmasında kullanılan toplam zaman.
-
4.
Elapsed Inclusive Time: Metodun ve altındaki diğer metodların çalışmasında
kullanılan toplam zaman.
-
5.
Number of Calls: Metodun kaç defa çalıştırıldığı
-
-
Elapsed Exclusive Time %
sıralanarak en çok zaman alan metodlar gözlemlenebilir. Eğer bir metot programın
toplam çalışma süresinin çok büyük kısmını kullanıyorsa burada bir sorun
olabilir. Hedef olarak ilk 5 satırı inceleyin ve bunların zamanlarını azaltmaya
çalışın. İkinci işlem olarak Number of Calls kolonunu azalan olarak
sıralatın, eğer bir metot çok fazla çağırılıyorsa burada da bir problem söz
konusu olabilir.
-
- Örneğimizde
bizim Sleep metodunu çok fazla kullandığımız ve programın % 99,9 oranında bu
fonksiyonu çalıştırdığı ortaya çıkıyor. Baş sorumlumuzu bulduk! Esas olarak 110
defa çağırılan bu metot ve 10 defa çağırılan ve toplam 8 saniyelik sürenin 5
saniyesini harcayan DahaYavas metodu üzerine çalışma yapmamız gerekmektedir.
-
-
-
Özet olarak Verim
Sihirbazı ile yavaş çalışan işlerimizin içine bakma fırsatı yakalıyoruz. Bir
sonraki makalede daha ileri yöntemleri nasıl kullanabiliriz bunu inceleyeceğiz.
-
İyi günler
-
-
Cenk Okan ÖZPAY
|