MeasureSleep
wird verwendet, um die Präzision von Sleep(n) zu messen. Standardmäßig befindet es sich in einer Endlosschleife und misst die Schlafdeltas, Sie können jedoch das Argument --samples
verwenden, um Durchschnitts- und STDEV-Metriken zu erhalten.
SetTimerResolution
wird verwendet, um durch Aufrufen von NtSetTimerResolution eine höhere Auflösung anzufordern. Um beispielsweise beim Systemstart automatisch eine versteckte Instanz des Programms zu starten und die Auflösung auf 0,5 ms zu erhöhen, platzieren Sie die Binärdatei an einem sicheren Ort und erstellen Sie eine geplante Aufgabe im Taskplaner (Anweisungen). Verwenden Sie dazu den folgenden Befehl als Beispiel.
C:SetTimerResolution.exe --resolution 5000 --no-console
Laut einem Kommentar zum Artikel „Great Rule Change“ kann unter Windows Server 2022+ und Windows 11+ auch der unten stehende Registrierungsschlüssel verwendet werden, sodass die Anforderung einer höheren Auflösung auf systemweiter Ebene wirksam ist und nicht nur auf den aufrufenden Prozess. Dies sollte nur zu Debugzwecken verwendet werden.
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel]
"GlobalTimerResolutionRequests"=dword:00000001
Das Skript micro-adjust-benchmark.ps1 kann verwendet werden, um den Prozess der Darstellung der Präzision gegenüber Auflösungen zu automatisieren. Die Ergebnisse können mit chart-studio.plotly.com visualisiert werden.
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