Funktionen von dotTrace

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.

Einige der unterstützten Anwendungsarten

Profiling aller Arten von .NET-Anwendungen

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.

Unterstützung für Windows, macOS und Linux

Läuft unter Windows, macOS und Linux

dotTrace unterstützt Projekte für .NET Framework 1.0 bis 4.7, .NET Core 1.0 bis 3.0, Mono 5.10 oder höher und Unity 2018.3 oder höher. Unter macOS und Linux kann dotTrace nur als Teil von JetBrains Rider oder als Befehlszeilenprofiler verwendet werden.

dotTrace-Profiling-Modi Timeline, Sampling, Tracing und line-by-line

Timeline und weitere Profiling-Modi

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.

Der Profiling-Modus "Timeline" in Aktion

Ein neues Profiling-Erlebnis

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.

Integrierte Timeline-Ansicht in Visual Studio. Navigation zur Methodendeklaration

Umfassende Integration mit Visual Studio/Rider

dotTrace ist tief in Visual Studio/JetBrains Rider integriert. Deshalb können Sie das Profiling von Anwendungen vornehmen, die Sie derzeit entwickeln, ohne die IDE verlassen zu müssen. Außerdem können Ergebnisse des Timeline-Profilings jetzt direkt in der IDE angezeigt werden. Sie haben einen Hotspot-Aufruf im Aufrufbaum gefunden? Navigieren Sie sofort zur Methodendeklaration!

Die Integration mit Visual Studio/JetBrains Rider ermöglicht eine nahezu nahtlose Profiling-Erfahrung, da ein Wechseln zwischen der IDE und dem Profiler nicht mehr nötig ist.

Profiling von async-Aufrufen

Profiling von async-Aufrufen

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.

Profiling von statischen Methoden direkt in Visual Studio

Profiling von statischen Methoden

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.

Profiling auf einem Remote-Gerät ausführen

Profiling von Remote-Anwendungen

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.

Profiler an laufende Prozesse anhängen

Mit laufenden Anwendungen verbinden

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.

Profiling von Unit-Tests

Profiling von Unit-Tests

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 „ReSharper Ultimate + Rider“ oder dem „All Products Pack“ zur Verfügung.

Analyse von eingehenden HTTP-Anfragen

Analyse von langsamen HTTP-Anfragen

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.

Analyse von SQL-Abfragen

Analyse von langsamen SQL-Abfragen

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!

Verwendung der dotTrace-Profiling API

Profiling SDK

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.

Ausführen von Unit-Tests als Schritt des Build-Prozesses im Profiler

Unterstützung der kontinuierlichen Integration

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 Plug-In 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 Plug-In automatisch einen Leistungs-Snapshot und lässt den Test scheitern.

Unmittelbare Zeitschätzung (Zeitanpassung)

Einschätzung von Leistungssteigerungen

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.

Vergleich von Snapshots

Vergleich von Snapshots

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.

dotTrace herunterladen

Kostenlose Testversion für 10 Nutzungstage