1

我想测量能源消耗

  • 我自己的应用程序(我可以修改)
  • 3rd 方应用程序(我无法修改)

  • 视窗 CE 5.0
  • 视窗手机 5/6

是否有某种API?

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

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

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

4

4 回答 4

3

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

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

于 2009-04-07T07:02:48.200 回答
3

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

采取任何你得到的相对测量,因为它们可能不能代表你在不同设备上运行程序时观察到的结果。

示例程序截图 http://www.codeproject.com/kb/mobile/WiMoPower1/TitleImage.png

于 2009-04-07T11:58:34.653 回答
1

如果您真的想自己调用 api,我不知道该调用哪个,但如果您只想知道运行某些应用程序时的功耗情况,您可以使用acbPowerMeter应用程序。

acbPowerMeter 图表显示您设备的实时电源使用情况。该实用程序非常轻巧,可以对您的电池使用情况进行基准测试。

于 2009-04-07T06:58:25.480 回答
0

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

PAPIjRALP

jRALP 的使用似乎很简单:

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

不幸的是,对于 OP,它们似乎(我不确定)不是 Windows 就绪的,它们仅适用于某些英特尔处理器。

于 2016-07-17T11:00:41.570 回答