Was sind einige gute .NET-Profiler?

374

Welche Profiler haben Sie bei der Arbeit mit .net-Programmen verwendet und welche würden Sie besonders empfehlen?

ricree
quelle

Antworten:

285

Ich habe JetBrains dotTrace und Redgate ANTS ausgiebig genutzt. Sie sind in Ausstattung und Preis ziemlich ähnlich. Beide bieten nützliche Leistungsprofile und grundlegende Speicherprofile.

dotTrace lässt sich in Resharper integrieren, was sehr praktisch ist, da Sie die Leistung eines Komponententests mit einem Klick in der IDE profilieren können. DotTrace scheint jedoch häufig falsche Ergebnisse zu liefern (z. B. die Aussage, dass die Ausführung einer Methode mehrere Jahre gedauert hat).

Ich bevorzuge die Art und Weise, wie ANTS die Profilerstellungsergebnisse präsentiert. Es zeigt Ihnen den Quellcode und links von jeder Zeile, wie lange die Ausführung gedauert hat. dotTrace hat nur eine Baumansicht.

Der EQATEC-Profiler ist recht einfach und erfordert, dass Sie spezielle instrumentierte Versionen Ihrer Baugruppen kompilieren, die dann im EQATEC-Profiler ausgeführt werden können. Es ist jedoch kostenlos.

Insgesamt bevorzuge ich ANTS für die Leistungsprofilerstellung. Wenn Sie jedoch Resharper verwenden, ist die Integration von dotTrace eine Killer-Funktion und bedeutet, dass sie ANTS in Bezug auf die Benutzerfreundlichkeit übertrifft.

Der kostenlose Microsoft CLR Profiler ( .Net Framework 2.0 / .Net Framework 4.0 ) ist alles, was Sie für die .NET-Speicherprofilerstellung benötigen.

Update 2011:

Der Scitech-Speicherprofiler verfügt über eine recht einfache Benutzeroberfläche, aber viele nützliche Informationen, einschließlich einiger Informationen zu nicht verwaltetem Speicher, die dotTrace und ANTS fehlen. Sie finden ihn möglicherweise nützlich, wenn Sie COM-Interop ausführen, aber ich habe noch keinen Profiler gefunden, der COM erstellt Speicherprobleme sind leicht zu diagnostizieren - normalerweise müssen Sie ausbrechen windbg.exe.

Der ANTS-Profiler hat in den letzten Jahren sprunghafte Fortschritte gemacht, und sein Speicherprofiler verfügt über einige wirklich nützliche Funktionen, die ihn meiner Einschätzung nach als Paket vor dotTrace gebracht haben. Ich habe das Glück, Lizenzen für beide zu haben, aber wenn Sie einen .Net-Profiler für Leistung und Speicher kaufen möchten, machen Sie ihn zu ANTS.

Matt Howells
quelle
5
Der Profiler in Visual Studio ist auch sehr einfach zu bedienen, Visual Studio 2010 befindet sich in der Beta und ist daher auch kostenlos. Im Jahr 2010 wurden mehrere Verbesserungen für die Anzeige von Konflikten und Parallelität vorgenommen. versuchen Sie es ...
Rick
15
@ Rick Leider ist der Profiler von Visual Studio nicht in der Professional Edition vorhanden ...
Drake
Ich bin nicht der Meinung, dass der CLR-Profiler alles ist, was Sie für die .NET-Speicherprofilerstellung benötigen, obwohl dies möglicherweise zutrifft, wenn Sie Ihrer Zeit keinen Wert beimessen. Siehe meine Antwort unten für eine Zusammenfassung der besten paar Speicher Profilometer - sie werden Sie Speicherlecks und potenzielle Probleme viel schneller finden helfen.
Ben Robbins
1
Aktuelle Versionen des EQUATEC Profilers sind nicht mehr kostenlos.
David Schmitt
1
Scheint, als ob EQATEC Profiler wieder für .NET (vollständiges Framework) kostenlos geworden ist
soren.enemaerke
88

