dotTrace ist ein Leistungsprofiler für .NET-Anwendungen, der direkt aus Visual Studio/JetBrains Rider heraus funktioniert und hervorragend dazu geeignet ist, Leistungsengpässe aufzuspüren und zu analysieren. Lesen Sie weiter für mehr Informationen.
dotTrace hilft Ihnen, Leistungsengpässe in zahlreichen .NET-Anwendungen aufzuspüren. Dazu zählen Desktop-Anwendungen, .NET Core, auf IIS- oder IIS Express-Webservern gehostete ASP.NET-Anwendungen, Mono- und Unity-Anwendungen, WCF-Dienste, Windows-Dienste, Anwendungen der Universellen Windows-Plattform und Unit-Tests.
Mit dotTrace können Sie Anwendungen profilieren, die auf einer beliebigen unterstützten Version von .NET Framework, .NET Core, .NET, Mono 5.10+ oder Unity 2018.3+ basieren.
Im Gegensatz zum „klassischen“ Performance-Profiling, mit dem Sie nur die Ausführungsdauer von Methodenaufrufen messen können, wird mit Timeline-Profiling die Verteilung der Aufrufe im Laufe der Zeit ersichtlich.
Indem die Daten eines Methodenaufrufs an eine Timeline gebunden werden, kann dieser Profiling-Modus mehr als nur die langsamste Methode aufspüren: Er ermöglicht die Diagnose von Leistungsproblemen, bei denen die Reihenfolge der Vorkommnisse von Bedeutung ist, wie z. B. Einfrieren der UI, übermäßige Garbage Collection, ungleichmäßige Workload-Verteilung, ineffiziente Datei-I/O und mehr.
Aber auch traditionelle Profiling-Modi stehen in dotTrace zur Verfügung. Sampling-Profiling ist die einfachste Methode, um die Gesamtleistung einer Anwendung zu evaluieren. Die Profiling-Modi Tracing und line-by-line sind besonders nützlich, wenn Sie die Ausführung eines bestimmten Algorithmus im Detail ansehen möchten.
Profiling-Daten lassen sich anhand von Filtern, dem Aufrufbaum oder Diagrammen manipulieren. Durch die Anwendung von Filtern erhalten Sie eine Reihe von Zeitintervallen, die anhand einer bestimmten Bedingung ausgewählt wurden. Die Funktionsweise ähnelt dem Ausführen einer Abfrage einer Datenbank, die dann die gewünschten Daten liefert.
Um beispielsweise herauszufinden, ob das Einfrieren der UI durch Blockieren der Garbage Collection verursacht wird, können Sie dotTrace auffordern, alle Zeitintervalle auf dem Primär-Thread auszuwählen, in denen das Einfrieren der UI auftritt und eine GC-Blockierung ausgeführt wurde. Das mag zwar kompliziert klingen, jedoch lässt sich diese Filterkombination mit nur zwei Klicks aktivieren.
dotTrace ist in Visual Studio integriert. Deshalb können Sie das Profiling von Anwendungen vornehmen, an denen Sie gerade arbeiten, ohne die IDE verlassen zu müssen. Mit dem dotTrace-Plugin in Rider können Sie ein zeitliniengebundenes Performance-Profiling durchführen, statische Methoden, Unit-Tests, laufende Prozesse, Remote-Anwendungen und vieles mehr profilieren.
Die Integration mit Visual Studio und JetBrains Rider ermöglicht eine nahezu nahtlose Profiling-Erfahrung, da ein Wechseln zwischen Ihrer IDE und dem Profiler nicht mehr nötig ist.
dotTrace vereinfacht die Analyse von asynchronem Code: Alle Bestandteile eines
async
-Aufrufs werden an einem Ort angezeigt, sodass Sie diese nicht in unterschiedlichen
Aufruflisten suchen müssen.
Mit dotTrace können Sie das Profiling einer beliebigen statischen Methode unmittelbar in Ihrem Code vornehmen. Platzieren Sie einfach den Textcursor auf der Methode, drücken Sie Alt+Enter und wählen Sie Debug | Profile in der Aktionsliste aus.
Die Möglichkeiten sind grenzenlos. Sie können das Profiling Ihres Codes an Ort und Stelle vornehmen, direkt nachdem Sie ihn geschrieben haben! Der Build Ihrer Projektmappe, das Ausführen im Profiler, das Starten eines Anwendungsszenarios, das Ihren neuen Code ausführt, und ähnliche Prozesse sind nicht mehr nötig.
In der Regel wird das Profiling von lokal ausgeführten Anwendungen durchgeführt. Was aber, wenn bei einer Anwendung auf einem Remote-Webserver Verzögerungen auftreten?
dotTrace kann sich mit einem Remote-Gerät verbinden, um das Profiling einer Standalone- oder Webanwendung oder eines Windows-Dienstes vorzunehmen. Sie müssen dotTrace dort nicht einmal installieren, sondern nur einige Dateien kopieren.
dotTrace kann für das Profiling an eine laufende Anwendung angehängt und nach der Erfassung der Profiling-Daten wieder entfernt werden.
Dadurch wird der Overhead minimiert, der durch das Ausführen einer Anwendung im Profiler entsteht. Was noch wichtiger ist: Dies ermöglicht Ihnen, Leistungsprobleme in Produktionsumgebungen zu finden, in denen der ständige Neustart einer Anwendung für die Erstellung ihres Profils nicht realistisch ist.
Wenn Sie Visual Studio zusammen mit ReSharper* oder JetBrains Rider** verwenden, können Sie das Profiling von Unit-Tests einfach aus dem Code-Editor oder einem Unit-Test-Runner heraus starten.
* Selbst wenn Sie ReSharper nicht installiert haben, können Sie das Profiling eines nativen Unit-Test-Runners von NUnit, MSTest oder xUnit vornehmen.
** Die Profiling-Funktionen stehen nur Lizenznehmern von dotUltimate oder All Products Pack zur Verfügung.
Bei der Analyse von Timeline-Profiling-Snapshots können Sie Zeitintervalle ausfiltern, in denen Ihre Webanwendung eingehende HTTP-Anfragen verarbeitet. Erhalten Sie exakte Daten, bestimmen Sie die Hauptursache eines Problems und spüren Sie langsame Methoden auf. Machen Sie Ihre Webanwendungen dank Timeline-Profiling schneller.
Verwenden Sie das Timeline-Profiling, um den Einfluss jeder einzelnen Abfrage auf die Leistung der Anwendung zu analysieren. Der Filter SQL Queries zeigt alle Abfragen und SQL-Verbindungen zusammen mit deren Leistungsstatistiken an.
Der Einfachheit halber kann der Inhalt einer Abfrage zur weiteren Analyse in einem separaten Dialogfenster geöffnet werden. Sie können weiterhin alle Daten filtern, indem Sie eine oder mehrere Abfragen auswählen und die Methoden untersuchen, die diese ausgeführt haben.
Nie wieder ineffiziente SQL-Abfragen!
Das Profiling SDK ermöglicht Ihnen, eine Profiling-Sitzung direkt aus Ihrem Code heraus zu kontrollieren: Sie können die Erfassung von Profiling-Daten programmgesteuert starten und beenden, aufgenommene Snapshots speichern usw.
Dadurch werden zwei wertvolle Anwendungsszenarien ermöglicht. Zum einen können Sie das SDK dazu verwenden, den Profiling-Umfang einzugrenzen und einzelne Codeabschnitte für das Profiling auszuwählen. Das andere Nutzungsszenario ist das selbstständige Profiling von Anwendungen: Sie können Statistiken über das Verhalten Ihrer Anwendung auf den Endgeräten von Benutzern sammeln.
dotTrace umfasst Profiling-Tools für die Befehlszeile, die dazu verwendet werden können, das Sammeln von Profiling-Snapshots zu automatisieren. Dies ist unerlässlich, wenn Sie das Profiling zu einem Bestandteil Ihrer Continuous Integration-Builds machen möchten.
Wenn Sie JetBrains TeamCity als CI-Server verwenden, vergessen Sie nicht, auch das dotTrace-Plugin für TeamCity zu installieren. Mit diesem Plugin können Sie das Profiling von Integrationstests vornehmen und auf diese Weise einer Regression der Anwendungsleistung vorbeugen. Legen Sie einfach einen Schwellenwert für den Zeitrahmen der Testausführung fest: Wird dieser überschritten, speichert das Plugin automatisch einen Leistungs-Snapshot und lässt den Test scheitern.
Manchmal müssen Entwickler nach stundenlanger Optimierung einer zeitraubenden Funktion das gesamte Profiling von Grund auf neu starten, um zu ermitteln, ob die Optimierung tatsächlich erfolgreich war.
Das ist mit dotTrace nicht der Fall. Der Profiler kann basierend auf einer von Ihnen eingestellten Zeitanpassung das Timing aller Funktionen in einem Snapshot unmittelbar neu berechnen, ohne das Profiling Ihrer Anwendung erneut vornehmen zu müssen. Man stellt dem Profiler sozusagen die einfache Frage: „Was geschieht, wenn ich diese Funktion um 40 % optimiere?“ Sie müssen lediglich die neue Zeit für eine Funktion oder alle Funktionen einer bestimmten Klasse angeben. Die Zeitwerte sämtlicher Snapshots werden neu berechnet.
dotTrace kann zwei beliebige Leistungs-Snapshots derselben Anwendung vergleichen. Das Tool generiert einen Vergleichs-Snapshot, der die Differenz in der Anzahl von Aufrufen und in den von jeder Funktion benötigten Zeiten darstellt. Vergleichs-Snapshots können auf die gleiche Weise eingesehen und analysiert werden wie reguläre Leistungs-Snapshots.
Kostenlose 30-Tage-Testversion verfügbar