2009-04-07 9 views
1

私はWindows MobileおよびWindows CEでアプリケーションのエネルギー消費量を測定するにはどうすればよいですか?

    • 自分のアプリケーション(私は変更することができた)(私は変更することはできません)
    • サードパーティアプリケーション

    のエネルギー消費量を測定したいです

  • Windows CE 5.0
  • Windows Mobile 5/6

これにはAPIがありますか?

そうでない場合は、エネルギー消費量を見積もるために使用できる他の値を測定できますか?

20 mAhのような正確な値は必要ありません(それはいいかもしれませんが)。相対値では、次のようになります: "完全に充電されたバッテリーの約20%が充電状態で100%から0%一方、測定が単一のアプリケーションに固有であること、すなわち、これらの3つのアプリケーションが一緒に消費するような、一連のアプリケーションに対して集計測定を望むことは非常に重要です。 "

答えて

3

消費電力に関する情報を取得するためのAPIがありますが、このAPIによって返される情報の精度はOEMによって異なります(一部のOEMでは、情報を利用できない場合があります)。このAPIに関するサンプルコードの詳細は、http://www.codeproject.com/kb/mobile/Wimopower1.aspx(下記のサンプルプログラムのスクリーンショット)を参照してください。スクリーンショットからわかるように、バッテリーの電圧、電流の引き込み、バッテリーの種類などを表示できます。瞬間的な消費電力の正確な測定には、外部ハードウェアが必要です(測定を行うためにハードウェア投資をしたくないと仮定しています)。

異なるデバイスでプログラムを実行しているときに観察したことを示すものではないため、相対的な測定値を取ってください。私の2セントを追加

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

+0

「ベース」ソフトウェアの消費電力を取得し、別のアプリケーションを起動して別の測定を行うことができます。次に、ベース測定値を減算すると、アプリケーションの平均消費電力が得られます。 – josef

1

実際にapiを自分自身に呼びたい場合は、どちらを呼び出すのかわからないが、特定のアプリケーションを実行しているときの電力消費量を知りたいのであればあなたはacbPowerMeterアプリケーションを使うことができます。

acbPowerMeterは、デバイスの消費電力をリアルタイムで に示しています。この ユーティリティは非常に軽量で、 のバッテリー使用状況のベンチマークが可能です。

3

これは単なるプロセスを単独で実行することができないため、計測が難しいようです。実際、あなたがそうしようとすると、「単一のプロセス」を構成するものを定義するのが難しくなります。それはそのプログラムに属するユーザー空間コードだけですか?あるいは、プログラムに代わって実行されるカーネルコードも含めますか? OSがカーネルコードを最適化して、異なるプログラムからの同様の要求がほぼ一定量のエネルギーを使って一緒に処理される場合はどうでしょうか?それで、プログラムごとにエネルギー使用量を分けることさえできませんでした。

このような場合、私の傾向は期待値、つまり本質的にアプリケーションによって使用されるエネルギーの平均量を測定することです。理想的には、多数のシステムから始めましょう。システムの半数はアプリケーションを実行し、残りの半分は実行しません。それぞれのシステムをテストしたい動作条件(すべてのデバイスで同じ条件ですが、半分がアプリケーションを実行し、半分がアプリケーションを実行していることを除いて)を実行し、エネルギーの割合を測定するか標準APIを使用したり、バッテリが使い果たされ、各ユニットがバッテリを消耗するのにかかる時間を測定します。次に、アプリケーションを実行していたデバイスの平均結果と、それ以外のデバイスの平均結果を比較して、プログラムがコンピュータの消費電力をどのくらい増加させるかを調べることができます。

0

INTEL RALP architectureを使用してエネルギー消費量を測定することができ、いくつかのライブラリがあります

PAPIjRALPがあります。

jRALPの使用が容易なようだ:

OPのため残念ながら
double beginning = EnergyCheck.statCheck(); 
    doWork(); 
    double end = EnergyCheck.statCheck(); 

、彼らがいるようです(私はよく分からない)ではないWindowsの対応と、彼らは、特定のIntelプロセッサのために働きます。

関連する問題