Andere haben sich mit Leistungsprofilen befasst, aber in Bezug auf Speicherprofile evaluiere ich derzeit sowohl den Scitech .NET Memory Profiler 3.1 als auch den ANTS Memory Profiler 5.1 (aktuelle Versionen ab September 2009). Ich habe die JetBrains vor ein oder zwei Jahren ausprobiert und sie waren nicht so gut wie ANTS (für die Speicherprofilerstellung), daher habe ich mich diesmal nicht darum gekümmert. Beim Lesen der Websites sieht es so aus, als ob es nicht die gleichen Speicherprofilierungsfunktionen wie die beiden anderen hat.

Sowohl ANTS als auch der Scitech-Speicherprofiler verfügen über Funktionen, die der andere nicht bietet. Welche also am besten geeignet ist, hängt von Ihren Vorlieben ab. Im Allgemeinen liefert der Scitech One detailliertere Informationen, während der ANTS One das undichte Objekt wirklich unglaublich identifizieren kann. Insgesamt bevorzuge ich die ANTS, weil sie mögliche Lecks so schnell erkennt.

Hier sind die wichtigsten Vor- und Nachteile der einzelnen aus meiner Erfahrung:

Allgemeine Funktionen von ANTS und Scitech .NET Memory Profiler

  • Echtzeit-Analysefunktion
  • Hervorragende Videos mit Anleitungen auf ihren Websites
  • Einfach zu verwenden
  • Angemessen performant (offensichtlich langsamer als ohne den angehängten Profiler, aber nicht so sehr, dass Sie frustriert sind)
  • Zeigen Sie Instanzen von undichten Objekten an
  • Grundsätzlich machen beide den Job ziemlich gut

Ameisen

  • Ein-Klick-Filter, um häufig auftretende Lecks zu finden, darunter: Objekte, die nur von Ereignishandlern am Leben erhalten werden, Objekte, die entsorgt werden, aber noch aktiv sind, und Objekte, die nur durch eine Referenz eines entsorgten Objekts am Leben erhalten werden. Dies ist wahrscheinlich das Killer-Feature von ANTS - das Auffinden von Lecks ist deshalb unglaublich schnell. Nach meiner Erfahrung werden die meisten Lecks dadurch verursacht, dass Event-Handler nicht ausgehängt werden und ANTS Sie direkt zu diesen Objekten führt. Genial.
  • Objektaufbewahrungsdiagramm. Während die gleichen Informationen in Scitech verfügbar sind, ist es in ANTS viel einfacher zu interpretieren.
  • Zeigt die Größe mit untergeordneten Elementen zusätzlich zur Größe des Objekts selbst an (jedoch nur, wenn eine Instanz leider nicht in der Gesamtklassenliste ausgewählt ist).
  • Bessere Integration in Visual Studio (Rechtsklick auf das Diagramm, um zur Datei zu springen)

Scitech .NET Memory Profiler

  • Zeigt die Stapelverfolgung an, wenn das Objekt zugewiesen wurde. Dies ist sehr nützlich für Objekte, die an vielen verschiedenen Orten zugewiesen sind. Mit ANTS ist es schwierig, genau zu bestimmen, wo das durchgesickerte Objekt erstellt wurde.
  • Zeigt die Anzahl der Einwegobjekte an, die nicht entsorgt wurden. Obwohl dies kein Hinweis auf ein Leck ist, werden Möglichkeiten zur Behebung dieses Problems und zur Verbesserung der Anwendungsleistung aufgrund einer schnelleren Speicherbereinigung ermittelt.
  • Detailliertere Filteroptionen (mehrere Spalten können unabhängig voneinander gefiltert werden).
  • Zeigt Informationen zu den insgesamt erstellten Objekten an (einschließlich des gesammelten Mülls). ANTS zeigt nur 'Live'-Objektstatistiken an. Dies erleichtert die Analyse und Optimierung der gesamten Anwendungsleistung (z. B. Identifizieren, wo viele Objekte unnötig erstellt werden, die nicht unbedingt undicht sind).

Zusammenfassend kann ich sagen, dass ANTS Ihnen dabei hilft, schneller zu ermitteln, was ausläuft, während Scitech ein wenig detaillierter über die Gesamtleistung des Anwendungsspeichers und einzelne Objekte informiert, sobald Sie wissen, worauf Sie achten müssen (z. B. Stapelverfolgung bei der Erstellung). Wenn die Stapelverfolgung und Verfolgung nicht verfügbarer Einwegobjekte zu ANTS hinzugefügt würde, würde ich nicht die Notwendigkeit sehen, etwas anderes zu verwenden.

