定时器分辨率
v1.0.0
MeasureSleep
用于测量Sleep(n)的精度。默认情况下,它处于测量睡眠增量的无限循环中,但您可以使用--samples
参数来获取平均值和 STDEV 指标。
SetTimerResolution
用于通过调用 NtSetTimerResolution 来请求更高分辨率。作为在系统启动时自动启动程序的隐藏实例并将分辨率提高到 0.5 毫秒的示例,请将二进制文件放置在安全的地方,并使用以下命令在任务计划程序(指令)中创建计划任务作为示例。
C:SetTimerResolution.exe --resolution 5000 --no-console
根据 Great Rule Change 文章的评论,在 Windows Server 2022+ 和 Windows 11+ 上,还可以使用下面的注册表项,以便请求更高分辨率在系统范围内有效,而不仅仅是调用进程。这应该仅用于调试目的。
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel]
"GlobalTimerResolutionRequests"=dword:00000001
micro-adjust-benchmark.ps1 脚本可用于自动绘制精度与分辨率的过程。结果可以通过 Chart-studio.plotly.com 进行可视化。
git clone https: // github.com / valleyofdoom / TimerResolution.git
cd .TimerResolution
# x64
$ env: VCPKG_DEFAULT_TRIPLET = " x64-windows "
# install dependencies
vcpkg install
# replace "SetTimerResolution" with "MeasureSleep" if desired
MSBuild.exe .TimerResolution.sln - p:Configuration = Release - p:Platform = x64 - t:SetTimerResolution