Somehow Firefox became the slowest kid on the block, simply by not improving as fast as others (FF4 is better, but unfortunately change is smaller than I hoped for).
Which is really pity, it's still my primary browser and has a lot of good things going for it.
What's actually worse than FF canvas rendering performance (which, in fact, is not that bad if you measure it) is its memory management.
FF does something very weird, code that works ok in other browsers causes huge memory spikes followed by frequent garbage collection (e.g. what makes tens of KB memory use oscillations in Opera/Chrome makes tens of MB oscillations in FF).
Even something as simple as assigning repeatedly random numbers to fixed length array grows memory in FF. Canvas operations do the same, causing memory use to grow at an alarmingly fast rate.
So if you do animations (or anything which gets executed repeatedly), you get relatively fast rendering which is triggered erratically and paused due to "behind the scene" memory management (which slows down everything).
Small world, I created a page referred to in the bug report :).
Yes, Chrome's memory management got better [1] and Firefox's got worse (at least relatively, they know about the problem and made some improvements [2], but meanwhile other browsers got even better).
It looks like while both Chrome and FF improved their garbage collectors, FF somehow got much higher memory consumption in the first place (growing memory in places where it really shouldn't - aforementioned array assignments or drawing into canvas).
-----
[1] I remember a period where Chrome was tuning their memory management, you would get very different performance between subsequent Chrome updates.
Which is really pity, it's still my primary browser and has a lot of good things going for it.
What's actually worse than FF canvas rendering performance (which, in fact, is not that bad if you measure it) is its memory management.
FF does something very weird, code that works ok in other browsers causes huge memory spikes followed by frequent garbage collection (e.g. what makes tens of KB memory use oscillations in Opera/Chrome makes tens of MB oscillations in FF).
Even something as simple as assigning repeatedly random numbers to fixed length array grows memory in FF. Canvas operations do the same, causing memory use to grow at an alarmingly fast rate.
So if you do animations (or anything which gets executed repeatedly), you get relatively fast rendering which is triggered erratically and paused due to "behind the scene" memory management (which slows down everything).