Frage

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

War es hilfreich?

Lösung

Ich habe benutzt JetBrains dotTrace Und Redgate-AMEISEN ausführlich.Sie sind in Ausstattung und Preis ziemlich ähnlich.Beide bieten eine nützliche Leistungsprofilierung und eine recht einfache Speicherprofilierung.

dotTrace lässt sich in Resharper integrieren, was sehr praktisch ist, da Sie die Leistung eines Unit-Tests mit einem Klick in der IDE profilieren können.Allerdings scheint dotTrace oft falsche Ergebnisse zu liefern (z. B.sagen, dass die Ausführung einer Methode mehrere Jahre gedauert hat)

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

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 ein Killer-Feature und bedeutet, dass es ANTS in puncto Benutzerfreundlichkeit übertrifft.

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:

Der Scitech-Speicherprofiler hat eine ziemlich einfache Benutzeroberfläche, aber viele nützliche Informationen, einschließlich einiger Informationen zum nicht verwalteten Speicher, der bei dotTrace und ANTS fehlt – Sie könnten es nützlich finden, wenn Sie COM-Interop durchführen, aber ich habe noch keinen Profiler gefunden, der COM-Speicherprobleme einfach löst diagnostizieren – meist muss man ausbrechen windbg.exe.

Der ANTS-Profiler hat in den letzten Jahren rasante Fortschritte gemacht, und sein Speicherprofiler verfügt über einige wirklich nützliche Funktionen, die ihn meiner Einschätzung nach jetzt als Paket an die Spitze von 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 Tipps

Andere haben sich mit der Leistungsprofilierung befasst, aber in Bezug auf Speicherprofilierung Ich evaluiere derzeit sowohl den Scitech .NET Memory Profiler 3.1 als auch den ANTS Memory Profiler 5.1 (aktuelle Versionen, Stand September 2009).Ich habe die JetBrains vor ein oder zwei Jahren ausprobiert und sie waren nicht so gut wie ANTS (für die Speicherprofilerstellung), also habe ich mich dieses Mal nicht darum gekümmert.Beim Lesen der Websites sieht es so aus, als gäbe es dort nicht das Gleiche Speicherprofilierung Funktionen wie die anderen beiden.

Sowohl ANTS als auch der Scitech-Speicherprofiler verfügen über Funktionen, die die anderen nicht haben. Welche die beste ist, hängt also von Ihren Vorlieben ab.Im Allgemeinen liefert das Scitech-Gerät detailliertere Informationen, während das ANTS-Gerät wirklich unglaublich gut darin ist, das auslaufende Objekt zu identifizieren.Insgesamt bevorzuge ich das ANTS-Gerät, weil es mögliche Lecks so schnell erkennt.

Hier sind die wichtigsten Vor- und Nachteile jedes einzelnen meiner Erfahrungen:

Gemeinsame Funktionen von ANTS und Scitech .NET Memory Profiler

  • Echtzeit-Analysefunktion
  • Ausgezeichnete Anleitungsvideos auf ihren Websites
  • Einfach zu verwenden
  • Ziemlich leistungsstark (natürlich langsamer als ohne angeschlossenen Profiler, aber nicht so sehr, dass Sie frustriert werden)
  • Zeigen Sie Fälle von undichten Objekten an
  • Im Grunde machen beide ihren Job ziemlich gut

AMEISEN

  • Filter mit einem Klick, um häufige Lecks zu finden einschließlich:Objekte, die nur von Ereignishandlern am Leben gehalten werden, Objekte, die entsorgt werden, aber noch leben, und Objekte, die nur durch eine Referenz von einem entsorgten Objekt am Leben gehalten werden.Dies ist wahrscheinlich das Killer-Feature von ANTS – das Auffinden von Lecks geht dadurch unglaublich schnell.Meiner Erfahrung nach werden die meisten Lecks dadurch verursacht, dass Event-Handler nicht ausgehakt werden und ANTS Sie direkt zu diesen Objekten weiterleitet.Eindrucksvoll.
  • Diagramm zur Objektaufbewahrung.Während die gleichen Informationen in Scitech verfügbar sind, sind sie in ANTS viel einfacher zu interpretieren.
  • Zeigt die Größe mit untergeordneten Elementen zusätzlich zur Größe des Objekts selbst an (aber leider nur, wenn eine Instanz ausgewählt ist, nicht in der Gesamtklassenliste).
  • Bessere Integration in Visual Studio (Rechtsklick auf das Diagramm, um zur Datei zu springen)

