MeasureSleep
se utiliza para medir la precisión de Sleep(n). De forma predeterminada, se encuentra en un bucle infinito que mide los deltas de sueño, pero puede usar el argumento --samples
para obtener métricas promedio y STDEV.
SetTimerResolution
se utiliza para solicitar una resolución más alta llamando a NtSetTimerResolution. Como ejemplo para iniciar automáticamente una instancia oculta del programa cuando se inicia el sistema y aumentar la resolución a 0,5 ms, coloque el binario en un lugar seguro y cree una tarea programada en el programador de tareas (instrucciones) con el siguiente comando como ejemplo.
C:SetTimerResolution.exe --resolution 5000 --no-console
Según un comentario en el artículo Great Rule Change, en Windows Server 2022+ y Windows 11+, la clave de registro a continuación también se puede usar para que solicitar una resolución más alta sea efectiva a nivel de todo el sistema y no solo en el proceso de llamada. Esto sólo debe usarse con fines de depuración.
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel]
"GlobalTimerResolutionRequests"=dword:00000001
El script micro-adjust-benchmark.ps1 se puede utilizar para automatizar el proceso de trazar la precisión frente a las resoluciones. Los resultados se pueden visualizar con 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