Freigeben über


Welches Leistungstool sollte ich verwenden? (C#, Visual Basic, C++, F#)

Visual Studio bietet eine Vielzahl von Profilerstellungstools, mit denen Sie verschiedene Arten von App-Leistungsproblemen je nach App-Typ diagnostizieren können. In diesem Artikel stellen wir Informationen bereit, die Ihnen helfen, das richtige Tool für Ihr Szenario und Ihren Anwendungstyp zu finden.

Ein allgemeiner Ansatz zur Optimierung von Code mithilfe der Profilerstellungstools finden Sie in Fallstudie: Leitfaden für Anfänger zur Optimierung von Code.

Welches Tool sollte ich verwenden?

In der folgenden Tabelle sind die verschiedenen Tools aufgeführt, die Visual Studio bietet und allgemeine Szenarien für die Auswahl des Tools bereitstellt.

Leistungstool Beschreibung Wann soll das Tool verwendet werden?
CPU-Auslastung Zeigt an, wo die CPU Zeit verbringt. • Beginnen Sie eine Untersuchung für allgemeine Leistungsprobleme.
• Untersuchen der hohen Server-CPU-Auslastung.
• Untersuchen sie DevOps-Szenarien, z. B. wenn Bestellungen nicht zur Einzelhandelswebsite gelangen.
• Cpu-Auslastung optimieren.
• Untersuchen der Latenz in API-Aufrufen.
Flammendiagramm Ansicht im CPU-Auslastungstool, das eine alternative Visualisierung der Aufrufstruktur bietet Untersuchen der Latenz in API-Aufrufen
Langsamster Pfad Ansicht im Tool für die CPU-Auslastung, die zeigt, wo die meiste CPU-Zeit in Ihrer Anwendung aufgewendet wurde. Untersuchen der Latenz in API-Aufrufen
Speicherauslastung Zeigt den Speicher Ihrer App an, um Probleme wie Speicherverluste zu finden. • Optimieren der Speicherauslastung
• Untersuchung des Einfrierens der Benutzeroberfläche
• Untersuchen des vermuteten Speicherverlusts (systemeigener Code)
.NET Objektzuweisung Zeigt an, wo .NET-Objekte zugeordnet sind, und Informationen zur Garbage Collection. • Optimieren der .NET-Speicherauslastung
• Analysieren der Garbage Collection
Instrumentierung Zeigt genaue Anrufanzahl und Anrufzeiten an. • Sie benötigen ein Tool wie CPU-Auslastung, aber Sie sollten genaue Aufrufanzahlen und die nach Gesamtbetrachtungszeit aufgewendete Zeit in Funktionen wissen.
• Sie sollten gesperrte Zeiten anzeigen, z. B. die Zeit, die für das Warten auf Sperren aufgewendet wird.
• Hinweis: Dieses Tool erfordert zusätzlichen Mehraufwand.
.NET-Leistungsindikatoren Livebericht für .NET-Zähler • Beginnen Sie eine Untersuchung für allgemeine Leistungsprobleme.
• Sie sollten eine Ablaufverfolgung von zählerbasierten Metriken mit .NET wie Ausnahmen pro Sekunde, GC und CPU-Auslastung durchführen.
BenchmarkDotNet Reporting für Benchmarks auf der Grundlage von BenchmarkDotNet liefern. • Abrufen verschiedener Visualisierungen von BenchmarkDotNet gesammelten Daten, z. B. CPU-Auslastung oder Speicherzuweisungen, basierend auf dem verwendeten Diagnoser.
Datei-Eingabe/Ausgabe Zeigt Ihre Datei-E/A-Vorgänge und wie lange sie dauern und wie viele Daten sie verarbeiten. Untersuchen des Einfrierens einer Benutzeroberfläche
PerfTips Zeigt eine schnelle Messung der Leistungsinformationen während der Interaktion mit Ihrem Code. Beim Debuggen möchten Sie die verstrichene Zeit zwischen dem vorherigen Schrittvorgang (oder Haltepunkt) zum aktuellen Schritt oder Haltepunkt anzeigen.
Ereignisanzeige Zeigt HTTP-Anforderungen, Protokollnachrichten und Ausnahmen an. • Untersuchung der Latenz in API-Aufrufen
• Untersuchen der langsamen Anwendung, die auf einem Remotewebserver ausgeführt wird
.NET Async Zeigt die Verwendung der async/await-Syntax in .NET-Anwendungen. Untersuchen Sie verdächtiges Leistungsproblem mit asynchronen Code.
Datenbank Zeigt die Leistung Ihrer Datenbankabfragen an. Untersuchen Sie die Leistung für Datenbankabfragen, die entweder ADO.NET oder Entity Framework Core verwenden.
GPU-Verwendung Zeigt die allgemeine Hardwarenutzung Ihrer Direct3D-App an. Überprüfen Sie, ob die Leistung Ihrer App CPU-gebunden oder GPU-gebunden ist.
Bewerbungszeitplan Zeigt die UI-Leistung für XAML-Apps an. Untersuchen der UI-Leistung in XAML-Apps, z. B. zeitaufwand für das Rendern von Frames.
IntelliTrace Mit dem Debuggertool können Sie Ereignisse aufzeichnen und den Anwendungszustand an verschiedenen Ausführungspunkten untersuchen. Sie möchten, dass ein Tool den Anwendungszustand an verschiedenen Stellen untersuchen soll, nicht nur den aktuellen Anwendungszustand.

Welche Tools werden für mein Projekt unterstützt?

In der folgenden Tabelle sind die verschiedenen Tools aufgeführt, die Visual Studio bietet, und die verschiedenen Projekttypen, mit denen Sie sie verwenden können:

Leistungstool .NET C/C++ UWP (Universelle Windows-Plattform) ASP.NET/ASP.NET Core
CPU-Auslastung ja ja ja ja
Speicherauslastung ja ja ja ja
.NET Objektzuweisung ja Nein ja ja
Instrumentierung ja ja ja ja
.NET-Leistungsindikatoren Ja (nur.NET Core/5+) Nein Nein Ja (nur ASP.NET Core)
BenchmarkDotNet ja Nein Nein teilweise
Datei-Eingabe/Ausgabe ja ja ja ja
PerfTips ja ja ja ja
Ereignisanzeige ja ja ja ja
.NET Async ja Nein ja ja
Datenbank Ja (nur.NET Core/5+) Nein Nein Ja (nur ASP.NET Core)
GPU-Verwendung ja ja ja Nein
Bewerbungszeitplan Ja (XAML) Nein ja Nein
Leistungs-Explorer Nein Nein Nein Nein
IntelliTrace .NET nur mit Visual Studio Enterprise Nein .NET nur mit Visual Studio Enterprise .NET nur mit Visual Studio Enterprise

Die Unterstützung für CMake-Projekte ist identisch mit C++. Für die CPU-Auslastung, die Speicherauslastung, die Datei-E/A und die Ereignisanzeige können Sie Profilerstellungstools für das Startprojekt ausführen. Für die Instrumentierung und GPU-Verwendung müssen Sie die ausführbare Datei jedoch als Ziel im Performance Profiler (Alt + F2) festlegen, indem Sie "Ausführbare Datei " als Startprojekt auswählen.

Die Unterstützung für CMake-Projekte ist identisch mit C++. Sie müssen die ausführbare Datei jedoch als Ziel im Performance Profiler (Alt + F2) festlegen, indem Sie "Ausführbare Datei " als Startprojekt auswählen.

Welche Tools werden unter Linux unterstützt?

Die folgenden Tools werden mit Linux oder WSL als Zielplattform sowie Windows unterstützt:

  • CPU-Auslastung
  • .NET-Objektzuordnungsnachverfolgung
  • .NET Async
  • .NET-Leistungsindikatoren
  • BenchmarkDotNet
  • Ereignisanzeige
  • Datenbank

Lernen Sie, wie man die Profiler verwendet

Die folgenden Artikel und Blogbeiträge enthalten weitere Informationen, die Ihnen helfen, die Visual Studio-Leistungstools effektiv zu verwenden.