Sunday, August 26, 2007
Improving jQuery Timers Applications
A recent discovery about how jQuery is using AJAX using timer dispatch functions opened up a can of worms about the engineering reasoning used for the jQuery AJAX timer design.
I won't rehash the fine details. If you want to follow the discussion, read the thread at jQuery Support Group.
What I will show is how any jQuery applicaiton that has timers involved can behave differently depends on the user's PC machine timer resolution.
If you have a jQuery application that is sensitive with timers, you owe it to yourself to test it with the test C/C++ utility.
source code: fastsleep.cpp
zip exe/source: fastsleep.zip
Run the utility and then start to test your jQuery application. Make sure it works with as you expect it. Then hit M in the utility to change the resolution on the PC and retest your jQuery application to see if you see any negative or positive effect.
You might be surprise at what you see. Even if you don't see any visual difference or broken behavior using a PC 1ms timer resolution, your jQuery application could be using excessive overhead. To measure this, you will need to use the FireBug Profiler to see how many times a portion of code was run.
I'll keep it short, last year I can across this interesing submission at codeproject.com:
How Yahoo! speeds up your application
For me, what was the ultimate discovery is that any application running on your PC, including any browser plugin, who changes the PC's multi-media resolution with a call to timeBeginPeriod(1), the change applies across the entire PC system.
Go ahead and play with this. I am highly interesting to see any reports with timer resolution sensitivity in jQuery applications.