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

Windows mobile 如何在Windows Mobile和Windows CE上测量应用程序的能耗?,windows-mobile,windows-ce,energy,Windows Mobile,Windows Ce,Energy,我想测量一下汽车的能耗 我自己的应用程序(我可以修改) 第三方应用程序(我无法修改) 在 WindowsCE5.0 Windows Mobile 5/6 这有什么API吗 如果没有,我是否可以测量其他可用于估算能耗的值 我不需要像20 mAh这样的精确值(尽管这很好),相对值就足够了,比如:“从100%到0%的充电状态开始,这个应用程序使用了大约20%的充满电的电池” 另一方面,度量是针对单个应用程序的,这一点非常重要,也就是说,我不希望对一组应用程序进行聚合度量,例如,“这三个应用程序

我想测量一下汽车的能耗

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

  • WindowsCE5.0
  • Windows Mobile 5/6
这有什么API吗

如果没有,我是否可以测量其他可用于估算能耗的值

我不需要像
20 mAh
这样的精确值(尽管这很好),相对值就足够了,比如:“从100%到0%的充电状态开始,这个应用程序使用了大约20%的充满电的电池”


另一方面,度量是针对单个应用程序的,这一点非常重要,也就是说,我不希望对一组应用程序进行聚合度量,例如,“这三个应用程序一起消耗…”如果您真的想自己调用api,我不知道该调用哪一个,但是,如果您只想知道运行某些应用程序时的功耗,您可以使用该应用程序

acbPowerMeter绘制实时 设备的电源使用情况。这 实用工具非常轻,允许 电池使用的基准测试


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

acbPowerMeter绘制实时 设备的电源使用情况。这 实用工具非常轻,允许 电池使用的基准测试


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


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

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


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

有一个获取功耗信息的API,但该API返回的信息的准确性取决于OEM(一些OEM根本不提供这些信息)。有关此API示例代码的更多信息,请访问(下面示例程序的屏幕截图)。从屏幕截图中可以看出,您可以了解电池的电压、电流拉力、电池类型等。准确测量瞬时功耗需要外部硬件(我假设您不想进行硬件投资来进行测量)

采取任何相对的测量方法,因为它们可能无法代表在不同设备上运行程序时所观察到的情况


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

拿什么
  double beginning = EnergyCheck.statCheck();
  doWork();
  double end = EnergyCheck.statCheck();