Ben Robbins
quelle
Die 4.0-Version von .NET Memory Profiler (jetzt in der Vorschau) verfügt jetzt über eine Diagrammansicht. Dies war die einzige Funktion, die mir im ANTS-Profiler gefallen hat, die Scitech nicht hatte (in 3.1 / 3.5).
Plots
45

Ich habe kürzlich den EQATEC Profiler http://www.eqatec.com/tools/profiler entdeckt . Es funktioniert mit den meisten .NET-Versionen und auf einer Reihe von Plattformen. Es ist einfach zu bedienen und Teile davon sind kostenlos, auch für den kommerziellen Gebrauch.

TrolleFar
quelle
Schlägt auch bei Tail Calls
fehl
Dieser ist nur für den nichtkommerziellen Gebrauch kostenlos.
Jon Seigel
7
Es war im August 2008 völlig kostenlos, als TrolleFar seine Antwort schrieb. Jetzt, wie Jon sagt, ist es nur für den nichtkommerziellen Gebrauch kostenlos.
Richard Flamsholt
8
Es stellt sich heraus, dass sie die Lizenzbedingungen erneut geändert haben. Teile davon sind wieder für den kommerziellen Gebrauch kostenlos.
TrolleFar
Ab FEB2011 ist die normale .NET Edition für Self / Commercial kostenlos. Dieses Tool ist nützlich, da es auf dem Client / Server-Modell funktioniert und wiederholte Grenzen profilieren / umgehen kann (z. B. kann Native-> COM-> NET-> COM-> NET profiliert werden). Die Benutzeroberfläche ist allerdings ziemlich schrecklich :-)
31

[ Vollständige Offenlegung ]

Obwohl es noch nicht so umfassend ist wie einige der anderen hier aufgeführten .NET-Speicherprofiler, gibt es auf dem Markt einen neuen Eintrag namens JustTrace . Es wurde von Telerik erstellt und hat das Hauptziel, die Ablaufverfolgung / Profilerstellung für alle Arten von Apps (Web / Silverlight / Desktop) einfacher und schneller zu gestalten.

Wenn Sie jemals festgestellt haben, dass die Profilerstellung und Optimierung mit anderen Tools einschüchternd oder langsam ist, ist JustTrace möglicherweise einen Blick wert.

Todd
quelle
12
Wenn ich es herunterlade und ausprobiere, möchte Telerik, dass ich mich "registriere" und "ein Konto erstelle". Alle diese Newsletter-Abonnement-Schaltflächen sind standardmäßig markiert. Ich würde JustTrace gerne ausprobieren, aber nicht, wenn Telerik es so schwierig macht.
Ryan Lundy
1
Danke, dass du es versucht hast, Kyralessa. Wir wissen, dass der Prozess verbessert werden kann. Daran arbeiten wir gerade. Wir hoffen, diese Hürden bald zu beseitigen. Deaktivieren Sie zunächst die Kontrollkästchen und in 2 Minuten können Sie ein Konto einrichten und JustTrace kostenlos herunterladen. Entschuldigung für die kurzfristigen Probleme. -T
Todd
9
poste zurück und lass mich wissen, wann ich herunterladen kann, ohne ein Konto zu erstellen, und ich werde es versuchen.
Ryan Lundy
4
Update: Heute konnte ich über den Link in der Antwort herunterladen, ohne ein Konto erstellen zu müssen.
Ryan Lundy
25

Vergessen Sie nicht nProf - einen perfekt guten Freeware-Profiler.

