TimerResolution is an application to change the resolution of the default windows timer. The standard timer on Windows XP can vary between 10 and 25 milliseconds. Therefore if your code uses a timer or sleep value less than the timer resolution on your system you won’t be getting the results you expect.
The timer resolution will be globally changed while the application is running and will revert to the previous value when it is closed.
|Timer Resolution||Version 1.2||Version 2.0|
|OS Support||Windows XP 32-bit||Windows XP 32-bit, Vista 32-bit, Vista 64-bit, Windows7 32-bit, Windows7 64-bit, Windows 8 32-bit, Windows 8 64-bit|
|Maximum Resolution||~1.0ms (depends on OS and Hardware)||~0.5ms (depends on OS and Hardware)|
|Command Line Functions||None||TimerResolution [-max] [-hide]
-max : Sets timer period to the maximum (fastest) value
-hide : Hides the GUI window
|Download||TimerResolution.zip (7 kb)|
[Download] TimerResolution.zip (7Kb) Limited Free Version 1.2
How did this application get created?
I had a need for a program to run every 5 milliseconds but I found that no matter what I did the best I could get was 12ms. I tried different values for my timer and found that a value above 12ms would also produce results with jitter up to 12ms. What was so special about 12ms? I tried a different computer and found that the magic value was 15ms… what was windows doing? Time to Google the answer.
I left the program running to see if the value changed with time or CPU load. Suddenly the program started to produce 5ms results with very little jitter! By trial and error I found that if I loaded a particular web page the program worked as expected. What was so special about this page? It turns out that it had a Flash based advertisement on it so I had my next clue. As a guess I closed the web page and started Media Player and got the same result. It seems that when an application requests a high resolution timer for multimedia purposes it changes the resolution of the timer for the entire system.
So now I had a solution but it required linking to the winmm.lib which as a programmer didn’t sit well with me since my application had nothing to do with multimedia. A little more research and I was onto the undocumented native API. Now I had the lightweight solution I was looking for. I hope you find that the program answers some questions for you. I’ve found that it can improve the performance and responsiveness of all sorts of applications.
Useful Links on the Windows Timers
MSDN – Windows Multimedia SDK Obtaining and Setting Timer Resolution
The Code Project – Timers tutorial – System
Note: This page was located at http://users.tpg.com.au/lucash/ until October 2007 when it moved to its new home here