Referenz: Windows Leistungsanalyse-Ansichten

Die C++-Buildeinblick-Tools sind in Visual Studio 2019 und höher verfügbar. Um die Dokumentation für diese Version anzuzeigen, legen Sie das Visual Studio-Versionsauswahlsteuerelement für diesen Artikel auf Visual Studio 2019 oder höher fest. Es befindet sich am Anfang des Inhaltsverzeichnisses auf dieser Seite.

Dieser Artikel enthält Details zu den einzelnen C++ Build Insights-Ansichten, die in Windows Performance Analyzer (WPA) verfügbar sind. Auf dieser Seite finden Sie:

  • Beschreibungen der Datenspalten
  • Verfügbare Voreinstellungen für die einzelnen Ansichten sowie Informationen zu deren beabsichtigten Einsatzzwecken und dem jeweiligen bevorzugten Anzeigemodus

Wenn Sie WPA noch nicht lange einsetzen, sollten Sie sich zunächst mit den WPA-Grundlagen für C++ Build Insights vertraut machen.

Build-Explorer

Die Ansicht „Build-Explorer“ dient folgenden Zwecken:

  • zur Diagnose von Parallelitätsproblemen
  • zur Feststellung, ob die Verarbeitung, Codegenerierung oder der Linker zur Buildzeit dominiert
  • Ermitteln von Engpässen oder ungewöhnlich langen Buildaktivitäten

Datenspalten der Ansicht „Build-Explorer“

Spaltenname Beschreibung
BuildTimelineDescription Eine Textbeschreibung der Zeitachse, in der die aktuelle Aktivität oder Eigenschaft auftritt
BuildTimelineId Eine nullbasierter Bezeichner für die Zeitachse, in der die aktuelle Aktivität oder Eigenschaft auftritt
Komponente Diese Komponente wird kompiliert oder verknüpft, sobald das aktuelle Ereignis ausgelöst wurde. Der Wert dieser Spalte ist <"X-Info> aufrufen", wenn keine Komponente diesem Ereignis zugeordnet ist. „X“ wird dabei durch einen eindeutigen numerischen Bezeichner für den Aufruf ersetzt, der zum Zeitpunkt der Ereignisauslösung ausgeführt wurde. Dieser Bezeichner ist mit dem Wert in der InvocationId-Spalte für dieses Ereignis identisch.
Anzahl Die Anzahl der Aktivitäten oder Eigenschaften, die durch diese Datenzeile dargestellt werden – Der Wert ist immer 1. Er ist nur in Aggregationsszenarios von Bedeutung, in denen mehrere Zeilen gruppiert werden.
ExclusiveCPUTime Die CPU-Zeit in Millisekunden, die für diese Aktivität aufgewendet wird, Dabei wird die Zeit für untergeordnete Aktivitäten nicht berücksichtigt.
ExclusiveDuration Die Dauer dieser Aktivität in Millisekunden, Die Dauer der untergeordneter Aktivitäten wird dabei nicht berücksichtigt.
InclusiveCPUTime Dies ist die CPU-Zeit in Millisekunden, die für diese Aktivität und alle untergeordneten Aktivitäten aufgewendet wird.
InclusiveDuration Dies ist die Dauer dieser Aktivität und aller untergeordneten Aktivitäten in Millisekunden.
InvocationDescription Eine Textbeschreibung des Aufrufs, bei dem dieses Ereignis aufgetreten ist – aus dieser geht hervor, ob cl.exe oder link.exe beteiligt war, und ein eindeutiger numerischer Aufrufbezeichner ist enthalten. Falls bei dem Aufruf eine Komponente kompiliert oder verknüpft wurde, enthält diese Spalte auch den vollständigen Pfad zu dieser Komponente. Falls bei dem Aufruf keine Komponente kompiliert wurde, wird kein Pfad angegeben. Dies gilt auch für Aufrufe, bei denen mehrere Komponenten kompiliert wurden. Der Aufrufbezeichner entspricht dem Wert in der Spalte „InvocationId“.
InvocationId Dies ist ein eindeutiger numerischer Bezeichner für den Aufruf, in dem dieses Ereignis aufgetreten ist.
Name Der Name der Aktivität oder Eigenschaft, die durch dieses Ereignis dargestellt wird
Zeit Dieser Zeitstempel gibt an, wann das Ereignis aufgetreten ist.
Tool Das Tool, das beim Auftreten dieses Ereignisses ausgeführt wurde – Der Wert dieser Spalte ist entweder „CL“ oder „Link“.
Typ Der Typ des aktuellen Ereignisses – dieser Wert ist entweder Activity oder Property.
Wert Wenn das aktuelle Ereignis eine Eigenschaft ist, enthält diese Spalte deren Wert. Wenn das aktuelle Ereignis eine Aktivität ist, bleibt diese Spalte leer.

Voreinstellungen für die Ansicht „Build-Explorer“

