Bazı İyi .NET Profilcileri Nelerdir?


374

.Net programlarıyla çalışırken hangi profiller kullandınız ve hangilerini özellikle tavsiye edersiniz?

Yanıtlar:


285

Ben kullandım JetBrains dotTrace ve Redgate KARINCALAR yoğun. Özellikler ve fiyat bakımından oldukça benzerler. Her ikisi de yararlı performans profili ve oldukça temel bellek profili sunar.

dotTrace, IDE'den tek bir tıklama ile bir birim testinin performansını profili oluşturabileceğiniz için gerçekten kullanışlı olan Resharper ile entegre olur. Ancak, dotTrace genellikle sahte sonuçlar veriyor gibi görünüyor (örneğin, bir yöntemin çalıştırılması birkaç yıl sürdüğünü söylemek)

ANTS'in profil oluşturma sonuçlarını sunma şeklini tercih ederim. Size kaynak kodunu gösterir ve her satırın solunda ne kadar zaman geçmesi gerektiğini gösterir. dotTrace ağaç görünümündedir.

EQATEC profil oluşturucu oldukça basittir ve daha sonra EQATEC profil düzenleyicide çalıştırılabilen, montajlarınızın özel enstrümanlı sürümlerini derlemenizi gerektirir. Ancak, ücretsizdir.

Genel olarak performans profili oluşturma için ANTS'yi tercih ediyorum, ancak Resharper kullanıyorsanız, dotTrace'in entegrasyonu bir katil özelliktir ve ANTS'yi kullanılabilirlik içinde yenmesi anlamına gelir.

Ücretsiz Microsoft CLR Profiler ( .Net framework 2.0 / .Net Framework 4.0 ) .NET bellek profili oluşturma için tek ihtiyacınız olan şeydir.

2011 Güncellemesi:

Scitech hafıza profilci oldukça temel bir UI ama dotTrace ve KARINCALAR yoksun yönetilmeyen belleğe bazı bilgiler gibi yararlı bilgilere çok var - bunu yararlı COM birlikte çalışma yapıyorsanız bulabilir, ama COM kılan herhangi Profilcinin bulmak için henüz hafıza sorunları teşhis etmek kolaydır - genellikle patlamanız gerekir windbg.exe.

ANTS profili oluşturucusu son birkaç yıldır sıçramalara başladı ve bellek profili oluşturucusu, tahminimde bir paket olarak dotTrace'i öne çıkaran bazı gerçekten kullanışlı özelliklere sahip. Her ikisi için de lisansa sahip olduğum için şanslıyım, ancak hem performans hem de bellek için bir .Net profiler satın alacaksanız, ANTS yapın.


5
Visual Studio'daki profil oluşturucunun kullanımı da gerçekten kolaydır, Visual Studio 2010 Beta sürümündedir ve bu nedenle de ücretsizdir. 2010 yılında çekişmeyi ve eşzamanlılığı görüntülemek için birçok iyileştirme yapıldı. deneyin ...
Rick

15
@Rick Maalesef Visual Studio'nun profili Profesyonel Sürüm'de mevcut değil ...
Drake

CLR profil oluşturucunun .NET bellek profili oluşturma için ihtiyacınız olan her şey olduğu konusunda kesinlikle katılmıyorum, ancak zamanınıza değer vermezseniz doğru olabilir. Bellek profillerinin en iyi çiftlerinin bir özeti için aşağıdaki cevabım bakın - bellek sızıntılarını ve olası sorunları çok daha hızlı bulmanıza yardımcı olacaklar .
Ben Robbins

1
EQUATEC profil oluşturucusunun mevcut sürümleri artık ücretsiz değil.
David Schmitt

1
EQATEC

88

Diğerleri performans profillemesini kapsadı, ancak bellek profili ile ilgili olarak şu anda hem Scitech .NET Memory Profiler 3.1 hem de ANTS Memory Profiler 5.1'i (Eylül 2009'dan itibaren geçerli sürümler) değerlendiriyorum. JetBrains'i bir ya da iki yıl önce denedim ve karıncalar (bellek profili oluşturmak için) kadar iyi değildi, bu yüzden bu kez rahatsız etmedim. Web sitelerini okurken , diğer ikisi ile aynı bellek profili oluşturma özelliklerine sahip görünmüyor .

