373 Stimmen

Was sind einige gute .NET-Profiler?

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

284voto

Matt Howells Punkte 38730

Ich habe verwendet JetBrains dotTrace y Redgate ANTS umfangreich. Sie sind in Bezug auf Funktionen und Preis recht ähnlich. Beide bieten eine nützliche Leistungsprofilierung und eine recht grundlegende Speicherprofilierung.

dotTrace ist mit Resharper integriert, was sehr praktisch ist, da man die Leistung eines Unit-Tests mit einem Klick aus der IDE heraus profilieren kann. Allerdings scheint dotTrace oft falsche Ergebnisse zu liefern (z. B. die Angabe, dass eine Methode mehrere Jahre für die Ausführung benötigte)

Ich bevorzuge die Art und Weise, wie ANTS die Ergebnisse der Profilerstellung darstellt. Es zeigt Ihnen den Quellcode und links von jeder Zeile steht, wie lange die Ausführung gedauert hat. dotTrace hat nur eine Baumansicht.

EQATEC-Profiler ist recht einfach und erfordert die Kompilierung spezieller instrumentierter Versionen Ihrer Assemblies, die dann im EQATEC Profiler ausgeführt werden können. Es ist jedoch kostenlos.

Insgesamt bevorzuge ich ANTS für Performance-Profiling, obwohl, wenn Sie Resharper verwenden, dann die Integration von dotTrace ist ein Killer-Feature und bedeutet es schlägt ANTS in der Benutzerfreundlichkeit.

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

Aktualisierung 2011:

En Scitech-Speicher-Profiler hat eine recht einfache Benutzeroberfläche, aber viele nützliche Informationen, einschließlich einiger Informationen über nicht verwalteten Speicher, die dotTrace und ANTS fehlen - Sie könnten es nützlich finden, wenn Sie COM-Interop machen, aber ich habe noch keinen Profiler gefunden, der COM-Speicherprobleme einfach zu diagnostizieren macht - Sie müssen normalerweise ausbrechen windbg.exe .

Der ANTS-Profiler hat sich in den letzten Jahren sprunghaft weiterentwickelt, und sein Speicher-Profiler hat einige wirklich nützliche Funktionen, die ihn jetzt in meiner Einschätzung vor dotTrace als Paket schieben. Ich habe das Glück, Lizenzen für beide zu haben, aber wenn Sie einen .Net Profiler für Leistung und Speicher kaufen wollen, dann ANTS.

88voto

Ben Robbins Punkte 2859

Andere haben sich mit der Erstellung von Leistungsprofilen befasst, aber im Hinblick auf die Erstellung von Speicherprofilen Ich teste derzeit sowohl den Scitech .NET Memory Profiler 3.1 als auch den ANTS Memory Profiler 5.1 (aktuelle Versionen vom September 2009). Ich habe den JetBrains Profiler vor ein oder zwei Jahren ausprobiert und er war nicht so gut wie ANTS (für die Speicherprofilerstellung), also habe ich mir diesmal nicht die Mühe gemacht. Nach der Lektüre der Webseiten sieht es so aus, als hätte es nicht die gleichen Speicherprofilerstellung Merkmale wie die beiden anderen.

Sowohl ANTS als auch der Scitech Memory Profiler haben Funktionen, die der jeweils andere nicht hat, so dass es von Ihren Vorlieben abhängt, welches Programm am besten geeignet ist. Im Allgemeinen liefert der Scitech-Profiler detailliertere Informationen, während der ANTS-Profiler das undichte Objekt wirklich hervorragend identifiziert. Insgesamt bevorzuge ich den ANTS, weil er mögliche Lecks so schnell aufspürt.

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

Gemeinsame Merkmale von ANTS und Scitech .NET Memory Profiler

  • Echtzeit-Analysefunktion
  • Ausgezeichnete Anleitungsvideos auf ihren Websites
  • Einfach zu bedienen
  • Angemessene Leistung (natürlich langsamer als ohne den angeschlossenen Profiler, aber nicht so sehr, dass man frustriert wird)
  • Instanzen von undichten Objekten anzeigen
  • Im Grunde genommen erfüllen sie beide ihre Aufgabe ziemlich gut

ANTS

  • Ein-Klick-Filter zum Auffinden häufiger Lecks Dazu gehören: Objekte, die nur durch Ereignisbehandler am Leben gehalten werden, Objekte, die entsorgt wurden, aber noch leben, und Objekte, die nur durch einen Verweis von einem entsorgtes Objekt am Leben gehalten werden. Dies ist wahrscheinlich die Killerfunktion von ANTS - das Auffinden von Lecks ist dadurch unglaublich schnell. Meiner Erfahrung nach werden die meisten Lecks dadurch verursacht, dass Ereignisbehandler nicht abgehängt werden, und ANTS führt Sie direkt zu diesen Objekten. Fantastisch.
  • Diagramm zur Objektspeicherung. Die gleichen Informationen stehen zwar auch in Scitech zur Verfügung, sind aber in ANTS viel einfacher zu interpretieren.
  • Zeigt die Größe der Kinder zusätzlich zur Größe des Objekts selbst an (aber leider nur, wenn eine Instanz ausgewählt ist, nicht in der gesamten Klassenliste).
  • Bessere Integration in Visual Studio (Rechtsklick auf Diagramm, um zur Datei zu springen)

Scitech .NET-Speicher-Profiler

  • Zeigt den Stack-Trace an, wenn das Objekt alloziert wurde. Dies ist vraiment nützlich für Objekte, die an vielen verschiedenen Stellen 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. Dies ist zwar kein Hinweis auf ein Leck, zeigt aber Möglichkeiten zur Behebung dieses Problems und zur Verbesserung der Anwendungsleistung durch eine schnellere Garbage Collection auf.
  • Detailliertere Filtermöglichkeiten (mehrere Spalten können unabhängig voneinander gefiltert werden).
  • Zeigt Informationen über die insgesamt erstellten Objekte an (einschließlich der Garbage Collected-Objekte). ANTS zeigt nur "Live"-Objektstatistiken an. Das macht es einfacher, die Gesamtleistung der Anwendung zu analysieren und zu optimieren (z. B. um festzustellen, wo viele Objekte unnötig erstellt werden, die nicht unbedingt undicht sind).

Zusammenfassend denke ich, dass ANTS Ihnen hilft, schneller herauszufinden, was undicht ist, während Scitech etwas mehr Details über die gesamte Speicherleistung Ihrer Anwendung und einzelne Objekte liefert, sobald Sie wissen, was Sie betrachten müssen (z. B. Stack-Trace bei der Erstellung). Wenn der Stack-Trace und die Verfolgung nicht abgelegter Wegwerfobjekte zu ANTS hinzugefügt würden, würde ich keine Notwendigkeit sehen, etwas anderes zu verwenden.

45voto

TrolleFar Punkte 940

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

31voto

Todd Punkte 5538

[ Vollständige Offenlegung ]

Obwohl er noch nicht so umfangreich ist wie einige der anderen hier aufgeführten .NET-Speicher-Profiler, gibt es einen neuen Eintrag auf dem Markt namens JustTrace . Es wird von Telerik hergestellt und sein primäres Ziel ist es, Tracing/Profiling einfacher und schneller für alle Arten von Anwendungen (Web/Silverlight/Desktop) zu machen.

Wenn Sie die Profilerstellung und Optimierung mit anderen Tools als einschüchternd oder langsam empfunden haben, dann JustTrace könnte einen Blick wert sein.

25voto

Greg Hurlman Punkte 17467

Vergessen Sie nicht nProf - ein sehr guter, kostenloser Profiler.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X