Convergence

Over the past years, the Javascript performance of browsers has become an increasingly important factor for the usability of the web, and with HTML5, it is getting more important than ever in the near future. The developers of the established browsers such as Firefox and Opera have ignored this subject for quite some time, and it was only when Google's Chrome outclassed all of them in this discipline that they woke up. The following plot, based on runs of the Sunspider Javascript Benchmark I made from time to time on one and the same hardware shows that they have done their homework. 😊

evolution

More specifically, today's Sunspider run on my trusted E6660 and under Mandriva 2010.2 x86_64 resulted in the following numbers:

Opera 11.11 2109
308.9ms +/- 0.8%
Firefox 4.0.1
318.9ms +/- 1.2%
Chromium 13.0.767.1
339.3ms +/- 2.0%

Other webkit-based browsers such as uzbl and Midori finish the test in about 400 and 450 ms, respectively, owing to an older webkit version. And IE9 … well, I'll check it as soon as I have access to one. 😉

Update: Which happened faster than expected (the early bird catches the worm): here are the corresponding numbers under Windows 7 Premium 64 on an i750:

Opera 11.11 2109
241.6ms +/- 0.5%
Firefox 4.0.1
223.2ms +/- 1.3%
Chromium 11.0.696.68
227.2ms +/- 1.3%
IE 9.0.8112.16421
216.5ms +/- 0.4%

And for completeness' sake, the same under Ubuntu 11.04 on my Mini with an N270:

uzbl 20100403
1330.5ms +/- 1.9%
Firefox 4.0.1
1083.7ms +/- 1.0%
Chromium 11.0.696.68
1711.8ms +/- 2.3%

Firefox is doing an excellent job on all platforms, but the differences between the browsers have shrunk to insignificance anyway. Is this performance convergence suggesting that the development is at the top of the hill? To check, let's not only look at the absolute values, but at the scaling with processor speed. The values above roughly scale like 1:3.5:5.25, and that's just the same scaling I observe when running, for example, Google's V8. The only significant improvement I thus expect in the near future stems from multithreading.