Timer Resolution refers to the smallest unit of time that a timer can measure. It is a crucial concept in software and operating systems, especially in high-resolution timing and performance-critical applications.
Timer resolution affects the precision and accuracy of time measurements. A higher timer resolution allows for more precise timing, which is essential in various applications, such as:
- Audio and video processing
- Gaming
- Real-time control systems
In these scenarios, high-resolution timers help to reduce latency and ensure smooth and accurate operations, resulting in faster and more responsive systems.
On Windows, the default system timer resolution is typically around 15.6ms. With Timer Resolution adjustments, it can be reduced to around 0.5ms. Results
A timer resolution of 0.5ms may not be suitable for all users as it can potentially deteriorate performance. Therefore, it is essential to adjust the timer resolution to the optimal setting for your specific system.
- Windows 11
- Registry Editor
- CPU Stress Test (Prime95)
bench.ps1
MeasureSleep.exe
SetTimerResolution.exe
-
Copy
bench.ps1
,MeasureSleep.exe
, andSetTimerResolution.exe
into the C: drive. -
Open Registry Editor and navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel
. Create a new DWORD calledGlobalTimerResolutionRequests
with the value set to1
. -
Open CMD as Admin and execute:
bcdedit /set disabledynamictick yes
-
Restart Your PC
-
Open Windows PowerShell as Admin and execute:
Set-ExecutionPolicy Unrestricted
After that, press "A" and enter.
-
Use a CPU Stress Test (e.g., Prime95) to operate the CPU at the highest P-State P0.
Warning!: Running a CPU stress test can cause overheating, system instability, and accelerated hardware wear. Ensure adequate cooling and monitor system health.
-
Open Windows PowerShell as Admin and navigate to the root directory using:
cd.. cd.. .\bench.ps1
Choose "R" (or in some cases "M") to run it once and press enter.
The benchmark will run for about 5 minutes. After it finishes, you can close it.
-
After the benchmark, a file called
results.txt
will be created. Look for the lowest DeltaMs and STDEV values. For me it is 0.51ms (results can vary).You can also plot the results on Plotly.
-
Press Win + R, type
shell:startup
, and create a shortcut forTimerResolution.exe
. Paste it into the startup folder and modify the shortcut path to include:--resolution 5XXX --no-console
(Replace
5XXX
with your result from step 7.)
All testing was conducted with the application MeasureSleep.exe. To test, start MeasureSleep.exe
as Admin and observe the results. The goal is for the number following "slept" to be close to 1 and the delta to be low, indicating optimal performance.
-
Without Timer Resolution / GlobalTimerResolutionRequests 0 / disabledynamictick false
-
Without Timer Resolution / GlobalTimerResolutionRequests 1 / disabledynamictick yes
-
With Timer Resolution at 0.51ms / GlobalTimerResolutionRequests 0 / disabledynamictick false
-
With Timer Resolution at 0.51ms / GlobalTimerResolutionRequests 1 / disabledynamictick yes
Testing was performed in Counter-Strike 2 on a custom workshop map. (All settings are at high)
- OS: Windows 11 23H2
- CPU: Ryzen 7 5800x3D (-30 CO Curve / PPT: 100, TDC: 70, EDC: 100)
- Motherboard: MSI B550 Gaming Plus
- GPU: Gigabyte RTX 3070 Gaming OC (undervolted) 556.12
- RAM: Corsair Vengeance RGB RT 3600MHz CL16
- Storage: WD_BLACK SN850X 2TB
All credit goes to amitxv. You can visit his profile at GitHub.