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 zum Optimieren von Code mithilfe der Profilerstellungstools finden Sie unter Fallstudie: Leitfaden für Anfänger zum Optimieren von Code.
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 benötigen ein Tool wie „CPU-Auslastung“, wollen aber genaue Aufrufzahlen und die für Funktionen aufgewendete Zeit auf der Grundlage der Wanduhrzeit. • Sie wollen die blockierte Zeit sehen, z. B. die Zeit, die Sie mit dem Warten auf Sperren verbringen. • Hinweis: Dieses Tool erfordert zusätzlichen Overhead (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 | Livebericht für .NET-Indikatoren. | • Starten Sie eine Untersuchung der allgemeinen Leistungsprobleme. • Sie wünschen sich eine Ablaufverfolgung für zählerbasierte .NET-Metriken wie Ausnahmen pro Sekunde, automatische Speicherbereinigung 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 |
Welche Tools werden von Linux unterstützt?
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.
- Fallstudie: Einführung in die Optimierung von Code
- Fallstudie: Isolieren eines Leistungsproblems
- Verbessern der Leistung von Visual Studio mit dem neuen Instrumentierungstool
- Fallstudie: Doppelte Leistung in unter 30 Minuten