タイマー解像度
v1.0.0
MeasureSleep
、Sleep(n) の精度を測定するために使用されます。デフォルトでは、睡眠デルタを測定する無限ループ内にありますが、 --samples
引数を使用して平均および STDEV メトリクスを取得できます。
SetTimerResolution
、NtSetTimerResolution を呼び出して、より高い解像度を要求するために使用されます。システムの起動時にプログラムの非表示のインスタンスを自動的に起動し、解像度を 0.5 ミリ秒に上げる例として、バイナリを安全な場所に置き、タスク スケジューラ (手順) でスケジュールされたタスクを作成する例として、以下のコマンドを使用します。
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