HTML 5 Canvas: Linux Performance Issues

Will Daniels <[email protected]> Wed, 7 Oct 2009 15:54:36 -0700 (PDT)
Newsgroups gmane.comp.mozilla.performance
Organization http://groups.google.com
Message-ID <022336d8-9564-4813-9fac-c249b7e2fe0f@e18g2000vbe.googlegroups.com>
Hi everyone!

I started playing with HTML 5 canvas the other day, rendering
fractals, and I noticed an enormous (2000%) disparity in performance
between Ubuntu Linux and Windows builds of Firefox 3.5.3 (see
http://willdaniels.co.uk/blog/14-math-stuff/28-playing-with-fractals-in-html5).

After testing a number of different browsers on different platforms, I
concluded that: Opera is consistently slow, Chromium is consistently
"swift", and Intel/PGO builds of Firefox are consistently fastest.

I'd really like to help improve performance of GCC builds of Firefox,
but I don't (yet) know anything about whether the PGO capabilities of
GCC are used in building the Ubuntu Firefox package, or indeed whether
it is PGO primarily that is making the difference here (i.e. perhaps
the Intel compiler is just that much better at optimising this
particular arithmetic case).

So I thought this might be the best place to ask for pointers to help
me figure all this out, and that perhaps you might otherwise be
interested in this example as a clear demonstration of the immense
performance impact the compiler can have on occasion.

One thing in particular I'd like to ask here, is whether you keep any
3.5.3 Linux binaries that are compiled with the Intel compiler without
the PGO phase, for comparison?

Any information on this subject gratefully received! :)

Cheers,
Will

PS: If anybody can suggest also why the rendering of my fractal "zoom
box" (on the mousemove event) is noticeably lagged using the Mozilla
Linux build, but not the Ubuntu build (or any other build of any other
browser on any other platform that I tried) I would appreciate that
also :P It's very odd because it is only using getImageData and
putImageData the same as the much improved rendering of the main
fractal image, yet I can't think what else might influence the
responsiveness of the mousemove event :S