Greg Hurlman
quelle
3
Sieht irgendwie verlassen aus ... nur eine Alpha-Veröffentlichung von 2006 :-(
Mauricio Scheffer
2
Hat super für mich funktioniert. Es ist jetzt ein Google Code-Projekt. Hatte eine Veröffentlichung im Juli 2009.
User1
19
Auf der nProf-Seite heißt es nun: NProf wird nicht mehr aktiv entwickelt. Wenn Sie nach einem Open Source .NET-Profiler suchen, schauen Sie sich SlimTune ( code.google.com/p/slimtune ) an
Richard Ev
14

Ich habe festgestellt, dass dotTrace Profiler von JetBrains ein hervorragendes Profiling-Tool für .NET ist und dass der ASP.NET-Modus von hoher Qualität ist.

Chris Ballance
quelle
12

ANTS Profiler . Ich habe nicht viele benutzt, aber ich habe keine Beschwerden über ANTS. Die Visualisierung ist sehr hilfreich.

Palmsey
quelle
11

AutomatedQA AQTime für das Timing und SciTech MemProfiler für den Speicher.

Lars Truijens
quelle
MemProfiler hat unser Team gerettet, als wir einen Speicherverlust hatten. Ich habe andere Werkzeuge ausprobiert, aber kein anderes Werkzeug hat das gleiche Detail geliefert.
Greg Ogle
9

Ich habe mit JetBrains dotTrace für WinForms und Konsolen-Apps gearbeitet (noch nicht auf ASP.net getestet), und es funktioniert ganz gut:

Sie haben kürzlich auch eine "Personal License" hinzugefügt, die deutlich günstiger ist als die Unternehmenslizenz. Dennoch, wenn jemand anderes einige billigere oder sogar kostenlose kennt, würde ich auch gerne hören :-)

Michael Stum
quelle
7

Vergessen Sie nicht den fantastischen Scitech .net Memory Profiler

Es ist großartig, um herauszufinden, warum in Ihrer .net-App nicht mehr genügend Speicher vorhanden ist.

Sam Safran
quelle
1
Sehr schönes Werkzeug. Einfach zu bedienen und ermöglicht Ihnen die Navigation durch Ihr Objektdiagramm. Besonders gut gefällt mir die Echtzeit-Speicherverfolgung. Es zeigt Ihnen, wie sich die Anzahl Ihrer Objekte zur Laufzeit der Anwendung entwickelt.
Lowglider
5

Ich würde hinzufügen, dass die Fähigkeit von dotTrace, Speicher- und Leistungsablaufverfolgungssitzungen zu unterscheiden, absolut von unschätzbarem Wert ist (ANTS verfügt möglicherweise auch über eine Speicherdifferenzierungsfunktion, aber ich habe keinen Leistungsunterschied gesehen).

Die Möglichkeit, vor und nach einer Fehlerbehebung oder -verbesserung eine Profilerstellungssitzung durchzuführen und dann die Ergebnisse zu vergleichen, ist unglaublich wertvoll, insbesondere mit einer riesigen älteren .NET-Anwendung (wie in meinem Fall), bei der die Leistung nie Priorität hatte und bei der es darum ging, Engpässe zu finden Sehr langweilig. Wenn Sie ein Vorher-Nachher-Diff durchführen, können Sie die Änderung der Anrufanzahl für jede Methode und die Änderung der Dauer für jede Methode anzeigen .

Dies ist nicht nur bei Codeänderungen hilfreich, sondern auch, wenn Sie eine Anwendung haben, die beispielsweise für jeden Client / Kunden eine andere Datenbank verwendet. Wenn sich ein Kunde über Langsamkeit beschwert, können Sie mithilfe seiner Datenbank eine Profilerstellungssitzung durchführen und die Ergebnisse mit einer "schnellen" Datenbank vergleichen, um festzustellen, welche Vorgänge zur Langsamkeit beitragen. Natürlich gibt es viele datenbankseitige Leistungstools, aber manchmal hilft es mir wirklich, die Leistungsmetriken von der Anwendungsseite aus zu sehen (da dies näher an dem liegt, was der Benutzer tatsächlich sieht).

Fazit: dotTrace funktioniert hervorragend und der Unterschied ist von unschätzbarem Wert.

Shaunmartin
quelle
4

AQTime ist vernünftig, hat aber eine gewisse Lernkurve und ist nicht so einfach zu bedienen wie die in Team Suite integrierte

Jeff Moser
quelle
3

In der Vergangenheit habe ich den mit Visual Studio Team System gelieferten Profiler verwendet .

Ameise
quelle
3