Hem KARINCALAR hem de Scitech bellek profili oluşturucu, diğerinin sahip olmadığı özelliklere sahiptir, bu yüzden en iyisi tercihlerinize bağlıdır. Genel olarak konuşursak, Scitech olan daha ayrıntılı bilgi sağlarken ANTS olanı sızdıran nesneyi tanımlama konusunda gerçekten inanılmaz. Genel olarak, ANTS birini tercih ediyorum çünkü olası sızıntıları tanımlamak çok hızlı.

İşte deneyimlerimin her birinin artıları ve eksileri:

ANTS ve Scitech .NET Memory Profiler'in Ortak Özellikleri

  • Gerçek zamanlı analiz özelliği
  • Web sitelerinde mükemmel nasıl yapılır videoları
  • Kullanımı kolay
  • Makul performans (profil oluşturucu olmadan daha yavaş, ancak çok fazla hayal kırıklığına uğratmazsınız)
  • Sızan nesnelerin örneklerini göster
  • Temelde ikisi de işi oldukça iyi yapıyor

KARINCALAR

  • Aşağıdakiler de dahil olmak üzere yaygın sızıntıları bulmak için tek tıklamayla filtreler : yalnızca olay işleyicileri tarafından canlı tutulan nesneler, atılan ancak hala canlı olan nesneler ve yalnızca atılan bir nesnenin başvurusu ile canlı tutulan nesneler. Bu muhtemelen ANTS'nin katil özelliğidir - bu nedenle sızıntıları bulmak inanılmaz derecede hızlıdır. Deneyimlerime göre, sızıntıların çoğuna olay işleyicileri çekilmemeli ve ANTS sizi doğrudan bu nesnelere götürüyor. Muhteşem.
  • Nesne tutma grafiği. Aynı bilgi Scitech'te mevcut olsa da, ANTS'de yorumlanması çok daha kolaydır.
  • Nesnenin kendisinin boyutuna ek olarak çocuklarla birlikte boyutu gösterir (ancak maalesef bir örnek seçildiğinde, genel sınıf listesinde değil).
  • Visual Studio ile daha iyi entegrasyon (dosyaya atlamak için grafiğe sağ tıklayın)

Scitech .NET Bellek Profili Oluşturucu

  • Nesne tahsis edildiğinde yığın izlemeyi gösterir. Bu, birçok farklı yerde tahsis edilen nesneler için gerçekten yararlıdır. ANTS ile, sızan nesnenin tam olarak nerede yaratıldığını belirlemek zordur.
  • Atılmayan tek kullanımlık nesnelerin sayısını gösterir. Bir sızıntının göstergesi olmasa da, daha hızlı çöp toplama sonucunda bu sorunu çözme ve uygulama performansınızı iyileştirme fırsatlarını belirler.
  • Daha ayrıntılı filtreleme seçenekleri (birkaç sütun bağımsız olarak filtrelenebilir).
  • Oluşturulan toplam nesneler (toplanan çöpler dahil) hakkında bilgi sunar. ANTS yalnızca 'canlı' nesne istatistiklerini gösterir. Bu, genel uygulama performansını analiz etmeyi ve ayarlamayı kolaylaştırır (örn. Gereksiz yere sızıntı yapmayan çok sayıda nesnenin nerede yaratıldığını belirleme).

Özetle, ANTS, daha hızlı sızan şeyleri bulmanıza yardımcı olurken, Scitech, neye bakacağınızı bildiğinizde, genel uygulama belleği performansınız ve tek tek nesneler hakkında biraz daha ayrıntılı bilgi sağlar (örneğin, oluşturmada yığın izlemesi). Yığın izi ve tek kullanımlık tek kullanımlık nesnelerin izlenmesi KARINCALAR'a eklenmiş olsaydı, başka bir şey kullanma gereğini görmezdim.


