我目前正在用C#编写一个应用程序,我需要大约启动一个计时器.每5毫秒.从一些研究看来,最好的方法是p /调用timeBeginPeriod(...)来改变系统计时器的分辨率.它在我的示例代码中运行良好.
我在此条目中发现了一条关于在Larry Osterman的MSDN博客上使用此功能的有趣警告:
Adam:调用timeBeginPeriod也可以提高GetTickCount的准确性.
使用timeBeginPeriod一般是一个非常糟糕的想法 - 我们一直在积极地删除它在Windows中的所有用途,因为使用它会带来功耗的后果.
有更好的方法可以确保您的线程及时运行.
有没有人确切知道为什么会发生这种情况,或者那些"更好的方式"(在线程中未指定)可能是什么?我们谈论的额外功耗是多少?
小智 5
更改系统计时器分辨率确实会影响功耗,主要是因为许多开发人员不了解Windows计时器.您会看到许多代码的睡眠或计时器值小于15毫秒.它还会更改系统任务的行为,从而导致更多的电量使用.
突然将系统定时器更改为1ms所有这些仅每15ms唤醒的代码开始更频繁地唤醒,并且CPU使用率上升.
然而,从用户的角度来看,滥用定时器的程序可能会变得更具响应性,即使是WinXP的操作系统也是如此,因此需要权衡利弊.
我有一个小程序可以更改系统计时器,因此您可以自己试验和测试电源使用情况.http://www.lucashale.com/timer-resolution/还有许多链接和更多背景信息.