定時器分辨率
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