Die aktuelle Version von SharpDevelop (3.1.1) hat einen schönen integrierten Profiler. Es ist ziemlich schnell und lässt sich sehr gut in die SharpDevelop IDE und ihren NUnit Runner integrieren. Die Ergebnisse werden in einem flexiblen Baum- / Listenstil angezeigt (verwenden Sie LINQ, um Ihre eigene Auswahl zu erstellen). Durch Doppelklicken auf die angezeigte Methode wird direkt in den Quellcode gesprungen.

David Schmitt
quelle
2

Ich habe in der Vergangenheit mit RedGates Profiler gearbeitet. Hat den Job für mich gemacht.

Kev
quelle
2

Hast du es nicht selbst versucht, aber vielleicht dotTrace ? Ihre ReSharper-Anwendung ist sicherlich eine gute. Vielleicht ist dotTrace auch :)

Svish
quelle
1
Ich habe dotTrace verwendet und kann es empfehlen.
Jon Skeet
2

Ich bezweifle, dass der mit Visual Studio Team System gelieferte Profiler der beste Profiler ist, aber ich habe festgestellt, dass er bei vielen Gelegenheiten gut genug ist. Was benötigen Sie konkret über das Angebot von VS hinaus?

BEARBEITEN: Leider ist es nur in VS Team System verfügbar, aber wenn Sie Zugriff darauf haben, lohnt es sich, es zu überprüfen.

Brian Rasmussen
quelle
1
Ich habe über das in VS2008 gesprochen, aber es ist möglicherweise nicht in allen Versionen verfügbar (ich verwende VSTS). Aus den PDC2008-Videos geht hervor, dass sich der Profiler in VS2010 erheblich verbessern wird.
Brian Rasmussen
1
Dieser Profiler ist nur mit den Team Systems-Versionen von Visual Studio verfügbar.
Chris Brandsma
Visual Studio Team System (Developer Edition) verfügt über einen Profiler. Siehe < microsoft.com/visualstudio/en-us/products/teamsystem/… >.
Gix
Visual Studio hat seit VS 2005 einen Profiler. Dieser ist nur mit Team System verfügbar. Das ist in der Tat der Grund, warum ich das Team-System benutze (bei der Arbeit habe ich professionelle). Es ist meiner Meinung nach ein sehr guter Profiler.
Konfigurator
Es ist ein guter Profiler, aber es entspricht nicht ganz dem Standard der neuen Version von ANTS.
mqp
2

Die neueste Version von ANTS Memory Profiler (ich denke es ist 5) rockt einfach !!! Ich habe mit WinDbg und SOS ein Leck verfolgt, da es sich als der beste Weg zuvor erwiesen hat. Dann habe ich ANTS ausprobiert und es in wenigen Minuten bekommen. Wirklich ein wunderbares Stück Software.

Pablo
quelle
2

Ich möchte Ihr Kit Java und .net Profiler hinzufügen , ich liebe es für Java, habe aber noch nicht die .NET-Version ausprobiert.

Redlab
quelle
1

Leider scheiterten die meisten Profiler, die ich ausprobiert habe, bei der Verwendung mit Tail Calls, insbesondere ANTS. Am Ende schreibe ich einfach meine eigenen. Es gibt eine einfache Implementierung in CodeProject, die Sie als Basis verwenden können.

Leppie
quelle
1

Intel® VTune ™ Performance Analyzer für schnelle Probenahme

Dienstprogramm73
quelle
@ Utility73 - wirklich großartige zeilenweise Aufschlüsselung der CPU-Kosten in vtune - genau das habe ich heute gesucht. Vielen Dank, dass Sie dies vorgeschlagen haben.
Sichbo
1

Ich muss Ihnen ein erstaunliches Werkzeug zur Kenntnis bringen, das ich vor einiger Zeit verwendet habe. AVICode Interceptor Studio . In meiner vorherigen Firma haben wir dieses wunderbare Tool verwendet, um die Webanwendung zu profilieren ( dies soll die größte Webanwendung der Welt und das größte zivile IT-Projekt sein, das jemals durchgeführt wurde ). Das Leistungsteam hat mit Hilfe dieses großartigen Werkzeugs Wunder vollbracht. Es ist mühsam, es zu konfigurieren, aber das ist eine einmalige Aktivität und ich würde sagen, es ist die Zeit wert. Überprüfen Sie diese Seite für Details.

