2009-04-07 5 views
1

Ich will den Energieverbrauch vonWie kann ich den Energieverbrauch meiner Anwendung unter Windows Mobile und Windows CE messen?

  • meiner eigenen Anwendung messen
  • 3rd-Party-Anwendungen (die ich ändern kann) (die ich nicht ändern kann)

auf

  • Windows CE 5.0
  • Windows Mobile 5/6

Gibt es eine Art API dafür?

Wenn nicht, kann ich andere Werte messen, mit denen ich den Energieverbrauch abschätzen kann?

Ich brauche keinen genauen Wert wie 20 mAh (obwohl das wäre nett) Ein relativer Wert würde ausreichen, wie: "Ausgehend von 100% bis 0% Ladezustand wurden etwa 20% der voll geladenen Batterie verwendet durch diese Anwendung "

Auf der anderen Seite ist es sehr wichtig, dass die Messung für eine einzelne Anwendung spezifisch ist, dh ich möchte keine aggregierten Messungen für eine Gruppe von Anwendungen, wie" diese drei Anwendungen zusammen konsumieren. . "

Antwort

3

Es gibt eine API zum Abrufen von Informationen zum Stromverbrauch, aber die Genauigkeit der von dieser API zurückgegebenen Informationen ist OEM-abhängig (einige OEMs stellen die Informationen überhaupt nicht zur Verfügung). Weitere Informationen mit Beispielcode zu dieser API finden Sie unter http://www.codeproject.com/kb/mobile/Wimopower1.aspx (Screenshot von Beispielprogrammen unten). Wie Sie auf dem Screenshot sehen können, können Sie die Batteriespannung, den Stromverbrauch, den Akkutyp und vieles mehr bestimmen. Eine genaue Messung des momentanen Stromverbrauchs erfordert externe Hardware (und ich gehe davon aus, dass Sie keine Hardwareinvestition für Ihre Messungen benötigen).

Nehmen Sie alle Messungen, die Sie relativieren, da sie nicht repräsentativ für das sind, was Sie beim Ausführen Ihres Programms auf einem anderen Gerät beobachten würden.

Screenshot of Example Program http://www.codeproject.com/kb/mobile/WiMoPower1/TitleImage.png

+0

Sie können den Stromverbrauch der Software 'base' abrufen und dann eine andere Anwendung starten und eine andere Messung durchführen. Dann subtrahieren Sie die Basismessung und Sie haben einen durchschnittlichen Stromverbrauch der Anwendung. – josef

1

Wenn Sie wirklich die APIs selbst anrufen wollen, würde ich nicht wissen, welche Sie anrufen sollen, aber wenn Sie nur wissen möchten, wie viel Strom beim Ausführen bestimmter Anwendungen verbraucht wird s können Sie die acbPowerMeter Anwendung verwenden.

acbPowerMeter zeigt die Echtzeit Stromverbrauch Ihres Geräts. Dieses Dienstprogramm ist sehr leicht und ermöglicht Benchmarking Ihres Batterieverbrauchs.

3

Das scheint eine ziemlich schwierige Sache zu sein, weil Sie nicht wirklich einen einzelnen Prozess isolieren können, um selbst zu laufen. Wenn Sie dies tun würden, würden Sie Schwierigkeiten haben, zu definieren, was ein "einzelner Prozess" ist - ist es nur der Userspace-Code, der zu diesem Programm gehört? Oder fügen Sie den Kernel-Code ein, der im Namen des Programms ausgeführt wurde? Was ist, wenn das Betriebssystem den Kernel-Code optimiert, so dass ähnliche Anfragen von verschiedenen Programmen zusammen mit einer nahezu konstanten Menge an Energie gehandhabt werden? Dann konnte man den Energieverbrauch nicht einmal pro Programm trennen.

In einem Fall wie diesem würde meine Neigung sein, den Erwartungswert zu messen, im Wesentlichen die durchschnittliche Menge an Energie, die von der Anwendung verbraucht wird. Im Idealfall würden Sie mit einer großen Anzahl von Systemen beginnen, die alle identisch sind, außer dass die Hälfte von ihnen die Anwendung ausgeführt hat und die Hälfte von ihnen nicht. Lassen Sie jedes der Systeme unter allen Betriebsbedingungen laufen, unter denen Sie testen möchten (natürlich mit den gleichen Bedingungen für alle Geräte, abgesehen von der Tatsache, dass die Hälfte die App ausführt und der Hälfte nicht) und messen Sie die Energierate Verbrauch mit der Standard-API, oder lassen Sie die Batterien leer und messen Sie, wie lange jedes Gerät benötigt, um die Batterie zu entleeren. Vergleichen Sie dann das Durchschnittsergebnis der Geräte, auf denen die App ausgeführt wurde, mit dem Durchschnittsergebnis der nicht vorhandenen Geräte, und Sie können herausfinden, wie stark das Programm den Stromverbrauch des Computers erhöht.

0

meine zwei Cent hinzufügen, gibt es mehrere Bibliotheken, die den Energieverbrauch mit der INTEL RALP architecture messen kann:

Es gibt PAPI und jRALP.

Die Verwendung von jRALP scheint einfach:

double beginning = EnergyCheck.statCheck(); 
    doWork(); 
    double end = EnergyCheck.statCheck(); 

Leider für den OP, scheinen sie (ich bin mir nicht sicher) nicht auf Windows bereit und sie arbeiten nur für bestimmte Intel-Prozessoren.