Scitech .NET Memory Profiler

  • Zeigt den Stack-Trace an, wenn das Objekt zugewiesen wurde.Das ist Wirklich nützlich für Objekte, die an vielen verschiedenen Orten zugeordnet sind.Mit ANTS ist es schwierig, genau zu bestimmen, wo das geleakte Objekt erstellt wurde.
  • Zeigt die Anzahl der Einwegobjekte an, die nicht entsorgt wurden.Auch wenn dies kein Hinweis auf ein Leck ist, werden doch Möglichkeiten aufgezeigt, dieses Problem zu beheben und die Leistung Ihrer Anwendung durch eine schnellere Speicherbereinigung zu verbessern.
  • Detailliertere Filteroptionen (mehrere Spalten können unabhängig voneinander gefiltert werden).
  • Präsentiert Informationen über die Gesamtzahl der erstellten Objekte (einschließlich des gesammelten Mülls).ANTS zeigt nur „Live“-Objektstatistiken an.Dies erleichtert die Analyse und Optimierung der gesamten Anwendungsleistung (z. B.Identifizieren Sie, wo unnötigerweise viele Objekte erstellt werden, die nicht unbedingt undicht sind).

Zusammenfassend denke ich, dass ANTS Ihnen hilft, schneller zu finden, was verloren geht, während Scitech etwas mehr Details über die Gesamtleistung Ihres Anwendungsspeichers und einzelne Objekte liefert, sobald Sie wissen, worauf Sie achten müssen (z. B.Stack-Trace bei der Erstellung).Wenn ANTS die Stapelverfolgung und die Verfolgung nicht entsorgter Einwegobjekte hinzugefügt würde, würde ich keine Notwendigkeit sehen, etwas anderes zu verwenden.

Ich habe kürzlich 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 bedienen und Teile davon sind kostenlos, auch für die kommerzielle Nutzung.

[Vollständige Offenlegung]

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

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

Vergiss es nicht nProf - ein absolut guter Freeware-Profiler.

ich habe gefunden dotTrace Profiler von JetBrains ein hervorragendes Profilierungstool für .NET zu sein und ihr ASP.NET-Modus ist hochwertig.

ANTS-Profiler.Ich habe nicht viele davon verwendet, aber über ANTS kann ich mich eigentlich nicht beschweren.Die Visualisierung ist wirklich hilfreich.

AutomatedQA AQTime für Timing und SciTech MemProfiler als Erinnerung.

Wenn Sie etwas Schnelles, Einfaches und Kostenloses suchen, http://code.google.com/p/slimtune/ Scheint den Job gut zu machen.

Ich habe mit gearbeitet JetBrains dotTrace für WinForms und Konsolen-Apps (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 Firmenlizenz.Wenn jedoch noch jemand günstigere oder sogar kostenlose kennt, würde ich es auch gerne hören :-)

Vergessen Sie nicht die großartige Scitech .net-Speicherprofiler

Es eignet sich hervorragend, um herauszufinden, warum Ihrer .net-App nicht mehr genügend Arbeitsspeicher zur Verfügung steht.

Ich würde die Fähigkeit von dotTrace hinzufügen Diff-Speicher- und Leistungstrace-Sitzungen ist absolut von unschätzbarem Wert (ANTS verfügt möglicherweise auch über eine Speicherdifferenzfunktion, 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 bei einer riesigen älteren .NET-Anwendung (wie in meinem Fall), bei der die Leistung nie Priorität hatte und bei der es zu Engpässen kommen könnte SEHR langweilig.Wenn Sie einen Vorher-Nachher-Diff durchführen, können Sie das sehen Änderung der Aufrufanzahl für jede Methode und das Änderung der Dauer für jede Methode.

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 diese näher an dem liegen, was der Benutzer tatsächlich sieht).

Endeffekt:dotTrace funktioniert großartig und der Unterschied ist von unschätzbarem Wert.

AQTime ist angemessen, erfordert aber eine gewisse Einarbeitungszeit und ist nicht so einfach zu verwenden wie die in Team Suite integrierte Version

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

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).Ein Doppelklick auf die angezeigte Methode springt direkt in den Quellcode.