.NET Memory Profiler'ın 4.0 sürümü (şimdi önizlemede) artık grafik görünümüne sahip. Scitech'in sahip olmadığı ANTS profillerinde beğendiğim bir özellikti (3.1 / 3.5'te).
cplotts

45

Kısa süre önce EQATEC Profiler http://www.eqatec.com/tools/profiler adresini keşfettim . Çoğu .NET sürümünde ve bir grup platformda çalışır. Kullanımı kolaydır ve parçaları ticari kullanım için bile ücretsizdir.


Kuyruk çağrılarında da başarısız oluyor :( Bildirilen hata.
leppie

Bu sadece ticari olmayan kullanım için ücretsizdir.
Jon Seigel

7
TrolleFar cevabını yazdığı zaman ağustos 08'de tamamen ücretsizdi. Şimdi, Jon'un dediği gibi, sadece ticari olmayan kullanım için ücretsizdir.
Richard Flamsholt

8
Lisans koşullarını tekrar değiştirdikleri ortaya çıkıyor. Bazı kısımları tekrar ticari kullanım için ücretsizdir.
TrolleFar

FEB2011'den itibaren kendi kendine / ticari için normal .NET sürümü ücretsizdir. Bu araç, istemci / sunucu modelinde çalıştığı ve yinelenen sınırların profilini oluşturabildiği / by-pass yapabildiği için güzeldir (örn. Yerel-> COM-> NET-> COM-> NET profilli olabilir). UI olsa çok korkunç :-)

31

[ Tam Açıklama ]

Burada listelenen diğer bazı .NET bellek profil üreticileri kadar tam özellikli olmasa da , piyasada JustTrace adlı yeni bir giriş var . Telerik tarafından yapılmıştır ve birincil amacı, izleme / profil oluşturmayı her tür uygulama (web / Silverlight / masaüstü) için daha kolay ve daha hızlı hale getirmektir.

Profil oluşturma ve optimizasyonun diğer araçlarla korkutucu veya yavaş olduğunu fark ettiyseniz , JustTrace bir göz atmaya değer olabilir.


12
İndirip denediğimde, Telerik benden "kayıt olmamı" ve "hesap oluşturmamı" istiyor. Ve tüm bu bülten abonelik düğmeleri varsayılan olarak işaretlidir. JustTrace'i denemekten mutluluk duyarım, ancak Telerik bunu zorlaştırmazsa değil.
Ryan Lundy

1
Denediğiniz için teşekkürler, Kyralessa. Sürecin iyileştirilebileceğini biliyoruz. Şu anda bunun üzerinde çalışıyoruz. Yakında bu engelleri kaldırmayı umuyoruz. Şimdilik, sadece kutuların işaretini kaldırın ve 2 dakika içinde bir hesabınız ve JustTrace indir ücretsiz yapabilirsiniz. Kısa süreli sorun için özür dilerim. -T
Todd

9
geri gönderebilir ve hesap oluşturmadan ne zaman indirebileceğimi bana bildirirseniz, denerim.
Ryan Lundy

4
Güncelleme: Bugün bir hesap oluşturmak zorunda kalmadan yanıttaki bağlantıyı kullanarak indirebildim.
Ryan Lundy

25

NProf'u unutmayın - mükemmel derecede iyi, ücretsiz bir profil oluşturucu.


3
Terk edilmiş görünüyor ... 2006'dan sadece bir alfa sürümü :-(
Mauricio Scheffer

2
Benim için harika çalıştı. Şimdi bir Google Code projesi. Temmuz 2009'da serbest bırakıldı.
Kullanıcı1

19
NProf sayfası artık şöyle diyor: NProf artık aktif olarak geliştirilmiyor. Açık kaynaklı bir .NET profili arıyorsanız, SlimTune'a ( code.google.com/p/slimtune ) bir göz atın
Richard Ev





9

WinForms ve Konsol Uygulamaları için JetBrains dotTrace ile çalışıyorum (henüz ASP.net'te test edilmedi) ve oldukça iyi çalışıyor:

Yakın zamanda, şirket lisansından önemli ölçüde daha ucuz olan bir "Kişisel Lisans" da eklediler. Yine de, eğer birisi daha ucuz ve hatta özgür olanı bilirse, ben de duymak isterim :-)


7

Harika scitech'i unutma .net bellek profilini

.Net uygulamanızın neden belleği azaldığını izlemek için harikadır.


1
Çok güzel bir araç. Kullanımı kolay ve nesne grafiğinizde gezinmenizi sağlar. Özellikle 'gerçek zamanlı' bellek takibini seviyorum. Uygulamanın çalışma süresi boyunca nesne sayımlarınızın nasıl geliştiğini gösterir.
lowglider

5

DotTrace'in bellek ve performans izleme oturumlarını farklılaştırma yeteneğinin kesinlikle paha biçilmez olduğunu da ekleyeceğim (ANTS'nin bir bellek farkı özelliği de olabilir, ancak performans farkı görmedim).

Bir hata düzeltme veya geliştirme işleminden önce ve sonra bir profil oluşturma oturumu çalıştırabilmek için sonuçları, özellikle performansın hiçbir zaman öncelik olmadığı ve darboğaz bulmanın mümkün olabileceği mamut eski bir .NET uygulaması (benim durumumda olduğu gibi) ile karşılaştırmak inanılmaz derecede değerlidir. ÇOK sıkıcı. Doing bir öncesi ve sonrası fark görmenizi sağlar her yöntem için çağrı sayısında değişim ve her yöntem için süresi değişikliği .

Bu, yalnızca kod değişiklikleri sırasında değil, aynı zamanda her istemci / müşteri için farklı bir veritabanı kullanan bir uygulamanız varsa da yararlıdır. Bir müşteri yavaşlıktan şikayet ederse, veritabanını kullanarak bir profil oluşturma oturumu çalıştırabilir ve hangi işlemlerin yavaşlığa katkıda bulunduğunu belirlemek için sonuçları "hızlı" bir veritabanı ile karşılaştırabilirsiniz. Tabii ki birçok veritabanı tarafı performans aracı var, ancak bazen uygulama tarafından performans metriklerini görmeye gerçekten yardımcı oluyorum (çünkü kullanıcının gerçekte gördüklerine daha yakın).

Alt satır: dotTrace harika çalışıyor ve fark paha biçilemez.


4

AQTime makul, ancak biraz öğrenme eğrisine sahip ve Team Suite'teki yerleşik olan kadar kolay değil



3

SharpDevelop'un (3.1.1) mevcut sürümü, hoş bir entegre profil oluşturucusuna sahiptir. Oldukça hızlı ve SharpDevelop IDE ve NUnit koşucusuna çok iyi entegre oluyor. Sonuçlar esnek bir Ağaç / Liste tarzında görüntülenir (kendi seçiminizi oluşturmak için LINQ kullanın). Görüntülenen yöntemin çift tıklanması doğrudan kaynak koduna atlar.


2

Geçmişte RedGate'in profilcisi ile çalıştım. İşi benim için yaptı.


2

Kendim denemedim, ama belki dotTrace ? Onların ReSharper uygulaması kesinlikle iyi bir uygulama. Belki dotTrace de :)


