Welche Profiler haben Sie bei der Arbeit mit .net-Programmen verwendet und welche würden Sie besonders empfehlen?
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.
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
Ameisen
Scitech .NET Memory Profiler
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.
quelle
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.
quelle
[ 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.
quelle
Vergessen Sie nicht nProf - einen perfekt guten Freeware-Profiler.
quelle
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.
quelle
ANTS Profiler . Ich habe nicht viele benutzt, aber ich habe keine Beschwerden über ANTS. Die Visualisierung ist sehr hilfreich.
quelle
AutomatedQA AQTime für das Timing und SciTech MemProfiler für den Speicher.
quelle
Wenn Sie nach etwas suchen, das schnell, einfach und kostenlos ist, scheint http://code.google.com/p/slimtune/ den Job gut zu machen.
quelle
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 :-)
quelle
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.
quelle
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.
quelle
AQTime ist vernünftig, hat aber eine gewisse Lernkurve und ist nicht so einfach zu bedienen wie die in Team Suite integrierte
quelle
In der Vergangenheit habe ich den mit Visual Studio Team System gelieferten Profiler verwendet .
quelle
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.
quelle
Ich habe in der Vergangenheit mit RedGates Profiler gearbeitet. Hat den Job für mich gemacht.
quelle
Hast du es nicht selbst versucht, aber vielleicht dotTrace ? Ihre ReSharper-Anwendung ist sicherlich eine gute. Vielleicht ist dotTrace auch :)
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
Intel® VTune ™ Performance Analyzer für schnelle Probenahme
quelle
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
quelle
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.
quelle
Ich habe kürzlich Teleriks JustTrace getestet und obwohl es weit von einem fertigen Produkt entfernt ist, gehen die Jungs in die richtige Richtung.
quelle
Wenn die Lizenzierung ein Problem darstellt, können Sie WINDBG für die Speicherprofilerstellung verwenden
quelle
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.
quelle
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.
quelle
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.
quelle
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/).
quelle