Ich habe in der Vergangenheit mit dem Profiler von RedGate gearbeitet.Hat den Job für mich erledigt.

Ich habe es selbst noch nicht ausprobiert, aber vielleicht dotTrace?Ihre ReSharper-Anwendung ist sicherlich eine gute.Vielleicht ist dotTrace auch :)

Ich bezweifle, dass der Profiler, der mit Visual Studio Team System geliefert wird, 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 im VS Team System verfügbar, aber wenn Sie Zugriff darauf haben, lohnt es sich, einen Blick darauf zu werfen.

Die neueste Version des ANTS Memory Profilers (ich glaube, es ist 5) ist einfach der Hammer!!!Ich habe ein Leck mit WinDbg und SOS verfolgt, da es sich zuvor als die beste Methode erwiesen hatte. Dann habe ich ANTS ausprobiert und es innerhalb von Minuten geschafft.Wirklich eine wunderbare Software.

Ich würde gerne hinzufügen deinkit Java und .net Profiler, ich liebe es für Java, habe die .NET-Version allerdings noch nicht ausprobiert.

Leider scheiterten die meisten Profiler, die ich ausprobiert habe, bei der Verwendung mit Tail Calls, allen voran ANTS.Am Ende schreibe ich einfach mein eigenes.Es gibt eine einfache Implementierung auf CodeProject, die Sie als Basis verwenden können.

Intel® VTune™ Leistungsanalysator für eine schnelle Probenahme

Ich muss Sie auf ein erstaunliches Werkzeug aufmerksam machen, das ich vor einiger Zeit verwendet habe. AVICode Interceptor Studio.In meinem vorherigen Unternehmen haben wir dieses wunderbare Tool zum Profilieren der Webanwendung verwendet (Dies soll die größte Einzel-Webanwendung der Welt und das größte jemals durchgeführte zivile IT-Projekt sein).Das Performance-Team hat mit Hilfe dieses großartigen Tools Wunder vollbracht.Es ist mühsam, es zu konfigurieren, aber das ist eine einmalige Aktivität und ich würde sagen, es lohnt sich.Kasse diese Seite für Details.

Danke, James

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

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

Wenn die Lizenzierung ein Problem darstellt, können Sie WINDBG für die Speicherprofilierung ausprobieren

Der NuMega True Time Profiler lebt im DevPartner Studio von Micro Focus weiter.Es bietet Details auf Zeilen- und Methodenebene für .NET-Apps, die nur PDBs erfordern, keine Quelle erforderlich (aber es hilft). Es kann mithilfe unseres proprietären Timing-Treibers im Kernelmodus pro Thread zwischen algorithmisch anspruchsvollen 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 Stecker:Ich arbeite an der DevPartner-Produktlinie.Follow-up unter http://www.DevPartner.com für Neuigkeiten zum Start von 10.5.

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

Ich habe bei der Verwendung einer großen C#-App viele Probleme festgestellt Das.

Normalerweise tritt das Problem beim Starten oder Herunterfahren auf, wenn Plugins geladen werden und große Datenstrukturen erstellt, zerstört, serialisiert oder deserialisiert werden.Oft werden sie mehr als einmal erstellt und initialisiert, und Änderungshandler werden mehrmals hinzugefügt, was das Problem noch verschlimmert.

In solchen Fällen kann das Programm so träge sein, dass nur zwei Stichproben ausreichen, um die fehlerhaften Methoden-/Funktions-/Eigenschaftsaufrufseiten zu ermitteln.

Wir haben uns in meinem Unternehmen für YourKit Profiler für .NET entschieden, da es das beste Preis-Leistungs-Verhältnis bot (Preis vs.Besonderheit).Für ein kleines Unternehmen, das eine flexible Lizenzierung (Floating-Lizenzen) anstrebt, war es die perfekte Wahl – ANTS war damals ein Entwicklersitz-Medaillon.

Außerdem hatten wir die Möglichkeit, eine Verbindung zum laufenden Prozess herzustellen, was mit dotTrace nicht möglich war.Beachten Sie jedoch, dass das Anhängen nicht die beste Option ist, da alles in .NET langsamer wird. Dies war jedoch die einzige Möglichkeit, ein Profil für .NET-Anwendungen zu erstellen, die von anderen Prozessen gestartet wurden.Was die Funktionen angeht, waren ANTS und dotTrace besser – aber am Ende war YourKit gut genug.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top