MeasureSleep
est utilisé pour mesurer la précision de Sleep(n). Par défaut, il se trouve dans une boucle infinie mesurant les deltas de sommeil, mais vous pouvez utiliser l'argument --samples
pour obtenir les métriques moyennes et STDEV.
SetTimerResolution
est utilisé pour demander une résolution plus élevée en appelant NtSetTimerResolution. À titre d'exemple, pour démarrer automatiquement une instance cachée du programme au démarrage du système et augmenter la résolution à 0,5 ms, placez le binaire dans un endroit sûr et créez une tâche planifiée dans le planificateur de tâches (instructions) avec la commande ci-dessous comme exemple.
C:SetTimerResolution.exe --resolution 5000 --no-console
Selon un commentaire sur l'article Great Rule Change, sur Windows Server 2022+ et Windows 11+, la clé de registre ci-dessous peut également être utilisée afin que la demande d'une résolution plus élevée soit efficace à l'échelle du système plutôt que uniquement au niveau du processus d'appel. Cela ne doit être utilisé qu'à des fins de débogage.
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel]
"GlobalTimerResolutionRequests"=dword:00000001
Le script micro-adjust-benchmark.ps1 peut être utilisé pour automatiser le processus de traçage de la précision par rapport aux résolutions. Les résultats peuvent être visualisés avec 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