Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Handbuch wird gezeigt, wie Sie die Art und Weise verbessern, wie Ihre Windows-Anwendung Energie verbraucht, und bietet Prinzipien, die Ihnen helfen, die Gesamtleistung des Geräts und die Akkulaufzeit zu verbessern.
Um den Stromverbrauch zu verbessern, ist es wichtig sicherzustellen, dass Ihre App, während sie im Hintergrund läuft, nicht:
- Systemressourcen verwenden,
- die CPU über Timer reaktivieren,
- Wecken Sie die CPU, indem Sie auf vsync-Ereignisse warten.
Wenn Sie "im Hintergrund" sind, bedeutet dies, dass Ihre App für den Benutzer weder sichtbar noch hörbar ist. Es sollten nur wenige Gründe vorhanden sein, die CPU zu reaktivieren oder Systemressourcen im Hintergrund zu nutzen. Überprüfen, ob Ihre App diese Ereignisse auslöst und die Ursache adressiert, kann den Stromverbrauch, die Akkulaufzeit ihrer App erheblich verbessern und die Co2-Emissionen verringern, die von Kunden verursacht werden, die Ihre App verwenden.
Um zu überprüfen, ob die CPU nicht aufwacht, um unnötige Arbeit zu erledigen, während Ihre App nicht verwendet wird, können Sie eine Ablaufverfolgung mithilfe von Windows Performance Analyzer (WPA) erfassen und analysieren. In den nachstehenden Schritten wird erläutert, wie dies zu tun ist.
Erfassen einer Ablaufverfolgung und Überprüfung auf unnötige Arbeit
Es ist wichtig, die richtigen Bedingungen einzurichten, wenn Sie Ihre App ausführen, bevor Sie einen Trace aufnehmen, um zu analysieren, ob unnötige Arbeiten ausgeführt werden, die den Energieverbrauch erhöhen können. Möglicherweise möchten Sie auch mehrere Protokolle ausführen, um Ihre App unter einer Vielzahl von Bedingungen zu testen.
Konfiguration
Rufen Sie Ihr Testgerät im Leerlauf ab, indem Sie den Task-Manager öffnen und sicherstellen, dass die CPU-Auslastung weniger als 5%ist. Auf diese Weise werden Messstörungen minimiert und angemessene Größenverläufe erzeugt.
Starten Sie Ihre App, und navigieren Sie zu einer Ansicht, die voraussichtlich häufig verwendet wird.
Minimieren Sie Ihre App. *Möglicherweise möchten Sie die folgenden Schritte wiederholen, während ihr App-Fenster hinter anderen Fenstern vollständig verdeckt (nicht sichtbar) ist und wenn sich Ihre App im Vordergrund befindet, nach einem Zeitraum ohne Interaktion durch den Benutzer, um sicherzustellen, dass unnötige Arbeit nicht von der App initiiert wird.
Messen und Auswerten der CPU-Verwendung im Hintergrund
Öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus. (Wenn sie nicht im Administratormodus ausgeführt werden, erhalten Sie möglicherweise Fehlercode: 0xc5585011: "Fehler beim Aktivieren der Richtlinie für die Profilsystemleistung.")
Geben Sie den Befehl ein:
wpr -start power -filemodeLassen Sie das Gerät 5 Minuten im Leerlauf.
Geben Sie den Befehl ein:
wpr -stop idletrace.etlUm die Ablaufverfolgung mithilfe von Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein:
wpa.exe idletrace.etlÖffnen Sie die Grafik für Berechnung>(Genau).
Navigieren Sie zu Ihrem Prozess (oder wenn Sie über ein Mehrprozessmodell für alle Prozesse im Zusammenhang mit Ihrer App verfügen), und bewerten Sie die Anzahl der Cswitche , "Auslastung nach CPU". Im Idealfall liegen diese so nah wie möglich bei 0, während sich die App im Hintergrund befindet. Die Betrachtung der Stapel ist eine hervorragende Möglichkeit, um zu finden, wo Ressourcen verwendet werden und wie sie verbessert werden.
Suchen Sie nach übermäßigen Reaktivierungen, indem Sie einen "Neuen Threadstapel" hinzufügen, um zu sehen, auf welchem Stapel der Thread aufgewacht ist.
Öffnen Sie das Diagramm für die Berechnung> derCPU-Auslastung (Sampled). Verfolgen Sie Probleme mit der CPU-Auslastung, indem Sie bewerten, wo in Ihrem Code die meiste Zeit für die Ausführung benötigt wird.
Messen und Auswerten von vsync-Wartezeiten im Hintergrund
Hinweis
Konzentrieren Sie sich auf die grundlegende CPU-Auslastung im vorherigen Abschnitt, bevor Sie dieses erweiterte Szenario untersuchen.
Öffnen Sie eine Befehlszeile (PowerShell oder Eingabeaufforderung) im Administratormodus.
Geben Sie den Befehl ein:
wpr -start gpu -filemodeLassen Sie das Gerät 5 Minuten im Leerlauf.
Geben Sie den Befehl ein:
wpr -stop gputrace.etlUm die Ablaufverfolgung mithilfe von Windows Performance Analyzer (WPA) zu öffnen, geben Sie den Befehl ein:
wpa.exe gputrace.etlÖffnen Sie dasDiagramm für allgemeine Systemaktivitätsereignisse>.
- Filtern Sie nach "Microsoft-Windows-Dxgkrnl"-Ereignissen.
- Ziehen Sie die Spalte "Prozess" in die zweite Position.
- Überprüfen Sie, ob Sie WaitForVsync aufrufen. Beispielsweise durch APIs wie IDXGIOutput::WaitForVBlank (dxgi.h) durch das Ereignis
WaitForVerticalBlankEventInternal.
Weitere Informationen finden Sie im Artikel "Verwenden der Windows-Leistungsanalyse zum Analysieren von Problemen mit modernem Standbymodus".
Weitere Ressourcen
Windows developer