타이머해상도
v1.0.0
MeasureSleep
Sleep(n)의 정밀도를 측정하는 데 사용됩니다. 기본적으로 수면 델타를 측정하는 무한 루프에 있지만 --samples
인수를 사용하여 평균 및 STDEV 측정항목을 얻을 수 있습니다.
SetTimerResolution
은 NtSetTimerResolution을 호출하여 더 높은 해상도를 요청하는 데 사용됩니다. 시스템이 시작될 때 프로그램의 숨겨진 인스턴스를 자동으로 시작하고 해상도를 0.5ms로 높이는 예로서 바이너리를 안전한 곳에 놓고 아래 명령을 사용하여 작업 스케줄러(지침)에서 예약된 작업을 만듭니다.
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