Name der Voreinstellung Bevorzugter Anzeigemodus Verwendung
Aktivitätsstatistik Diagramm/Tabelle Verwenden Sie diese Voreinstellung, um aggregierte Statistiken für alle Build-Explorer-Aktivitäten anzuzeigen. Im Tabellenmodus sehen Sie auf einen Blick, ob die Verarbeitung, die Codegenerierung oder der Linker bei Ihrem Build dominiert. Die aggregierte Dauer für jede Aktivität wird in absteigender Reihenfolge sortiert. Klappen Sie den obersten Knoten auf, um mehr Details einzusehen und herauszufinden, welche Aufrufe im Rahmen der Topaktivitäten die meiste Zeit beanspruchen. Sie können die WPA-Einstellungen so anpassen, dass Durchschnittswerte oder andere Aggregationen angezeigt werden. Im Diagrammmodus können Sie nachprüfen, wann welche Aktivität während des Builds ausgeführt wurde.
Aufrufe Graph Scrollen Sie durch eine Liste der Aufrufe in der Diagrammansicht, die nach Startzeit sortiert ist. Sie können sie in Verbindung mit der CPU-Ansicht (stichprobenartig) verwenden, um Aufrufe zu suchen, die mit niedrigen CPU-Auslastungszonen übereinstimmen. Zudem können Parallelitätsprobleme ermittelt werden.
Aufrufeigenschaften Tabelle Hier finden Sie schnell wichtige Informationen zu einem bestimmten Compiler- oder Linkeraufruf. Bestimmen Sie die Version, das Arbeitsverzeichnis oder die vollständige Befehlszeile, die für den Aufruf verwendet wurde.
Zeitpläne Graph Hier wird ein Balkendiagramm für die Parallelisierung Ihres Builds angezeigt. So können Sie Parallelitätsprobleme und Engpässe auf einen Blick erkennen. Weisen Sie den Balken in der WPA-Konfiguration je nach Bedarf unterschiedliche Bedeutungen zu. Legen Sie die Aufrufbeschreibungen als letzte gruppierte Spalte fest, um ein farbcodiertes Balkendiagramm für alle Aufrufe anzuzeigen. So können Sie zeitaufwändige Aktivitäten schnell ermitteln. Vergrößern Sie das Diagramm anschließend, und legen Sie den Aktivitätsnamen als letzte gruppierte Spalte fest, um auch längere Aktivitätsnamen ohne Kürzung anzuzeigen.

Dateien

Die Ansicht „Dateien“ wird für Folgendes verwendet:

  • zur Ermittlung, welche Header am häufigsten eingeschlossen werden
  • Entscheidungshilfe, welche Komponenten in einen vorkompilierten Header eingeschlossen werden sollen

Datenspalten der Ansicht „Dateien“

Spaltenname Beschreibung
ActivityName Dies ist die Aktivität, die während der Auslösung dieses Dateiereignisses ausgeführt wurde. Derzeit lautet dieser Wert standardmäßig Parsing.
BuildTimelineDescription *
BuildTimelineId *
Komponente *
Anzahl *
Tiefe Dies ist die nullbasierte Position in der include-Struktur, in der diese Datei gefunden wird. Die Zählung beginnt beim Stamm der include-Struktur. Ein Wert von 0 entspricht in der Regel einer C- oder CPP-Datei.
ExclusiveDuration *
IncludedBy Dies ist der vollständige Pfad der Datei, die das aktuelle Element enthielt.
IncludedPath Der vollständige Pfad der aktuellen Datei
InclusiveDuration *
InvocationId *
StartTime Ein Zeitstempel, der die Uhrzeit darstellt, zu der das aktuelle Dateiereignis ausgelöst wurde
Tool *

* Der Wert dieser Spalte ist identisch mit der Build-Explorer-Ansicht .

Voreinstellungen der Ansicht „Dateien“

Name der Voreinstellung Bevorzugter Anzeigemodus Verwendung
Statistik Tabelle Sortieren Sie die Liste in absteigender Reihenfolge, um die Dateien mit der höchsten aggregierten Analysedauer zu ermitteln. Anhand dieser Informationen können Sie die Header neu strukturieren oder entscheiden, welche Komponenten der vorkompilierte Header enthalten soll.

Funktionen

Die Ansicht „Funktionen“ wird verwendet, um Funktionen mit übermäßig langer Codegenerierungsdauer zu ermitteln.

Datenspalten der Ansicht „Funktionen“

Spaltenname Beschreibung
ActivityName Dies ist die Aktivität, die während der Auslösung dieses Funktionsereignisses ausgeführt wurde. Derzeit lautet dieser Wert standardmäßig CodeGeneration.
BuildTimelineDescription *
BuildTimelineId *
Komponente *
Anzahl *
Duration Die Dauer der Codegenerierungsaktivität für diese Funktion
FunctionName Der Name der Funktion, für die Code generiert wird
InvocationId *
StartTime Dieser Zeitstempel gibt an, wann das aktuelle Funktionsereignis ausgelöst wurde.
Tool *

* Der Wert dieser Spalte ist identisch mit der Build-Explorer-Ansicht .

Voreinstellungen der Ansicht „Funktionen“

Name der Voreinstellung Bevorzugter Anzeigemodus Verwendung
Statistik Tabelle Wenn Sie die Liste in absteigender Reihenfolge sortieren, sehen Sie, bei welchen Funktionen die aggregierte Codegenerierungsdauer am höchsten war. Diese können Hinweise darauf liefern, wo Ihr Code das Schlüsselwort __forceinline übermäßig verwendet oder dass einige Funktionen zu groß sind.
Zeitpläne Graph Aus diesem Balkendiagramm gehen die Position und die Dauer der Funktionen hervor, bei denen die Generierung am längsten dauert. Überprüfen Sie, ob diese mit Engpässen in der Ansicht „Build-Explorer“ übereinstimmen. Wenn das der Fall ist, sollten Sie entsprechende Maßnahmen ergreifen, um die Codegenerierungsdauer zu verkürzen und Builds zu beschleunigen.

Siehe auch

Erste Schritte mit C++ Build Insights
Referenz: vcperf-Befehle
Lernprogramm: Grundlagen von Windows Leistungsanalyse
Windows Performance Analyzer