1
DotTrace kullandım ve tavsiye ederim.
Jon Skeet

2

Visual Studio Team System ile gelen profil oluşturucunun en iyi profil oluşturucu olduğundan şüpheliyim, ancak birçok durumda yeterince iyi buldum. VS'nin sunduklarının ötesinde neye özellikle ihtiyacınız var?

DÜZENLEME: Ne yazık ki sadece VS Team System'de kullanılabilir, ancak buna erişiminiz varsa kontrol etmeye değer.


1
VS2008'de olandan bahsediyordum, ancak tüm sürümlerde mevcut olmayabilir (VSTS kullanıyorum). PDC2008 videolarından profiler VS2010'da çok gelişecek gibi görünüyor.
Brian Rasmussen

1
Bu profil oluşturucu yalnızca Visual Studio'nun Team Systems sürümleriyle kullanılabilir.
Chris Brandsma

Visual Studio Team System'in (Developer Edition) bir profili vardır. Bkz. < Microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix

Visual Studio VS 2005'ten beri bir profil oluşturucusuna sahiptir. Yalnızca Team System ile kullanılabilir. Aslında, takım sistemini kullanmamın nedeni budur (işte profesyonelim var). Bence çok iyi bir profesör.
yapılandırıcı

İyi bir profil oluşturucu, ancak ANTS'nin yeni sürümünün standardına uygun değil.
mqp

2

ANTS bellek profiler son sürümü (5 olduğunu düşünüyorum) sadece sallamak !!! Daha önce en iyi yol olduğunu kanıtladığım için WinDbg ve SOS'u kullanarak bir sızıntıya uğradım, sonra KARINCALAR'ı denedim ve birkaç dakika içinde aldım. Gerçekten harika bir yazılım parçası.


2

Yourkit java ve .net profiler eklemek istiyorum , Java için seviyorum, ama .NET sürümünü denemedim.


1

Denediğim profilcilerin çoğu talihsiz çağrılarla, özellikle de karıncalarla kullanıldığında başarısız oldu. Sonunda kendimi yazıyorum. CodeProject üzerinde temel olarak kullanabileceğiniz basit bir uygulama vardır.



1

