Analysieren des Energieverbrauchs in Store-Apps
Mit dem Visual Studio-Profiler Energieverbrauch können Sie den Strom- und Energieverbrauch von Windows Store-Apps auf Tabletgeräten mit geringer Leistung analysieren, die immer oder teilweise mit eigenen Akkus laufen. Auf einem batteriebetriebenen Gerät kann eine App, die zu viel Energie benötigt, die Kunden so unzufrieden machen, dass sie die App schließlich sogar deinstallieren könnten. Durch die Optimierung des Energieverbrauchs können Sie erzielen, dass die Kunden die App besser schätzen und sie häufiger verwenden.
Inhalt
Beschreibung, Funktionsweise und Messwerte des Energieverbrauchsprofilers
Identifizieren von Szenarien mit Benutzermarkierungen
Konfigurieren der Umgebung für die Profilerstellung
Erfassen von Energieprofildaten für die App
Erfassen von Energieprofildaten für eine Installierte App
Analysieren von Energieprofildaten
Optimieren des Energieverbrauchs
Weitere Ressourcen
Beschreibung, Funktionsweise und Messwerte des Energieverbrauchsprofilers
Der Energieverbrauchsprofiler zeichnet die Aktivitäten der Anzeige, der CPU und der Netzwerkverbindungen eines Geräts während einer Profilerstellungssitzung auf. Anschließend generiert es Schätzungen des Stromverbrauchs, der für diese Aktivitäten entsteht, und des gesamten Energieverbrauchs, der für die Profilerstellungssitzung entsteht.
Hinweis
Mit dem Energieprofiler werden Leistung und Energieverbrauch auf Grundlage eines repräsentativen Softwaremodells der Standardgerätehardware für Tabletgeräte mit geringer Leistung geschätzt, auf denen die Anwendung möglicherweise ausgeführt wird.Um die besten Schätzungen zu ermöglichen, wird empfohlen, die Profildaten auf einem Tabletgerät mit geringer Leistung zu sammeln.
Obwohl das Modell gute Schätzungen für eine Vielzahl von Geräten mit schwacher Energieversorgung bereitstellt, sind die tatsächlichen Werte des Geräts, für die ein Profil erstellt wird, wahrscheinlich unterschiedlich.Verwenden Sie die Werte bei der Suche nach Anzeige-, CPU- und Netzwerkaktivitäten, die im Vergleich zu anderen Ressourcenverwendungen ressourcenintensiv sind und daher möglicherweise gute Kandidaten für eine Optimierung sind.
Der Energieverbrauchsprofiler verwendet die folgenden Definitionen für den Strom- und Energieverbrauch:
Strom misst die Rate, mit der in einem bestimmten Zeitraum Kraft für die Ausführung einer Arbeit benötigt wird. In der Elektrowissenschaft ist die Standardeinheit für Energieleistung ein Watt, definiert als die Rate, mit der Arbeit durchgeführt wird, wenn ein Ampere Strom mit einer elektrischen Potenzialdifferenz von einem Volt fließt. Im Diagramm für den Stromverbrauch werden die Einheiten in Milliwatt mW (ein Tausendstel (10 -3) Watt) angezeigt.
Da der Stromverbrauch als Rate dargestellt wird, hat sie eine Richtung (die Arbeit kann in einem Zeitraum zu- oder abnehmen) und eine Geschwindigkeit (der Betrag, um den Arbeit zu- oder abnimmt).
Energie misst die Gesamtmenge an Strom als Kapazität oder als Potenzial wie in der Batteriekapazität oder als die Summe der Energie, die über einen bestimmten Zeitraum verbraucht wurde. Die Energieeinheit ist eine Wattstunde, d. h. die Energie, die mit einer Leistung von einem Watt konstant in einer Stunde angewendet wird. In der Energiezusammenfassung werden die Einheiten in Milliwattstunden mW-h dargestellt.
Ein vollständig geladener Akku in einem Tablet verfügt z. B. über eine bestimmte Menge an gespeicherte Energie. In dem Maße, wie Energie für die Ausführung von Aufgaben wie die Kommunikation über ein Netzwerk, die Berechnung von Werten oder die Anzeige von Grafiken verwendet wird, nimmt die Leistungsfähigkeit des Akkus mit unterschiedlichen Raten ab. Die gesamte, in einem bestimmten Zeitraum verbrauchte Leistung wird auch über den Energieverbrauch gemessen.
Identifizieren von Szenarien mit Benutzermarkierungen
Sie können den Profilerstellungsdaten Benutzermarkierungen hinzufügen, die bei der Identifizierung von Bereichen im Zeitachsenlineal hilfreich sind.
Die Markierung wird bei Ausführung der Methode in der Zeitachse als orangefarbenes Dreieck angezeigt. Die Meldung und die Uhrzeit werden als QuickInfo angezeigt, wenn Sie auf die Markierung zeigen. Wenn mindestens zwei Benutzermarkierungen nahe beieinander liegen, werden die Markierungen zusammengeführt und die QuickInfo-Daten werden kombiniert. Sie können auf der Zeitachse eine Vergrößerung durchführen, um die Markierungen zu trennen.
Hinzufügen von Markierungen zu C#-, Visual Basic- und C++-Code
Zum Hinzufügen einer Benutzermarkierung zu C#-, Visual Basic- und C++-Code erstellen Sie zuerst ein Windows.Foundation.Diagnostics LoggingChannel-Objekt. Fügen Sie anschließend an den Positionen im Code, die Sie markieren möchten, Aufrufe von LoggingChannel.LogMessage-Methoden ein. Verwenden Sie LoggingLevel.Information in den Aufrufen.
Wenn die Methode beendet wird, wird den Profilerstellungsdaten eine Benutzermarkierung und eine Meldung hinzugefügt.
Hinweis
-
Windows.Foundation.Diagnostics LoggingChannel implementiert die Windows.Foundation.IClosable-Schnittstelle (in C# und VB System.IDisposable projiziert).Rufen Sie LoggingChannel.CloseClose() (Dispose() in C# und VB) auf, wenn Sie mit einem Protokollierungskanal fertig sind, um Verluste von Betriebssystemressourcen zu vermeiden.
-
Jeder offene Protokollierungskanal muss einen eindeutigen Namen haben.Der Versuch, einen neuen Protokollierungskanal zu erstellen, der denselben Namen wie ein nicht freigegebener Kanal hat, löst eine Ausnahme aus.
Beispiele hierzu finden Sie im Windows SDK-Beispiel LoggingSession.
Hinzufügen von Markierungen zu JavaScript-Code
Um Benutzermarkierungen hinzuzufügen, fügen Sie Ihrem Code an den gewünschten Positionen den folgenden Code hinzu:
if (performance && performance.mark) {
performance.mark(markDescription);
}
markDescription ist eine Zeichenfolge, die die Meldung enthält, die in der QuickInfo der Benutzermarkierung angezeigt werden soll.
Konfigurieren der Umgebung für die Profilerstellung
Damit Sie gute Schätzungen erhalten, sollten Sie ein Profil für den Energieverbrauch der App auf einem Gerät mit schwacher Energieversorgung, das mit Akkus betrieben wird, erstellen. Da Visual Studio auf den meisten dieser Geräte nicht ausgeführt werden kann, müssen Sie das Gerät mithilfe der Visual Studio-Remotetools an den Visual Studio-Computer anschließen. Um eine Verbindung mit einem Remotegerät herzustellen, müssen Sie sowohl das Visual Studio-Projekt und als auch das Remotegerät konfigurieren. Weitere Informationen finden Sie unter Ausführen von Windows Store-Apps auf einem Remotecomputer in Visual Studio.
Tipp
-
Energieprofilerstellung auf dem Windows Store-Simulator oder auf dem Visual Studio-Computer wird nicht empfohlen.Profilerstellung für das aktuelle Gerät stellt weit realistischere Daten bereit.
-
Profil auf dem Zielgerät, während es über den Akku ausgeführt wird.
-
Schließen Sie andere Apps, die möglicherweise die gleichen Ressourcen haben (Netzwerk, CPU oder Anzeige).
Erfassen von Energieprofildaten für die App
Wählen Sie im Menü Debuggen die Option Leistung und Diagnose aus.
Wählen Sie Energieverbrauch aus, und wählen Sie dann Starten aus.
Hinweis
Beim Start des Profilers Energieverbrauch wird möglicherweise ein Fenster Benutzerkontensteuerung die Berechtigung zum Ausführen der Datei "VsEtwCollector.exe" abfragen.Klicken Sie auf Ja.
Prüfen Sie, ob die Anwendung Daten erfasst.
Um die Profilerstellung zu beenden, wechseln Sie zu Visual Studio zurück (ALT+TAB), und wählen Sie Auflistung beenden auf der Diagnosehubseite aus.
Visual Studio analysiert die erfassten Daten und zeigt die Ergebnisse an.
Erfassen von Energieprofildaten für eine Installierte App
Der Energieverbrauchsprofiler kann nur auf Windows Store 8.1-Apps ausgeführt werden, die aus einer Visual Studio-Projektmappe heraus gestartet werden oder die vom Windows Store installiert werden. Wenn eine Projektmappe in Visual Studio geöffnet ist, ist das Startprojekt das Standardziel. Um auf eine installierte App auszurichten, gehen Sie wie folgt vor:
Wählen Sie Ziel ändern und dann Installierte App aus.
Wählen Sie das Ziel aus der Liste Installiertes App-Paket auswählen aus.
Wählen Sie auf der Diagnosenhubseite die Option Energieverbrauch aus.
Wählen Sie Starten aus, um mit der Profilerstellung zu beginnen.
Um die Profilerstellung zu beenden, wechseln Sie zu Visual Studio zurück (ALT+TAB), und wählen Sie Auflistung beenden auf der Diagnosehubseite aus.
Analysieren von Energieprofildaten
Die Energieprofildaten werden im Dokumentfenster von Visual Studio angezeigt:
Die Berichtsdatei heißt ReportJJJJMMTT-HHMM.diagsession. Sie können den Namen ändern, wenn Sie den Bericht speichern. |
|
Die Zeitachse zeigt die Länge der Profilerstellungssitzung, der App-Lebenszyklusaktivierungsereignisse und der Benutzermarkierungen an. |
|
![]() |
Sie können den Bericht auf einen Teil der Zeitachse einschränken, indem Sie die blauen Striche ziehen, um einen Bereich der Zeitachse auszuwählen. |
![]() |
Das Diagramm Stromverbrauch ist ein Liniendiagramm (mit mehreren Linien), in dem die Änderung in der Stromabgabe anzeigt wird, die durch eine Geräteressource während einer Profilerstellungssitzung verursacht wird. Der Energieverbrauchsprofiler verfolgt die von der CPU, von der Netzwerkaktivität und von der Bildschirmanzeige verwendete Energie. |
![]() |
Das Diagramm Ressourcen (Ein/Aus) stellt Details der Netzwerkenergiekosten dar. In der Leiste Netzwerk wird die Zeit dargestellt, in der die Netzwerkverbindung aktiv war. Die untergeordnete Leiste Datenübertragung stellt die Zeit dar, in der die App Daten über das Netzwerk empfangen oder gesendet hat. |
![]() |
In der Zusammenfassung der Energieverwendung wird der proportionale Betrag der gesamten Energie dargestellt, die in einem ausgewählten Zeitraum von der CPU, von der Netzwerkaktivität und von der Bildschirmanzeige verbraucht wurde. |
Analyse der Energieprofildaten
Suchen Sie einen Bereich, in dem die Ressourcenenergie sehr hoch war. Verknüpfen Sie den Höchstbereich mit der Funktionalität der App. Verwenden Sie dann die Steuerleiste für die Zeitachsen, um auf den Bereich zu vergrößern. Wenn Sie sich auf die Netzwerkauslastung konzentrieren möchten, erweitern Sie den Knoten Netzwerk im Diagramm Ressourcen (Ein/Aus). Sie können nun die Zeit, in der die Netzwerkverbindung aktiv war, mit der Zeit vergleichen, in der die App Daten über die Verbindung empfangen oder übertragen hat. Wenn Sie die Zeit reduzieren, in der das Netzwerk unnötigerweise aktiv ist, ist dies eine sehr effektive Optimierung.
Optimieren des Energieverbrauchs
Neben der Datenübertragung und Netzwerkverbindungen verursachen auch die Initialisierung, der Erhalt und das Beenden der Verbindung Energiekosten. Einige Netzwerke behalten die Verbindung für einen bestimmten Zeitraum bei, nachdem Daten gesendet oder empfangen wurden, damit weitere Daten über eine einzelne Verbindung gesendet oder übertragen werden können. Im Bereich Ressourcen (Ein/Aus) können Sie die Methode überprüfen, mit der die App auf die Verbindung interagiert.
Wenn in den Leisten Netzwerk und Datenübertragung angezeigt wird, dass die Verbindung langfristig aktiv ist, damit eine Reihe kleiner Datenpakete nacheinander übertragen werden kann, können Sie die Daten im Batch im Rahmen einer Übertragung senden. Damit verringern Sie die Zeit, in der das Netzwerk aktiv ist, und und sparen somit Energiekosten.
Über die Energiekosten der Anzeige haben Sie weniger Kontrolle. Die meisten Bildschirme benötigen mehr Energie für die Anzeige heller Farben als für die Anzeige dunkler Farben. Eine Möglichkeit zur Kostenreduktion ist also die Verwendung eines dunklen Hintergrunds.
Weitere Ressourcen
Die Abschnitte Verbindungszustand und Kostenverwaltung für C#/VB/C++ und XAML und JavaScript und HTML im Windows Developer Center beschreiben die Windows-API, die Netzwerkverbindungsinformationen bereitstellen, anhand derer Sie die Kosten des Netzwerkdatenverkehrs für Ihre App minimieren können.
Mit dem Visual Studio-Simulator für Windows Store-Apps können Sie Datenverbindungseigenschaften der APIs für Netzwerkinformationen simulieren. Weitere Informationen finden Sie unter Ausführen von Windows Store-Apps im Simulator
Mit den Tools JavaScript-Funktionstiming und CPU-Auslastung können Sie die CPU-Last reduzieren, wenn diese von ineffizienten Funktionen verursacht wird. Weitere Informationen finden Sie unter Analysieren der CPU-Auslastung in Store-Apps, Sammeln von JavaScript-Funktionstimingdaten in Store-Apps auf einem lokalen Computer und Sammeln von JavaScript-Funktionstimingdaten in Store-Apps auf einem Remotecomputer