如何在Windows Mobile和Windows CE上测量应用程序的能耗?

时间:2009-04-07 06:30:31

标签: windows-mobile windows-ce energy

我想衡量

的能耗
  • 我自己的应用程序(我可以修改)
  • 第三方应用程序(我无法修改)

on

  • Windows CE 5.0
  • Windows Mobile 5/6

是否有某种API?

如果没有,我可以测量其他可以用来估算能耗的值吗?

我不需要像20 mAh这样的确切值(虽然这样会很好)相对值就足够了,例如:“从100%到0%的充电状态,大约20%的充满电这个应用程序使用了电池“

另一方面,测量特定于单个应用程序是非常重要的,即我不希望对一组应用程序进行聚合测量,例如“这三个应用程序一起消耗......”

4 个答案:

答案 0 :(得分:3)

这似乎是一个相当难以衡量的事情,因为你无法真正孤立一个单独的进程来自行运行。实际上,如果你试图这样做,你就会遇到很难定义什么构成“单个进程” - 它只是属于该程序的用户空间代码吗?或者您是否包含代表该程序执行的内核代码?如果操作系统优化内核代码以便使用几乎恒定的能量来处理来自不同程序的类似请求,该怎么办?然后你甚至无法通过程序分离出能源使用情况。

在这种情况下,我倾向于测量期望值,基本上是应用程序使用的平均能量。理想情况下,您将从大量系统开始,所有系统都相同,只是其中一半运行应用程序而其中一半不运行。让每个系统在你想要测试的任何操作条件下运行(当然,所有设备的条件相同,除了其中一半运行app而另一半不运行的事实),并测量能量的速率使用标准API消耗,或让电池耗尽并测量每个单元耗尽电池所需的时间。然后比较运行应用程序的设备的平均结果与未运行应用程序的平均结果,并计算程序增加计算机功耗的程度。

答案 1 :(得分:3)

有一个API可以获取有关功耗的信息,但此API返回的信息的准确性取决于OEM(某些OEM根本不提供信息)。有关此API的示例代码的更多信息,请访问http://www.codeproject.com/kb/mobile/Wimopower1.aspx(以下示例程序的屏幕截图)。从屏幕截图中可以看出,您可以分辨电池的电压,电流消耗,电池类型等。准确测量即时功耗需要外部硬件(我假设您不想进行硬件投资来进行测量)。

进行任何相对测量,因为它们可能无法代表您在其他设备上运行程序时所观察到的内容。

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

答案 2 :(得分:1)

如果你真的想自己打电话给api,我不知道应该打电话给谁,但如果你只是想知道在运行某些应用程序时的功耗是多少,你可以使用acbPowerMeter应用程序。 / p>

  

acbPowerMeter实时图表   设备的耗电量。这个   实用程序非常轻,允许   电池使用情况的基准测试。

答案 3 :(得分:0)

加上我的两分钱,有几个库可以使用INTEL RALP architecture测量能耗:

PAPIjRALP

使用jRALP似乎很简单:

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

不幸的是,对于OP来说,他们似乎(我不确定)不支持Windows,而且它们仅适用于某些英特尔处理器。