MeasureSleep
é usado para medir a precisão de Sleep(n). Por padrão, ele fica em um loop infinito medindo os deltas do sono, mas você pode usar o argumento --samples
para obter métricas médias e STDEV.
SetTimerResolution
é usado para solicitar uma resolução mais alta chamando NtSetTimerResolution. Como exemplo para iniciar automaticamente uma instância oculta do programa quando o sistema inicia e aumentar a resolução para 0,5ms, coloque o binário em algum lugar seguro e crie uma tarefa agendada no agendador de tarefas (instruções) com o comando abaixo como exemplo.
C:SetTimerResolution.exe --resolution 5000 --no-console
De acordo com um comentário no artigo Great Rule Change, no Windows Server 2022+ e no Windows 11+, a chave de registro abaixo também pode ser usada para que a solicitação de uma resolução mais alta seja eficaz em todo o sistema, e não apenas no processo de chamada. Isso só deve ser usado para fins de depuração.
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel]
"GlobalTimerResolutionRequests"=dword:00000001
O script micro-adjust-benchmark.ps1 pode ser usado para automatizar o processo de plotagem de precisão em relação às resoluções. Os resultados podem ser visualizados em 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