Danke, James

James Poulose
quelle
1

Für mich ist SpeedTrace das beste Tool auf dem Markt, da es Ihnen nicht nur hilft, Engpässe in Ihren Anwendungen zu finden. Es hilft Ihnen auch bei der Fehlerbehebung, herauszufinden, warum Ihre Anwendung abgestürzt ist, Ihr Setup nicht installiert wurde, Ihre Anwendung hängen geblieben ist und Ihre Anwendungsleistung je nach Dateneingabe manchmal schlecht ist, z. B. um langsame Datenbanktransaktionen zu identifizieren.

Dolch
quelle
1

Ich habe kürzlich Teleriks JustTrace getestet und obwohl es weit von einem fertigen Produkt entfernt ist, gehen die Jungs in die richtige Richtung.

Ivan Petrov
quelle
1

Wenn die Lizenzierung ein Problem darstellt, können Sie WINDBG für die Speicherprofilerstellung verwenden

Vibes
quelle
1

Der NuMega True Time Profiler lebt in DevPartner Studio von Micro Focus weiter. Es bietet Details auf Zeilen- und Methodenebene für .NET-Apps, für die nur PDBs erforderlich sind, keine Quelle erforderlich (aber es hilft). Es kann mithilfe unseres proprietären Kernelmodus-Timing-Treibers pro Thread zwischen algorithmisch schweren Routinen und solchen mit langen E / A-Wartezeiten unterscheiden. Version 10.5 wird am 4. Februar 2011 mit neuer 64-Prozess-Unterstützung ausgeliefert. Schamloser Plug: Ich arbeite an der DevPartner-Produktlinie. Weitere Informationen zum Start von 10.5 finden Sie unter http://www.DevPartner.com .

Haftungsausschluss: Ich bin Produktmanager für DevPartner bei Micro Focus.

Matt Schuetze
quelle
Willkommen bei SO. Sie müssen jegliche Beziehung zu DevPartner offenlegen, oder Sie werden als Spammer betrachtet und als solcher behandelt. Ich sehe, Sie haben eine Reihe von Profilierungsfragen beantwortet ...
John Saunders
0

Ich habe viele Probleme in einer großen C # -App gefunden, die dies verwendet .

Normalerweise tritt das Problem beim Starten oder Herunterfahren auf, wenn Plugins geladen und Big-Data-Strukturen erstellt, zerstört, serialisiert oder deserialisiert werden. Oft werden sie mehrmals erstellt und initialisiert, und Änderungshandler werden mehrmals hinzugefügt, was das Problem weiter verschärft.

In solchen Fällen kann das Programm so träge sein, dass nur 2 Beispiele ausreichen, um die schuldigen Methoden- / Funktions- / Eigenschaftsaufrufstellen zu lokalisieren.

Mike Dunlavey
quelle
0

Wir haben YourKit Profiler für .NET in meinem Unternehmen ausgewählt, da dies der beste Wert war (Preis vs. Funktion). Für ein kleines Unternehmen, das flexible Lizenzen (Floating-Lizenzen) haben möchte, war dies die perfekte Wahl - ANTS war zu dieser Zeit das Medaillon für Entwicklersitze.

Außerdem konnten wir uns an den laufenden Prozess anschließen, der mit dotTrace nicht möglich war. Beachten Sie jedoch, dass das Anhängen nicht die beste Option ist, da alles, was .NET verlangsamt, langsamer wird. Dies war jedoch die einzige Möglichkeit, .NET-Anwendungen zu profilieren, die von anderen Prozessen gestartet wurden. In Bezug auf die Funktionen waren ANTS und dotTrace besser - aber am Ende war YourKit gut genug.

Slobodan Savkovic
quelle
Ab Januar 2012 hat YourKit die Preise für den YourKit-Profiler erhöht. Daher ist der Preisvorteil möglicherweise nicht mehr gültig.
0

Wenn Sie mit ASP.NET MVC arbeiten, können Sie MVCMiniProfiler ausprobieren (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/).

eka808
quelle