Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Revenge of the Timers

DZone's Guide to

Revenge of the Timers

· Web Dev Zone ·
Free Resource

Learn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.

After my earlier post on analyzing JavaScript timer performance a lot has changed, especially in Firefox 3. An excellent patch landed the other day which is giving us some excellent performance improvements - not the least of which is related to timers.

If you remember from before I took a look at how responsive JavaScript timers were on OSX in Firefox 2, Safari 3, Firefox 3, and Opera 9. The conclusion, at least for me, was that Firefox 3's timers were much improved over Firefox 2's, but could stand some improvement.

I filed a couple bugs, relating to the matter:

And to my delight this new patch completely resolves all of them. Let's take a quick peak at the results. These are the results of doing setInterval(fn, 0); in Firefox 2, Safari 3, Firefox 3, and Opera 9. Firefox 3 is in the bottom-left corner, note the improvement.

Before

After

The change in quality is startling. It's easy to say that Firefox 3 and Safari 3 are quite comparable now, in terms of overall timer quality and, if nothing else, a major improvement over the timers in Firefox 2.

If you want to try this improvement for yourself feel free to download a nightly of Firefox 3 and head on over to the timer test page, I think you'll be quite pleased.

What’s the best way to boost the efficiency of your product team and ship with confidence? Check out this ebook to learn how Sentry's real-time error monitoring helps developers stay in their workflow to fix bugs before the user even knows there’s a problem.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}