我注意到每当我打开delphi 2010 ide时,笔记本电脑的电池续航时间就会明显变差.当我执行powercfg / energy trace时,它显示(除其他外)bds.exe请求的计时器分辨率小于默认值15.6ms.
Current Timer Resolution (100ns units) 10006 Maximum Timer Period (100ns units) 156250 Requested Period 10000 Requesting Process ID 7996 Requesting Process Path \Device\HarddiskVolume2\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\bds.exe
delphi是否有充分的理由改变平台计时器分辨率?还有最新版本的ide具有相同的行为吗?
解决方法
IDE使用非常旧版本的VirtualTrees.pas作为ProjectManager,StructureView和Log-Window.此版本在其InitializeGlobalStructures函数中调用timeBeginPeriod,并将计时器分辨率设置为最小值(1).它在单元的终结块中重置.
VirtualTrees使用此提交更改了此行为:
2013-09-20 21:40:21: No longer changing timer resolution globally (#365)
但是IDE仍然使用一个非常旧的版本,甚至不使用UnicodeString而是使用WideString.因此自Delphi 2007以来它没有更新.