Bir süre kullandığım dikkatinize inanılmaz bir araç getirmeliyim. AVICode Durdurucu Studio . Önceki şirketimde bu harika aracı web uygulamasının profilini oluşturmak için kullandık ( Bu, dünyanın en büyük tek web uygulaması ve şimdiye kadar yapılmış en büyük sivil BT projesi olması gerekiyordu ). Performans ekibi bu muhteşem aracın yardımıyla harikalar yarattı. Bu yapılandırmak için bir acı, ama bu bir kerelik bir etkinlik ve zaman ayırmaya değer olduğunu söyleyebilirim. Bu sayfaya göz atın detayları için.

Teşekkürler, James


1

Benim için SpeedTrace, piyasadaki en iyi araçtır çünkü sadece uygulamalarınızda darboğazlar bulmanıza yardımcı olmaz. Ayrıca, uygulamanızın neden çöktüğünü, kurulumunuzun yüklenmediğini, uygulamanızın askıya alındığını, örneğin yavaş db işlemlerini tanımlamak için veri girişine bağlı olarak uygulama performansınızın bazen kötü olduğunu öğrenmek için sorun giderme senaryolarında size yardımcı olur.


1

Son zamanlarda Telerik'in JustTrace'ini test ediyorum ve bitmiş bir üründen çok uzak olmasına rağmen çocuklar doğru yönde gidiyor.


1

Lisanslama bir sorunsa, bellek profili oluşturma için WINDBG'yi deneyebilirsiniz


1

NuMega Gerçek Zamanlı profil oluşturucu Micro Focus tarafından DevPartner Studio'da yaşıyor. Yalnızca PDB gerektiren, kaynak gerektirmeyen .NET uygulamaları için satır ve yöntem düzeyinde ayrıntılar sağlar (ancak yardımcı olur.) Tescilli iş parçacığı modu zamanlama sürücüsünü kullanarak uzun G / Ç beklemelerine karşı algoritmik olarak ağır rutinler arasında ayrım yapabilir. Sürüm 10.5, 4 Şubat 2011'de yeni 64 işlem desteğiyle birlikte gönderilir. Utanmaz fiş: DevPartner ürün hattında çalışıyorum. 10.5 lansmanı ile ilgili haberler için http://www.DevPartner.com adresinden takip edin .

Feragatname: Micro Focus'ta DevPartner Ürün Yöneticisiyim.


SO hoş geldiniz. DevPartner ile herhangi bir ilişkiyi açıklamanız gerekecek ya da bir spamcı olarak kabul edilecek ve bu şekilde ele alınacaksınız. Görüyorum ki birkaç soru sorusu cevapladın ...
John Saunders

0

Ben kullanarak büyük bir C # uygulaması sorunların bol buldum bu .

Genellikle eklentiler yüklenirken ve büyük veri yapıları oluşturulurken, yok edilirken, serileştirilirken veya serileştirilirken sorun başlatma veya kapatma sırasında ortaya çıkar. Genellikle bir kereden fazla oluşturulur ve başlatılırlar ve değişiklik işleyicileri birden çok kez eklenir ve sorunu daha da pekiştirir.

Bu gibi durumlarda, program o kadar yavaş olabilir ki, suçlu yöntem / işlev / özellik çağrı sitelerini saptamak için sadece 2 örnek yeterlidir.


0

En iyi değer (fiyat ve özellik) olduğu için şirketimde .NET için YourKit Profiler'i seçtik. Esnek lisanslama (değişken lisanslar) almak isteyen küçük bir şirket için mükemmel bir seçim oldu - ANTS o sırada geliştirici koltuğu madalyonuydu.

Ayrıca, dotTrace ile mümkün olmayan çalışan işleme ekleme yeteneğini bize sağladı. Her şeyin yavaşlayacağından, eklemenin en iyi seçenek olmadığına dikkat edin, ancak bu, diğer işlemler tarafından başlatılan .NET uygulamalarını profillemenin tek yoluydu. Özellik akıllıca, ANTS ve dotTrace daha iyiydi - ama sonunda YourKit yeterince iyiydi.


Ocak 2012'den itibaren YourKit, YourKit profili oluşturucusu için fiyatlandırmayı artırdı. Bu nedenle, fiyat avantajı artık geçerli olmayabilir.

0

ASP.NET MVC kullanıyorsanız, MVCMiniProfiler'i deneyebilirsiniz (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.