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

Visual Studio bietet eine Vielzahl von Profilerstellungstools, um Ihnen bei der Diagnose von unterschiedlichen Leistungsprobleme zu helfen, die vom App-Typ abhängen. In diesem Artikel finden Sie Informationen zur Auswahl des richtigen Tools für Ihr Szenario und Ihren Anwendungstyp.

Einen allgemeinen Ansatz zur Optimierung von Code mithilfe der Profilerstellungstools finden Sie unter Anleitung für Anfänger zur Codeoptimierung.

Welches Tool soll ich verwenden?

In der folgenden Tabelle finden Sie eine Liste der verschiedenen von Visual Studio angebotenen Tools und gängige Szenarien für die Toolauswahl.

Leistungstool BESCHREIBUNG Wann sollte ich das Tool verwenden?
CPU-Auslastung Zeigt an, womit die CPU Zeit aufwendet. • Anfängliche Untersuchung allgemeiner Leistungsprobleme
• Untersuchen einer hohen CPU-Auslastung des Servers
• Untersuchen von DevOps-Szenarien, wenn z. B. Bestellungen nicht bei einer Einzelhandelswebsite ankommen
• Optimieren der CPU-Auslastung
• Untersuchen der Latenzzeit bei API-Aufrufen.
Flammendiagramm Ansicht im CPU-Auslastungstool, das eine alternative Visualisierung der Aufrufstruktur bietet Untersuchen der Latenzzeit bei API-Aufrufen
Langsamster Pfad Ansicht im CPU-Auslastungstool, die zeigt, wofür der Großteil der CPU-Zeit in Ihrer Anwendung aufgewendet wurde Untersuchen der Latenzzeit bei API-Aufrufen
Speicherauslastung Zeigt den Arbeitsspeicher Ihrer App an, damit Sie Probleme wie Speicherverluste ermitteln können. • Optimieren der Speicherauslastung
• Untersuchen einer nicht reagierenden Benutzeroberfläche
• Untersuchen eines vermuteten Speicherlecks (nativer Code)
.NET-Objektzuordnung Zeigt die Zuordnungen von .NET-Objekten und Informationen zur Garbage Collection an • Optimieren der .NET-Speicherauslastung
• Analysieren der Garbage Collection
Instrumentation Zeigt die genaue Anzahl von Aufrufen und die Aufrufzeiten an. Sie sind auf der Suche nach einem Tool wie „CPU-Auslastung“, aber Sie benötigen genaue Aufrufzahlen und Ergebnisse, die auf der Gesamtbetrachtungszeit basieren. Dieses Tool erfordert zusätzlichen Mehraufwand.
Datei-E/A Zeigt Ihre Datei-E/A-Vorgänge mit ihrer Dauer und der verarbeiteten Datenmenge an Untersuchen einer nicht reagierenden Benutzeroberfläche
PerfTips Zeigt eine schnelle Messung der Leistungsinformationen während der Interaktion mit Ihrem Code an. Während des Debuggens möchten Sie die verstrichene Zeit zwischen dem Vorgang im vorherigen Schritt (oder Haltepunkt) bis zum aktuellen Schritt oder Haltepunkt anzeigen.
Ereignisanzeige Zeigt HTTP-Anforderungen, Protokollmeldungen und Ausnahmen an • Untersuchen der Latenzzeit bei API-Aufrufen
• Untersuchen einer langsamen Anwendungsausführung auf einem Remotewebserver
.NET Async Zeigt die Verwendung von async/await in .NET-Apps an. Untersuchen von vermuteten Leistungsproblemen mit asynchronem Code
.NET-Indikatoren Visualisierung für .NET-Zähler. Sie benötigen eine Visualisierung für auf .NET-Zählern basierende Metriken, z. B. Ausnahmen pro Sekunde, Garbage Collection und CPU-Auslastung.
Datenbank Zeigt die Leistung Ihrer Datenbankabfragen an. Untersuchen Sie die Leistung für Datenbankabfragen, die entweder ADO.NET oder Entity Framework Core verwenden.
GPU-Nutzung Zeigt allgemeine Informationen zur Hardwarenutzung Ihrer Direct3D-App an. Untersuchen Sie, ob die Leistung Ihrer App CPU- oder GPU-abhängig ist.
Anwendungszeitachse Zeigt die Leistung der Benutzeroberfläche für XAML-Apps an. Untersuchen Sie die Leistung der Benutzeroberfläche bei XAML-Apps, z. B. den Zeitaufwand für das Rendern von Frames.
IntelliTrace Debuggertool, mit dem Sie Ereignisse aufzeichnen und den Anwendungsstatus bei verschiedenen Ausführungspunkten untersuchen können. Sie benötigen ein Tool, das den Anwendungsstatus an verschiedenen Stellen untersucht, nicht nur den aktuellen Anwendungszustand.

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

In der folgenden Tabelle finden Sie eine Liste der von Visual Studio angebotenen Tools und der verschiedenen Projekttypen, für die sie verwendet werden können:

Leistungstool .NET C/C++ UWP ASP.NET/ASP.NET Core
CPU-Auslastung ja Ja Ja ja
Speicherauslastung ja Ja Ja ja
.NET-Objektzuordnung ja Nein ja ja
Instrumentation ja Ja Ja ja
Datei-E/A ja Ja Ja ja
PerfTips ja Ja Ja ja
Ereignisanzeige ja Ja Ja ja
.NET Async ja Nein ja ja
.NET-Indikatoren Ja (nur .NET Core/5+) nein Nein Ja (nur ASP.NET Core)
Datenbank Ja (nur .NET Core/5+) nein Nein Ja (nur ASP.NET Core)
GPU-Nutzung ja Ja Ja Nein
Anwendungszeitachse ja (XAML) nein Ja nein
Leistungs-Explorer Nein Nein Nein Nein
IntelliTrace Nur .NET mit Visual Studio Enterprise nein Nur .NET mit Visual Studio Enterprise Nur .NET mit Visual Studio Enterprise

Die folgenden Tools werden sowohl für Linux als Zielplattform als auch für Windows unterstützt:

  • CPU-Auslastung
  • Nachverfolgung der .NET-Objektzuordnung
  • .NET Async
  • .NET-Indikatoren
  • Ereignisanzeige
  • Datenbank

Informationen zur Verwendung der Profiler

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