Tools für das Erstellen von WPF-Leistungsprofilen
Aktualisiert: November 2007
WPF stellt eine Suite von Tools zum Erstellen von Leistungsprofilen bereit, mit denen Sie das Laufzeitverhalten einer Anwendung analysieren und die Typen der anwendbaren Leistungsoptimierungen bestimmen können. In der folgenden Tabelle werden die fünf Leistungsprofilerstellungstools aufgelistet, die im Windows SDK-Tool WPFPerf enthalten sind:
Tool |
Beschreibung |
---|---|
Perforator |
Zum Analysieren des Renderingverhaltens. |
Visual Profiler |
Für die Erstellung von Profilen der Verwendung von WPF-Diensten, z. B. Layout und Ereignisbehandlung, durch Elemente in der visuellen Struktur. |
Working Set Analyzer |
Zum Analysieren der Workingseteigenschaften der Anwendung. |
Event Trace |
Zum Analysieren von Ereignissen und Generieren von Ereignisprotokolldateien. |
ETW Trace Viewer |
Aufzeichnen, Anzeigen und Durchsuchen von ETW (Event Tracing for Windows)-Protokolldateien in einem WPF-Benutzeroberflächenformat. |
Dieses Thema enthält folgende Abschnitte.
- Verwenden der Tools zur Leistungsprofilerstellung
- Perforator
- Visual Profiler
- Working Set Analyzer
- Event Trace
- ETW Trace Viewer
- Weitere Leistungstoolressourcen
- Verwandte Abschnitte
Verwenden der Tools zur Leistungsprofilerstellung
Nach der Installation des Windows SDK haben Sie die Option, die WPF Performance Suite zu installieren.
Tipp
Entfernen Sie vor der Installation der Performance Suite alle früheren Versionen von WPFPerf.exe.
Wenn Sie WPFPerf zum ersten Mal ausführen, wird das Dialogfeld Add Tool angezeigt:
Dialogfeld "Add Tool"
Wählen Sie die gewünschten Tools aus, und klicken Sie auf OK.
Tipp
Um die Tools für die Leistungsprofilerstellung ausführen zu können, muss das verwendete Benutzerkonto über Administratorrechte verfügen.
Perforator
Perforator ist ein Tool für die Leistungsprofilerstellung, mit dem das Renderingverhalten analysiert werden kann. Im Hauptfenster von Perforator werden mehrere Optionen angezeigt, mit denen Sie sehr spezifische Bereiche des Renderingverhaltens in einzelnen Abschnitten Ihrer Anwendung analysieren können.
Hauptfenster von Perforator
In Perforator können Sie verschiedene Optionen festlegen, die das Echtzeit-Renderingverhalten der Anwendung beeinflussen.
Option |
Beschreibung |
---|---|
Draw software rendering with purple tint |
Zeichnet alle Bereiche, die von der Softwarerenderingpipeline gerendert werden, in einem violetten Farbton. Diese Option betrifft Softwarerenderingziele, Software-3D-Inhalte und Softwarefallbacks bei Primitiven. |
Clear back-buffer before updating |
Löscht die Anwendungsfenster vor jeder Zeichenoperation. |
Show dirty region update overlay |
Jede von WPF vorgenommene Bildschirmaktualisierung wird durch eine Neueinfärbung angezeigt. Hierdurch können Sie feststellen, welche Bereiche der Anwendung zu welchem Zeitpunkt neu gezeichnet werden. |
Disable dirty region support |
Veranlasst WPF, das gesamte Fenster bei jeder Änderung neu zu zeichnen. Normalerweise wird nur der geänderte Teil eines Fensters neu gezeichnet. Durch das Aktivieren dieser Option wird das Rendering der Anwendung erheblich verlangsamt. |
Disable Opacity effects |
Deaktiviert bestimmte, potenziell rechenintensive Durchlässigkeitseffekte. |
Disable per-primitive software fallback |
Deaktiviert Softwarefallbacks für einzelne Renderingprimitive. Zwischenziele und andere Elemente des Softwarerenderings können nicht deaktiviert werden. |
Disable high-quality image rescaling |
Deaktiviert die Skalierung von Bildern auf eine kleinere Bildgröße. |
Disable 3D rendering |
Deaktiviert alle 3D-Renderingoperationen |
Enable Debug Control
Über das Kontrollkästchen Enable Debug Control können Sie den Zugriff auf den freigegebenen Speicher von WPF aktivieren oder deaktivieren. Standardmäßig wird diese Option beim Start aktiviert und beim Beenden von Perforator wieder deaktiviert. Falls Perforator nicht fehlerfrei beendet wurde, starten Sie Perforator neu, und deaktivieren Sie das Kontrollkästchen Enable Debug Control manuell, um den Zugriff auf den freigegebenen Speicher von WPF zu deaktivieren. Starten Sie Perforator und die zu analysierende WPF-Anwendung anschließend neu.
Tipp
Durch das Aktivieren dieser Option kann der Speicherbedarf ansteigen und die Leistung beim Ausführen von WPF-Anwendungen geringfügig beeinträchtigt werden. Daher sollten Sie sicherstellen, dass diese Option von Perforator ordnungsgemäß deaktiviert wird.
Registrierungsschlüsseleinstellung
Durch das Kontrollkästchen Enable Debug Control wird eine neue WPF-Registrierungsschlüsseleinstellung hinzugefügt bzw. wieder entfernt. Führen Sie in einem Befehlsfenster folgenden Befehl aus, um diese Registrierungsschlüsseleinstellung manuell hinzuzufügen:
reg add HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v EnableDebugControl /t REG_DWORD /d 1 /f
Führen Sie in einem Befehlsfenster folgenden Befehl aus, um diese Registrierungsschlüsseleinstellung manuell zu entfernen:
reg delete HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v EnableDebugControl /f
Verwenden von Perforator
Starten Sie die WPF-Anwendung, deren Renderingverhalten Sie mit Perforator analysieren möchten. Klicken Sie nach dem Starten der Anwendung in Perforator auf die Schaltfläche Refresh. Die Anwendung sollte jetzt in Perforator im Listenfeld mit den WPF-Anwendungen angezeigt werden. Wählen Sie die gewünschte Anwendung und die zu analysierenden Renderingoptionen aus. Die Datenwerte in Perforator, z. B. die Framerate, geben direkt Aufschluss über das Renderingverhalten der Anwendung.
Perforator mit Anwendung und ausgewählten Renderingoptionen
Das folgende Bildschirmabbild zeigt die Beispielanwendung PhotoDemo, für die die Renderingoptionen "Draw software rendering with purple tint" und "Show dirty region support" aktiviert wurden:
PhotoDemo-Beispielanwendung mit angezeigtem Renderingverhalten
In den folgenden Abschnitten werden wesentliche Faktoren beschrieben, die die Renderingleistung beeinträchtigen können. Mithilfe der Optionen und anhand der Datenausgabe von Perforator können Probleme im Zusammenhang mit diesen Faktoren diagnostiziert werden.
Vermeiden von Softwarerendering
Da die WPF-Hardwarerenderingpipeline wesentlich schneller ist als die Softwarerenderingpipeline, steigt die Renderingleistung der Anwendung, wenn möglichst wenig Anwendungs-Benutzeroberfläche in Software gerendert wird. Normalerweise ist die zum Rendern eines Bereichs in Software benötigte Zeit proportional zur Anzahl der zu rendernden Pixel. Achten Sie daher insbesondere auf große Bereiche, die von der Softwarepipeline gerendert werden. Kleine Bereiche spielen in diesem Zusammenhang keine wesentliche Rolle.
Mit den folgenden Optionen von Perforator können Sie feststellen, ob das Softwarerendering Probleme verursacht:
Draw software rendering with purple tint: Zeichnet alle Bereiche, die von der Softwarerenderingpipeline gerendert werden, in einem violetten Farbton. Diese Option betrifft Softwarerenderingziele, Software-3D-Inhalte und Softwarefallbacks bei Primitiven.
Num Software Render Targets: Zählt die Anzahl der Renderziele für ganze Fenster, die vollständig in Software ausgeführt werden. Wenn der Zähler nicht 0 ist, stellt dies ein erhebliches Leistungsproblem dar, das i. d. R. auf die Computerkonfiguration oder das Vorhandensein von überlappenden Fenstern zurückzuführen ist. Stellen Sie sicher, dass Microsoft Direct3D aktiviert ist (führen Sie dxdiag aus) und dass alle Monitore auf eine Farbtiefe von 32 Bits pro Pixel (BPP) eingestellt sind. Vergewissern Sie sich, dass die Grafikkarte von Microsoft DirectX 9.0 unterstützt wird.
Num Hardware Render Targets: Zählt die Anzahl der Renderziele für ganze Fenster, die vollständig in Hardware ausgeführt werden. Dieser Zähler sollte der Anzahl der Fenster in der Anwendung multipliziert mit der Zahl der verwendeten Grafikkarten entsprechen. Der Wert weist darauf hin, dass eine Anwendung wo immer möglich mit Hardwarebeschleunigung gerendert wird.
Vermeiden einer großen Zahl von Renderingzwischenzielen
Renderingzwischenziele sind zusätzliche Bilder, die WPF zeichnen muss, um den Inhalt für die Darstellung auf dem Bildschirm vorzubereiten.
- Maximum SW/HW IRTs per Frame: Zeigt den jeweiligen Höchstwert der vom Software- bzw. Hardwarerendering verwendeten Zwischenziele an, die für das Rendern jedes einzelnen Frames der Anwendung benötigt werden. Renderingzwischenziele werden häufig beim Verwenden von DrawingBrush, VisualBrush oder Opacity für ein Visual oder durch die Kachelmodi eines TileBrush erzeugt. Wenn dieser Wert sehr hoch ist, kann dies ein Hinweis darauf sein, dass das Rendern der Anwendung einen großen Arbeitsaufwand in der WPF-Laufzeit verursacht.
Nützliche Leistungsmetriken
Dirty Rect Addition rate: Zeigt an, dass in der Anwendung schnelle Aktualisierungen ausgelöst werden.
Frame rate: Zeigt die Bildrate an, mit der die Anwendung auf dem Bildschirm gerendert wird. Bei Anwendungen ohne Animationen sollte dieser Wert nahe 0 liegen, da durch die Optimierungen für geänderte Bereiche alle unnötigen Zeichenvorgänge vermieden werden sollten. Betrachten Sie diesen Wert als eine Schätzung.
Estimated video memory usage: Verfolgt große Videospeicherreservierungen, die direkt von WPF (Texturen und Renderingziele) vorgenommen werden. Der Wert verfolgt keine Reservierungen, die ein Grafiktreiber während des Renderings vornimmt, die durch die Kompilierung oder das Laden von Pixel- und Vertexshadern entstehen sowie keine Reservierungen für Vertex- und Indexpuffer. Beachten Sie, dass die WPF-Renderinglogik beim Überschreiten des verfügbaren Texturspeichers i. d. R. auf Softwarerendering zurückgreifen muss und dass mehrere Monitore einen multiplikativen Effekt auf den von einer Anwendung benötigten Videospeicher haben.
Unterstützung für geänderte Bereiche
Windows Presentation Foundation (WPF) aktualisiert einzelne Fensterbereiche nur bei Bedarf. Daher kann es hilfreich sein, die Bereiche des Fensters darzustellen, die zu einem gegebenen Zeitpunkt aktualisiert werden. Mit den folgenden Optionen kann das Aktualisierungsverhalten visuell dargestellt werden.
Show dirty-region update overlay: Jede von WPF vorgenommene Bildschirmaktualisierung wird durch eine Neueinfärbung angezeigt. So können Sie nachvollziehen, welche Bereiche beim Ausführen einer Anwendung zu welchem Zeitpunkt neu gezeichnet werden.
Clear Back Buffer Before Rendering: Veranlasst, dass das Fenster vor jeder Zeichenoperation gelöscht wird.
Disable Dirty Region Support: Veranlasst WPF, bei jeder Änderung nicht nur die geänderten Bereiche, sondern das gesamte Fenster neu zu zeichnen. Hierdurch können Sie eine Aktualisierung des gesamten Fensters erzwingen. Beachten Sie jedoch, dass die Renderingleistung der Anwendung durch das Aktivieren dieser Option erheblich sinkt.
Deaktivieren von Renderingfeatures
Mit Perforator können Sie einzelne rechenintensive Operationen deaktivieren, um zu ermitteln, ob diese Operationen Leistungsengpässe in der Anwendung verursachen.
Disable Opacity Effects: Deaktiviert bestimmte, potenziell rechenintensive Durchlässigkeitseffekte. Um dieses Leistungsproblem generell zu vermeiden, legen Sie die Durchlässigkeit für Objekte auf unterer Ebene fest, z. B. für Brush, und nicht für Objekte auf hoher Ebene, z. B. Button.
Disable per-primitive software fallback: Deaktiviert Softwarefallbacks für einzelne Renderingprimitive. Zwischenziele und andere Elemente des Softwarerendering können nicht deaktiviert werden.
**Disable high-quality image rescaling:**WPF skaliert große Bilder, um die Darstellung zu verbessern, wenn die Bilder mit einer kleineren Größe angezeigt werden. Dieser Vorgang ist sehr rechenintensiv, insbesondere bei Anwendungen, in denen viele Bilder skaliert werden, um sie in kleiner Größe auf dem Bildschirm anzuzeigen. Mit dieser Option können Sie die Skalierung deaktivieren, um festzustellen, ob die Skalierung ein wesentlicher Grund für Leistungsprobleme ist. Dieses Problem können Sie vermeiden, indem Sie die Bilder umwandeln und vorab auf eine Größe skalieren, die möglichst der späteren Anzeigegröße entspricht.
Disable 3D rendering: Deaktiviert alle 3D-Zeichenvorgänge.
Visual Profiler
Visual Profiler ist ein Leistungstool, mit dem die Verwendung von WPF-Diensten, z. B. Layout und Ereignisbehandlung, durch Elemente in der visuellen Struktur überprüft werden kann. Durch die Analyse der Profilausgabe dieses Tools können Sie bestimmen, welche visuellen Elemente in einer Anwendung möglicherweise Leistungsengpässe verursachen. Im Hauptfenster von Visual Profiler können Sie über verschiedene Optionen festlegen, wie die Anwendung analysiert werden soll.
Update interval. Das Aktualisierungsintervall, mit dem Werte bei der Profilerstellung protokolliert werden.
Display overlay. Durch die Anzeige von Overlays kann die CPU-Ressourcenverwendung visuell dargestellt werden. Dunkelrote Overlays zeigen eine höhere CPU-Ressourcenverwendung an.
Vorteile des Visual Profiling
WPF Visual Profiler stellt Leistungsprobleme im Kontext der grundlegenden Bausteine dar, aus denen die visuellen Bereiche der Anwendung erstellt werden. Zu diesen Bausteinen zählen Objekte der oberen Ebenen, z. B. das Button-Steuerelement und das TextBlock-Steuerelement, aber auch kleine Objekte, z. B. das Line-Element und das Ellipse-Element. Statt Leistungsprobleme anhand von Aufrufdiagrammen für Funktionsnamen auszudrücken, erlaubt Visual Profiler die Beschreibung dieser Probleme als Darstellung von visuellen Objekten. Dieses Verfahren ähnelt der Informationsdarstellung des Windows SDK-Tools UI Spy. Weitere Informationen finden Sie unter UI Spy (UISpy.exe).
WPF-Leistungsprobleme können sehr unterschiedliche Ursachen haben. Zum Erstellen einer aussagekräftigen Analyse ist daher ein genaueres Verständnis der Aufgaben und Funktionen der zugrunde liegenden WPF-Dienste erforderlich. Zu diesen Diensten gehören Layout, Rendering und Animationen. Visueller Profiler stellt eine grafische Darstellung bereit, mit der die Verwendung dieser WPF-Dienste durch einzelne Anwendungsobjekte analysiert werden kann. Bei der Anzeige der visuellen Struktur der Anwendungsobjekte in Visual Profiler werden die Objekte z. B. mit verschiedenen Rotschattierungen überlagert. Diese Schattierungen zeigen die relative Ressourcenverwendung durch ein Objekt an. Ein Objekt, das in dunklerem Rot dargestellt wird, beansprucht einen höheren Anteil der Ressourcen als Objekte, die in hellerem Rot dargestellt werden. Darüber hinaus zeigt Visual Profiler detailliert an, zu welchem Anteil einzelne WPF-Ressourcen von einem Objekt verwendet werden.
Verwenden von Visual Profiler
Klicken Sie zum Verwenden von Visual Profiler auf die Schaltfläche Start Profiling, und wählen Sie Launch oder Attach aus. Um die Option Attach verwenden zu können, müssen WPFPerf und die Anwendung, für die Sie ein Leistungsprofil erstellen möchten, mit Administratorrechten ausgeführt werden. Wenn Sie die Option Attach verwenden, ist die Overlayfunktion deaktiviert, und es stehen weniger Ereignisse zur Verfügung. Die Option Launch wird empfohlen.
Auf der Registerkarte "Events" können Sie angeben, für welche Anwendungs- und Elementereignisse ein Profil erstellt werden soll.
In der Konfiguration von Visual Profiler können Sie die Profilerstellung für folgende Anwendungsereignisse aktivieren oder deaktivieren. Ereignisse, die Methoden darstellen, werden mit ihrem Methodennamen gefolgt vom Klassennamen in Klammern angezeigt. Beispielsweise steht Tick (TimeManager) für die TimeManager.Tick-Methode.
Anwendungsereignisse |
Beschreibung |
---|---|
RenderMessageHandler (MediaContext) |
Initiiert das Rendering. Ruft TimeManager.Tick, MediaContext.Render und andere Methoden auf. |
Rendering Thread |
Tritt ein, wenn Renderinganweisungen im Renderingthread ausgeführt werden. Mit dieser Option können Sie feststellen, welche Anwendungen an das Rendering gebunden sind. |
Layout |
Tritt während des Durchlaufs für Maßübergabe, Anordnungsübergabe und Rendering ein. |
UpdateRealizations |
Tritt ein, wenn interne Bitmapdarstellungen von Text und Bitmapeffekten aktualisiert werden. |
Tick (TimeManager) |
Tritt bei einem Tick der Animation ein. Dieses Ereignis kann den Renderhandler für die Animation auslösen. |
UpdateEffectiveValue (DependencyObject) |
Tritt ein, wenn das Eigenschaftenmodul den Wert einer DependencyProperty ändert. |
Hit Testing |
Tritt während der Trefferüberprüfung ein, die ermittelt, welches visuelle Objekt getroffen wurde. |
AnimatedRenderMessageHandler (MediaContext) |
Wenn Animationen aktiviert sind, verarbeitet und aktualisiert dieser Handler die Animation. Hierdurch werden Eigenschaften geändert und infolgedessen das Rendering eingeleitet. |
Render (MediaContext) |
Tritt während des Renderings ein. Diese Methode ruft die OnRender-Methode für jedes Element auf. Sie ist nützlich, um die Ressourcenbeanspruchung durch OnRender für alle Elemente insgesamt zu ermitteln. Dieses Ereignis entspricht der MediaContext.Render-Methode in einer VSP-Datei (Visual Studio-Profiler). |
FormatLineInternal (TextFormatterImp) |
Tritt bei der Textformatierung ein. |
MarkVisibleRealizations (Visual) |
Tritt ein, wenn interne Textbitmapdarstellungen erkannt und Bitmapeffekte aktualisiert werden müssen. |
In der Konfiguration von Visual Profiler können Sie die Profilerstellung für folgende Elementereignisse aktivieren oder deaktivieren.
Elementereignisse |
Beschreibung |
---|---|
Layout |
Tritt während des Durchlaufs für Maßübergabe, Anordnungsübergabe und Rendering ein. |
MarkVisibleRealizations (Visual) |
Tritt ein, wenn interne Textbitmapdarstellungen erkannt und Bitmapeffekte aktualisiert werden müssen. |
UIElement.OnRender |
UIElement-Rendervorgänge. |
UIElement Layout |
UIElement-Layoutvorgänge. |
Wenn Sie die gewünschten Optionen für Anwendung und Profilerstellung ausgewählt haben, klicken Sie auf die Schaltfläche OK, um mit der Profilerstellung für die Anwendung zu beginnen.
Führen Sie die Anwendung und das Visual Profiler-Tool nebeneinander aus, und beobachten Sie die angezeigten Werte im Tool. Sie können die visuelle Strukturhierarchie erweitern und ein bestimmtes visuelles Objekt für die Profilerstellung auswählen, z. B. ein Grid-Steuerelement. Im Abschnitt CPU Usage von Visual Profiler wird in einer genauen Aufschlüsselung angezeigt, welche WPF-Dienste vom Objekt und von der Anwendung verwendet werden. Unter CPU Utilization werden folgende Daten für das Element aufgelistet:
Inclusive Time: Die CPU-Nutzung für das Element und alle Nachfolgerelemente.
Exclusive Time: Die CPU-Nutzung für das Element selbst.
Ausgabe von Visual Profiler
Visual Profiler zeigt Objekte in der visuellen Struktur mit verschiedenen Rotschattierungen an. Diese Schattierungen zeigen die relative Ressourcenverwendung durch ein Objekt an. Ein Objekt, das in dunklerem Rot dargestellt wird, beansprucht einen höheren Anteil der Ressourcen als Objekte, die in hellerem Rot dargestellt werden.
Working Set Analyzer
Working Set Analyzer ist ein WPF-Tool zur Leistungsanalyse, das Informationen zur Arbeitsspeicherverwendung für einen angegebenen Prozess bereitstellt. Mithilfe dieses Tools können Sie einen Snapshot generieren, der Aufschluss über die Arbeitsspeicherverwendung durch eine Anwendung in einem bestimmten Anwendungszustand gibt.
Workingset einer Anwendung
Das Workingset einer Anwendung umfasst alle Seiten des virtuellen Adressbereichs der Anwendung, auf die vor kurzem verwiesen wurde. Es beinhaltet sowohl freigegebene als auch private Daten. Die freigegebenen Daten umfassen die Seiten, die alle von der Anwendung ausgeführten Anweisungen enthalten. Hierzu zählen Anweisungen aus DLLs der Anwendung und aus System-DLLs. Wenn das Workingset größer wird, steigt damit auch der Speicherbedarf. Weitere Informationen über das Workingset finden Sie unter Prozessworkingset.
Dienstprogramm Virtual Address Dump (VaDump)
Virtual Address Dump (VaDump) erstellt eine Auflistung mit Informationen zur Speicherverwendung durch einen angegebenen Prozess. Dieses Tool befindet sich im folgenden Verzeichnis:
~\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\winnt
Wichtiger Hinweis: |
---|
Sie müssen sicherstellen, dass der Speicherort von VaDump im Ausführungspfad des Systems angegeben ist. Andernfalls kann Working Set Analyzer nicht ordnungsgemäß ausgeführt werden. |
Verwenden von Working Set Analyzer
Starten Sie zum Verwenden von Working Set Analyzer zunächst die WPF-Anwendung, die Sie analysieren möchten. Nachdem Sie Working Set Analyzer gestartet haben, wählen Sie Select Process aus:
Dialogfeld "Select Process" von Working Set Analyzer
Wählen Sie den Prozess aus, dessen Workingset Sie analysieren möchten, und klicken Sie anschließend auf die Schaltfläche Capture. Working Set Analyzer ruft zunächst VaDump auf, um Informationen zur Speicherverwendung zu generieren. Anschließend werden die Informationen analysiert und grafisch dargestellt.
Tipp
Die Workingsetdaten stellen eine statische Sicht der Speicherverwendung dar. Sie können die Erstellung der Workingsetdaten an verschiedenen Punkten in der Anwendung wiederholen und die Unterschiede in der Speicherverwendung vergleichen.
Sobald die Workingsetdaten für die Anzeige vorbereitet wurden, erstellt Working Set Analyzer eine Strukturansicht, in der dynamische Daten, Systemdaten und Anwendungsmodule dargestellt werden.
Speicherverwendungskategorien in Working Set Analyzer
Bei WPF-Anwendungen enthält die Kategorie "WPF Modules" systemspezifische WPF-Module. Klicken Sie auf die Kategorie, die Sie überprüfen möchten. Es werden mehrere Kreisdiagramme angezeigt. Wenn Sie beispielsweise auf die Kategorie "WPF Modules" klicken, werden im linken Fensterbereich die folgenden Informationen angezeigt.
Speicherverwendungsdiagramm für "WPF Modules" in Working Set Analyzer
In der Überschrift des Diagramms wird die Gesamtgröße der Workingsetkategorie angezeigt. In diesem Fall wird für die Module in "WPF Modules" eine Gesamtspeicherverwendung von 9160 KB angezeigt. Das Kreisdiagramm selbst stellt die individuelle Speicherverwendung für alle Module in der Kategorie "WPF Modules" dar.
Tipp
Die Größe einer Speicherverwendungskategorie gibt Aufschluss über den Speicherbedarf der Anwendung zu dem Zeitpunkt, zu dem die Workingsetinformationen erfasst wurden.
In der kleinen Tabelle wird die Speicherverwendung für freigegebene, freigebbare und private Bytes dargestellt.
Speicherverwendungstabelle in Working Set Analyzer
In der Kategorie für freigegebene Bytes wird der Teil des Speichers angegeben, der potenziell auch von anderen WPF-Anwendungen verwendet werden kann.
Anzeigen der Speicherverwendung der Anwendung
Um die Speicherverwendung für die Anwendung anzuzeigen, wählen Sie in der Strukturansicht des Workingsets in der Kategorie "Other Modules" den Namen der ausführbaren Datei aus.
Speicherverwendungskategorien in Working Set Analyzer
Speichern und Laden von Working Set Analyzer-Dateien
Um die aktuellen Verwendungsinformationen zum Workingset zu speichern, wählen Sie im Hauptmenü von Working Set Analyzer die Option "File" aus. Klicken Sie dann auf die Schaltfläche Save VADump output. Nachdem Sie die Verwendungsinformationen zum Workingset gespeichert haben, können Sie einen neuen Snapshot der Speicherverwendung generieren, indem Sie auf die Schaltfläche Capture klicken. Zum erneuten Laden einer Datei mit VADump-Inhalten, wählen Sie im Hauptmenü von Working Set Analyzer die Option "File" aus. Klicken Sie dann auf die Schaltfläche Open VADump output.
Zeitverzögertes Erfassen der Workingsetinformationen
Working Set Analyzer stellt einen Zeitgeber zur Verfügung, mit dem Sie ein Verzögerungsintervall für die Erfassung der Verwendungsinformationen zum Workingset festlegen können. Wählen Sie im Hauptmenü von Working Set Analyzer die Option Actions aus. Klicken Sie dann auf die Schaltfläche Launch Process….
Geben Sie die Anwendung an, die Sie ausführen möchten. Verwendeten Sie hierzu bei Bedarf die Schaltfläche Browse. Geben Sie, falls erforderlich, die Argumente für die Anwendung ein. Geben Sie zuletzt das Verzögerungsintervall in Sekunden an, mit dem die Speicherverwendungsinformationen erfasst werden sollen. Klicken Sie dann auf die Schaltfläche Launch. In der Statusmeldung am unteren Fensterrand von Working Set Analyzer wird die verbleibende Zeit in Sekunden bis zur Erfassung angezeigt. Während dieser Verzögerung haben Sie die Möglichkeit, die Anwendung in den gewünschten Zustand für die Datenerfassung zu versetzen. Sobald die Erfassung abgeschlossen wurde, wird die Statusmeldung "Done" angezeigt.
Event Trace
Event Tracing for Windows (ETW) ist ein effizientes Verfolgungsfeature auf Kernelebene, mit dem Sie kernel- oder anwendungsdefinierte Ereignisse in einer Protokolldatei erfassen können. Sie können Ereignisse in Echtzeit oder anhand einer Protokolldatei überprüfen. Auf der Grundlage der Ergebnisse können Sie die Anwendung debuggen oder die Ursachen für Leistungsprobleme in der Anwendung ermitteln. Das WPF-Profilerstellungstool Event Trace verwendet ETW für die Ereignisprotokollierung. Weitere Informationen zu ETW finden Sie unter Event Tracing.
Event Trace ist Teil der WPF-Toolsuite WPFPerf (WpfPerf.exe) für die Erstellung von Leistungsprofilen. Weitere Informationen finden Sie im Abschnitt Verwenden der Tools zur Leistungsprofilerstellung.
Verwenden von Event Trace
Im Hauptfenster von Event Trace werden mehrere Optionen für das Hinzufügen, Speichern und Anzeigen der Informationen zur Ereignisprotokollierung angezeigt.
Hauptfenster von Event Trace
Hinzufügen einer neuen Ereignisprotokollierung
Um eine neue Ereignisprotokollierung hinzuzufügen, klicken Sie im Hauptfenster von Event Trace auf die Schaltfläche Add. Im Dialogfeld Add New Logger müssen verschiedene Informationen angegeben werden. Logger Name legt den Anzeigenamen für diese Protokollierung fest. Wählen Sie in der Dropdownliste GUID einen der vier verfügbaren Typen für die Ereignisprotokollierung aus:
NT Kernel Logger
Common Language Runtime Garbage Collection
Windows Presentation Foundation - Performance Only
Windows Presentation Foundation -All
Es gibt zwei Typen von WPF-Ereignisprotokollierungen. "Performance Only" ist eine reduzierte Teilmenge der Option "All". Unter Log File wird der Dateiname für die Ereignisprotokolldatei angegeben. Klicken Sie auf die Schaltfläche "…", um einen Dateinamen festzulegen. Ereignisprotokolldateien verwenden standardmäßig die Dateierweiterung "etl".
Die Option Level gibt einen der folgenden möglichen Schweregrade an. Bei höheren Zahlen erfolgt auch eine Protokollierung der niedrigeren Ebenen. Wenn Sie z. B. 3 angeben, werden alle Ereignisse der Ebenen Warnungen, schwere Fehler und Beendigungsfehler protokolliert:
Level |
Beschreibung |
---|---|
1 |
Ereignisse, die einen Austritt oder eine Beendigung aufgrund eines Fehlers anzeigen. |
2 |
Schwere Fehlerereignisse. |
3 |
Warnereignisse, z. B. Reservierungsfehler. |
4 |
Ereignisse, die keinen Fehler anzeigen, z. B. Eintritts- und Austrittsereignisse. |
5 |
Ausführliche Ablaufverfolgungsereignisse. |
Die Option Flags gibt die WPF-Ereignisklasse an. In den meisten Fällen kann der Standardwert übernommen werden.
Wenn Sie alle Informationen für die neue Ereignisprotokollierung angegeben haben, klicken Sie im Dialogfeld Add New Logger auf die Schaltfläche Add, um die Protokollierung in Event Trace hinzuzufügen. Sie können anschließend weitere Ereignisprotokollierungen erstellen und in Event Trace hinzufügen. Wenn Sie alle gewünschten Ereignisprotokollierungen erstellt haben, klicken Sie auf die Schaltfläche Done.
Dialogfeld "Add New Logger"
Um eine Ereignisprotokollierung zu entfernen, wählen Sie die Protokollierung im Listenfeld aus, und klicken Sie auf die Schaltfläche Remove. Um alle Ereignisprotokollierungen zu entfernen, klicken Sie auf die Schaltfläche Clear.
Aktivieren der Ereignisprotokollierung
Wählen Sie im Hauptfenster von Event Trace in der Liste der Ereignisprotokollierungen die gewünschte Ereignisprotokollierung aus. Klicken Sie auf die Schaltfläche Start, um die Protokollierung zu aktivieren. Als Status für die Ereignisprotokollierung sollte jetzt "Enabled" angezeigt werden.
Hauptfenster von Event Trace mit einer ausgewählten Ereignisprotokollierung
Wenn Sie die Ereignisprotokollierung für die Anwendung beenden möchten, klicken Sie auf die Schaltfläche Stop. Um zu überprüfen, ob die Ereignisprotokollierung erfolgreich war, können Sie die Ereignisprotokolldatei öffnen. Klicken Sie auf die Schaltfläche Open Log, um die Ereignisprotokolldatei anzuzeigen.
Hauptfenster von Event Trace mit Ereignisprotokollinformationen
In der Ereignisprotokolldatei werden fünf Informationsspalten für jedes Ereignis angezeigt.
Column |
Beschreibung |
---|---|
Time |
Aktuelle Zeit in CPU-Ticks. |
Guid |
GUID, die dem Ereignis zugeordnet ist. |
Name |
Ereignisname. |
Event type |
Ereignis vom Typ Info, Start oder End. Ein Start-Ereignis verfügt über ein zugehöriges End-Ereignis. |
Data |
Daten des spezifischen Ereignistyps. |
Die Ereignisprotokollinformationen sind in diesem Format nicht sehr nützlich. Verwenden Sie das WPF-Profilerstellungstool ETW Trace Viewer, um die Ausgabe einer mit Event Trace erstellten Ereignisprotokolldatei zu analysieren.
ETW Trace Viewer
Event Tracing for Windows (ETW) erlaubt das Verfolgen und Protokollieren von Ereignissen, die von Anwendungen im Benutzermodus ausgelöst werden. ETW ist im Windows-Betriebssystem implementiert und stellt Entwicklern schnelle, zuverlässige und umfassende Funktionen für die Ereignisverfolgung bereit. Mit dem Tool Event Trace können Sie ETW-Protokolldateien aufzeichnen, anzeigen und in einem auf die Darstellung von WPF-Features zugeschnittenen Benutzeroberflächenformat durchsuchen.
Hauptansicht von ETW Trace Viewer
Verwenden von ETW Trace Viewer
Sie können eine mit dem Profilerstellungstool WPFEvent Trace erstellte und gespeicherte ETW-Protokolldatei öffnen und anzeigen. Ereignisprotokolldateien verwenden standardmäßig die Dateierweiterung "etl". Wählen Sie im Hauptmenü von ETW Trace Viewer die Option File aus. Klicken Sie anschließend auf Open, um die gewünschte Protokolldatei zu laden.
Hauptfenster von ETW Trace Viewer mit Protokolldatei
Nach dem Laden der Protokolldatei zeigt ETW Trace Viewer eine Zeitachse an, die die Dauer der Ereignisprotokollerfassung darstellt. Als Maßeinheit für die Zeitachse können Sie Sekunden oder Millisekunden festlegen. Sie können bestimmte Ereignistypen für die Anzeige auswählen, indem Sie die gewünschten Ereignistypen aktivieren bzw. deaktivieren. Wenn Sie nur einige wenige Ereignisse analysieren möchten, deaktivieren Sie alle Ereignisse, indem Sie auf die Schaltfläche Disable All klicken, und aktivieren Sie anschließend nur die Kontrollkästchen für Ereignisse, die sie überprüfen möchten. Die für die Anzeige auf der Zeitachse ausgewählten Ereignistypen werden im unteren rechten Bereich von ETW Trace Viewer angezeigt.
Sie können auf die Zeitachse klicken und durch Ziehen mit der Maus einen kleineren Zeitabschnitt auf der Zeitachse auswählen. Um den ausgewählten Bereich zu vergrößern, klicken Sie mit der rechten Maustaste und wählen im eingeblendeten Kontextmenü den entsprechenden Menüeintrag aus (siehe folgende Abbildung).
Hauptfenster von ETW Trace Viewer mit Kontextmenü
Im Kontextmenü können Sie den auf der Zeitachse angezeigten Bereich vergrößern oder verkleinern, alle Ereignisse für die Anzeige auswählen oder die aktuelle Bereichsauswahl aufheben. Wenn Sie einen Bereich der Zeitachse vergrößern, werden die relativen Zeitwerte für den vergrößerten Bereich in blau angezeigt. Die unterhalb angezeigten Werte in schwarz zeigen die tatsächlichen Zeitwerte innerhalb des Gesamtzeitraums der Ereignisprotokollerfassung an.
Hauptfenster von ETW Trace Viewer mit vergrößerter Datenanzeige
Klicken Sie auf die kleinen Felder auf der Zeitachse, um Informationen zu einem bestimmten Ereignis anzuzeigen.
Generieren einer Ereignisprotokolldatei
Sie können mit ETW Trace Viewer auch ETW-Protokolldateien erstellen. Klicken Sie auf die Schaltfläche Start capture, um mit der Ereignisprotokollierung zu beginnen. Klicken Sie auf die Schaltfläche Stop capture, um die Protokollierung zu beenden. Die hierbei generierte Ereignisprotokollierung unterstützt keine benutzerdefinierten Einstellungen zum Filtern der protokollierten Ereignisse. Verwenden Sie das Tool Event Trace zum Erstellen einer benutzerdefinierten Ereignisprotokollierung.
Weitere Leistungstoolressourcen
Windows Presentation Foundation (WPF) unterstützt auch Debugablaufverfolgungen.
Debugablaufverfolgungsunterstützung für WPF
Die PresentationTraceSources-Klasse stellt eine Debugablaufverfolgung für Windows Presentation Foundation (WPF)-Anwendungen bereit. Bei der Ablaufverfolgung handelt es sich um ein Diagnosesystem, mit dem der Fortschritt einer Anwendung verfolgt werden kann. Die Ablaufverfolgungsanweisungen geben Informationen aus, so wie häufig die WriteLine-Methode verwendet wird. Die Ablaufverfolgungsanweisungen können jedoch durch Angabe eines entsprechenden Werts in einer Konfigurationsdatei ein- und ausgeschaltet werden. Darüber hinaus kann die Ausgabe der Ablaufverfolgungsanweisungen angepasst werden.
Informationen zu weiteren verwandten .NET Framework-Diagnoseklassen finden Sie unter System.Diagnostics.
Siehe auch
Konzepte
Optimieren der WPF-Anwendungsleistung
Übersicht über das Grafikrendering in Windows Presentation Foundation