Verbessern der Reaktionsfähigkeit Ihrer Windows-App
Dieser Leitfaden hilft Ihnen, die Reaktionsfähigkeit Ihrer Windows-Anwendung zu verbessern, indem Sie die Latenz beim Start und bei Tasteninteraktionen optimieren. Schnelle, reaktionsfähige Interaktionen (auch bekannt als Interaktionen mit geringer Latenz) schaffen eine bessere Benutzererfahrung. Das Verständnis der Interaktionserwartungen, die Messung der aktuellen Dauer und die Festlegung von Verbesserungszielen in Abhängigkeit von der Interaktionsklasse können zu einer erheblichen Verbesserung der Erfahrung und Zufriedenheit Ihrer Benutzer führen.
Schritt-für-Schritt-Anleitung zur Optimierung von Interaktionen für reaktionsfähiges Verhalten
Kunden spüren, wenn der Start einer Anwendung, die Menüführung oder das Laden von Seiten/Inhalten langsam ist. Sie erwarten ein schnelles, nahtloses Erlebnis und wir haben im Folgenden einige Schritte und Anleitungen zum besseren Verständnis dieser Erwartungen zusammengestellt.
Die grundlegenden Schritte zur Optimierung der Latenz sind:
Definieren Sie das Szenario, und fügen Sie TraceLogging-Ereignisse hinzu.
Erstellen Sie eine Liste der wichtigsten Interaktionen, die ein Benutzer bei der Verwendung Ihrer App durchläuft, z. B. Start, Öffnen eines Menüs, Navigieren zu einer neuen Seite und Rendern von Inhalten usw. Fügen Sie für jede dieser Interaktionen ein Start- und ein Stop-Ereignis hinzu, das Sie zur Messung und Analyse verwenden können. Erfahren Sie mehr über das Hinzufügen von von TraceLogging, einem Format für die selbst beschreibende Ereignisablaufverfolgung für Windows (ETW).
Legen Sie Ziele fest, die auf der Interaktionsklasse basieren.
Benutzer haben je nach Art der Interaktion unterschiedliche Erwartungen an die Leistung und Reaktionsfähigkeit einer App. Beispielsweise, wie schnell eine App gestartet wird und wie schnell eine Seite geladen wird. Denken Sie an die akzeptable Zeitspanne, die Benutzer benötigen, um die wichtigsten Interaktionen in Ihrer App durchzuführen. Diese kann zwischen 200 Millisekunden (ms) und 5 Sekunden (Sek.) liegen. Weisen Sie dann jeder Aufgabe eine Interaktionsklassenbezeichnung mit einem zugeordneten Ziel zu. Nachfolgend finden Sie einige grundlegende Richtlinien, zusammen mit Vorschlägen, wie Sie eine Benutzeroberfläche (UI) einbeziehen können, um die Wahrnehmung der Reaktionsfähigkeit zu verbessern:
Bezeichnung der Interaktionsklasse | Benutzerwahrnehmung | Verzögerungsbereich | Beispiele | Vorgeschlagene UI |
---|---|---|---|---|
Schnell | Minimal erkennbare Verzögerung | 100 - 200 Millisekunden | App-Leiste öffnen, Rechtsklick-Menü | |
Interactive | Zügig, aber nicht schnell | 300 - 500 ms | Eine App beenden, zwischengespeicherte Suchergebnisse anzeigen | |
Anhalten | Nicht zügig, aber dynamisch | 500 ms - 1 Sek | Zu einer anderen Seite navigieren, die App aus einem angehaltenen Zustand wieder fortführen, Websuchergebnisse anzeigen | Eine Eingangsanimation (z.B. Einfliegen neuer Inhalte) kann verwendet werden, um die für dieses Szenario benötigte Zeit zu verschleiern. |
Warten | Nicht schnell wegen des Arbeitsaufwands für das Szenario | 1 - 3 Sek | Starten der App | Ein Dreh-/Wartecursor kann verwendet werden, um den Fortschritt zu protokollieren. Sie können sowohl eine Ausgangs- als auch eine Eingangsanimation (z.B. alte Seite ausfliegen, neue Seite einfliegen) verwenden, um die für dieses Szenario benötigte Zeit zu verschleiern. |
Lange Wartezeit | Wird nicht mehr als dynamisch wahrgenommen | 2 - 5 Sek | Große App-Starts (mit erweitertem Begrüßungsbildschirm), Start eines HD-Videostreams | Es wird eine „Benutzeroberfläche zum Laden“ angezeigt - wenn möglich, stellen Sie dem Benutzer eine Option zum Abbrechen zur Verfügung. Die Benutzeroberfläche zum Laden sollte in der Fast-Interaktionsklasse angezeigt werden. Die Benutzeroberfläche zum Laden muss keinen Prozentsatz oder eine Restzeit anzeigen. |
Träge | Eine lange Wartezeit - reserviert für unvermeidlich lange/komplexe Szenarien | 5 - 10 Sek | Systemanmeldung | Es wird eine „Benutzeroberfläche zum Laden“ angezeigt oder ein Dialog - wenn möglich, stellen Sie dem Benutzer eine Option zum Abbrechen zur Verfügung. Der Dialog sollte in der Fast-Interaktionsklasse angezeigt werden. Das Dialogfeld sollte einen Prozentsatz oder die Restzeit anzeigen, wenn dies für den Benutzer von Nutzen ist. |
Zeitintensiv | Langer Vorgang - Benutzer werden wahrscheinlich Multitasking betreiben (während des Vorgangs wechseln) | 10 - 30+ Sek | Installieren neuer Features oder Updates, Downloads großer Dateien | Die Benutzeroberfläche sollte so konzipiert werden, dass sie die Multitaskingmöglichkeit widerspiegelt. Ein Fortschrittsdialogfeld sollte angezeigt werden, einschließlich einer Schätzung der Fertigstellung (Prozentsatz, Restzeit, usw.). Alternativ kann die Benutzeroberfläche vollständig minimiert werden und der Benutzer wird nur über eine Popupbenachrichtigung informiert, wenn das Szenario abgeschlossen ist. |
Um die genaue Dauer für bestimmte Interaktionen zu überprüfen, können Sie eine Ablaufverfolgung mithilfe von Windows Leistungsanalyse (WPA) erfassen und analysieren.
Bevor Sie Ihre Ablaufverfolgung aufzeichnen, bringen Sie Ihr Testgerät in den Leerlauf, indem Sie den Task-Manager öffnen und sicherstellen, dass die CPU-Auslastung weniger als 5% beträgt. Auf diese Weise werden Störungen bei der Messung minimiert und Ablaufverfolgungen in angemessener Größe erzeugt. Dies hilft Ihnen, die Interaktion, die Sie messen möchten, besser zu isolieren.
Um eine Ablaufverfolgung zu erfassen, öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus.
Geben Sie den Befehl
wpr -start GeneralProfile -filemode
ein.Führen Sie das Interaktionsszenario für Ihre App aus.
Geben Sie den Befehl
wpr -stop Trace.etl
ein.
Analysieren Sie die Ablaufverfolgung und finden Sie Verbesserungsmöglichkeiten.
Analysieren Sie die Dauer jeder von Ihrer Anwendung unterstützten Tasteninteraktion, indem Sie die soeben aufgezeichneten Ablaufverfolgungen im Windows Performance Analyzer (WPA) öffnen.
- Um die Ablaufverfolgung in WPA zu öffnen, geben Sie in der Befehlszeile Folgendes ein:
wpa.exe Trace.etl
- Erweitern Sie die Dropdownliste Systemaktivität und doppelklicken Sie auf Allgemeine Ereignisse, um die Analyseansicht zu öffnen.
- Wählen Sie die Ereignisserie für Ihre Anwendung und erweitern Sie das Dropdown-Menü „Anbietername“, bis Sie den Prozess, den Aufgabennamen und den Ereignisnamen finden, die mit der gesuchten Schlüsselinteraktion verbunden sind. Die Dauer des Interaktionsereignisses wird in der Spalte Zeit sowie im Diagramm mit Dauer, Startzeit und Endzeit aufgeführt.
Wenn die Dauer ihrer Ablaufverfolgung nicht den Zielen der Interaktionsklasse entspricht (z.B. 500 ms), identifizieren Sie die wichtigsten Threads für Ihre App (wahrscheinlich den UI-Thread), und sehen Sie sich die oberen Stapel für die CPU-Auslastung und -Wartezeiten an. *Denken Sie daran, dass beim Ausführen der Analyse einige Probleme möglicherweise nicht spezifisch für den Code Ihrer eigenen Anwendung sind.
- Um die Ablaufverfolgung in WPA zu öffnen, geben Sie in der Befehlszeile Folgendes ein:
Zusätzliche Ressourcen
Windows developer