Ana Sayfa
Forumlar
Hakkımızda
Yükleniyor. Lütfen bekleyin ...
Kategoriler
ASP.NET
ADO.NET
Visual Basic .NET
Visual C# .NET
Visual Studio ve Araçlar
Windows Server System
Office System
.NET Framework
SQL Server
XML Web Servisleri
Yazılım Güvenliği
Yazılım Mühendisliği
Mobil Teknolojileri
Dynamics
Smart Client
Expression Studio
Silverlight
Kod Parçaları
Açık Kaynak Kodlu Uygulamalar
İş Zekası
Windows Mobile Embedded
0
Çıkış Yap
Üyelik Bilgilerimi Güncelle
Seminerlerim
Favorilerim
Ajanım
Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda
İstatistikler
En son kayıt olan üye:
mervelif
Şuanki online üyeler (
12
) :
asmin8001
,
mso101
,
ersintarhan
,
metegroup
,
kuyruk
,
umitakpinar
,
april_0507
,
mathsdas
,
ganymedes
,
takula
,
muzafferdiler
,
zcoskun
Visual Studio ve Araçlar Kategorisi
»
Visual Studio 2008 Team Suite ile kod verimliliği üzerine çalışma: Performance Wizard
Visual Studio 2008 Team Suite ile kod verimliliği üzerine çalışma: Performance Wizard
Print Versiyonu
Yazar:
Cenk Özpay
Tarih:22.09.2008
Puan:
3
(Oy Kullanan:
2
)
Okuma Sayısı:
352
Makaleyi İşaretle
Makale Özeti
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.
Makale
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
Makaleyi nasıl buldunuz?
Makaleyi nasıl buldunuz?
Çok Kötü
Çok Yararlı
Görüşleriniz : (opsiyonel)
v2.4
Geri Bildirim (Feedback)
Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
Yazgelistir.Com Ekibi - 2006 -
Yazgelistir.com