Internet Explorer 9 Is Not Cheating on SunSpider Benchmark

There’s a bit of a ruckus on the web about how Microsoft was supposedly cheating when it comes to Internet Explorer 9’s performance on benchmarks. Digitizor, as well as some enterprising readers over at HackerNews, came to the conclusion that Microsoft included code in IE9 specifically to ace the SunSpider benchmark. I was ready to write a scathing article about this, – until I loaded up the IEBlog. As it turns, it’s not cheating, it’s not a bug – it’s an actual piece of smart code optimisation other browsers don’t have yet.

A Mozilla engineer found out that Microsoft’s Internet Explorer 9 did particularly well on the math-cordic benchmark in the SunSpider suite. When people over at HackerNews (comments at HackerNews: good stuff. Recommended) dove into this matter, they concluded that Microsoft must’ve been cheating. Naturally, I was set to write a scathing item about this, because if there’s one thing I hate, it’s cheating.

Obviously, the first thing I did was try and see if Microsoft had already said something about this matter. As it turns out, they did, and what they have to say about this is kind of embarrassing for those that automatically assumed Microsoft was cheating (including myself) – Redmond is not cheating, and it’s not a bug either; they’ve implemented something called dead code elimination.

“Some of the optimizations we’ve made to the JavaScript interpreter/compiler in IE9 are of a type known in the compiler world as dead code elimination,” the IEBlog explains, “Dead code elimination optimizations look for code that has no effect on a running program, and removes the code from the program. This has a benefit of both reducing the size of the compiled program in memory and running the program faster.”

This explains why the math-cordic benchmark runs so well on IE9. “The benchmark runs an expensive loop, and then does nothing with the results; the benchmark is written exactly in a way that triggers this general optimization,” they add, “Of course, the benchmark could be rewritten to avoid triggering this optimization, which would bring our performance on this specific benchmark in line with other browsers.”

Of course, any sane person already knows that these silly benchmarks are, well, silly. I honestly don’t give a rat’s bum about how well my browser performs on these tests – I care about how fast it renders web pages, how fast it starts up, and how well-designed and responsive the interface is.

101 Comments

  1. 2010-11-17 11:20 pm
    • 2010-11-17 11:34 pm
    • 2010-11-18 12:05 am
      • 2010-11-18 12:07 am
      • 2010-11-18 1:17 am
        • 2010-11-18 5:17 am
    • 2010-11-18 2:03 am
  2. 2010-11-17 11:34 pm
    • 2010-11-17 11:48 pm
      • 2010-11-18 3:56 pm
  3. 2010-11-17 11:43 pm
    • 2010-11-17 11:53 pm
      • 2010-11-18 12:20 am
        • 2010-11-18 12:31 am
        • 2010-11-18 9:21 pm
          • 2010-11-18 9:44 pm
          • 2010-11-19 12:57 am
          • 2010-11-19 1:42 am
          • 2010-11-19 2:15 am
          • 2010-11-19 2:33 am
          • 2010-11-19 2:06 pm
          • 2010-11-20 1:39 am
          • 2010-11-21 9:47 am
          • 2010-11-22 6:55 pm
    • 2010-11-18 12:01 am
    • 2010-11-18 12:22 am
      • 2010-11-18 12:29 am
        • 2010-11-18 1:07 am
          • 2010-11-18 1:46 am
    • 2010-11-19 7:22 pm
  4. 2010-11-18 12:00 am
    • 2010-11-18 2:52 pm
      • 2010-11-18 3:48 pm
      • 2010-11-18 3:52 pm
      • 2010-11-19 12:58 pm
        • 2010-11-19 4:42 pm
          • 2010-11-19 9:51 pm
          • 2010-11-20 12:13 am
          • 2010-11-20 3:23 pm
        • 2010-11-22 12:10 am
    • 2010-11-22 9:27 am
      • 2010-11-22 3:42 pm
  5. 2010-11-18 12:26 am
    • 2010-11-18 1:24 am
      • 2010-11-18 1:28 am
        • 2010-11-18 1:44 am
          • 2010-11-18 1:57 am
          • 2010-11-18 2:16 am
        • 2010-11-18 1:55 am
          • 2010-11-18 2:00 am
          • 2010-11-18 2:26 am
          • 2010-11-18 2:29 am
          • 2010-11-18 2:34 am
          • 2010-11-18 2:47 am
          • 2010-11-18 3:49 am
          • 2010-11-18 3:59 am
          • 2010-11-18 4:06 am
          • 2010-11-18 4:18 am
          • 2010-11-18 4:19 am
          • 2010-11-18 4:23 am
          • 2010-11-18 4:39 am
          • 2010-11-18 4:49 am
          • 2010-11-18 5:02 am
          • 2010-11-18 5:15 am
          • 2010-11-18 4:05 am
          • 2010-11-18 6:03 am
          • 2010-11-18 5:18 am
          • 2010-11-18 5:21 am
          • 2010-11-18 5:23 am
          • 2010-11-18 5:29 am
          • 2010-11-18 5:29 am
          • 2010-11-18 5:38 am
          • 2010-11-22 9:32 am
          • 2010-11-22 3:45 pm
          • 2010-11-18 5:42 am
          • 2010-11-18 5:56 am
          • 2010-11-18 5:57 am
          • 2010-11-18 6:08 am
          • 2010-11-18 7:36 am
          • 2010-11-18 12:40 pm
          • 2010-11-19 1:17 pm
  6. 2010-11-18 2:21 am
    • 2010-11-18 5:51 am
      • 2010-11-18 3:30 pm
        • 2010-11-18 3:52 pm
        • 2010-11-18 11:34 pm
  7. 2010-11-18 2:36 am
    • 2010-11-18 4:14 am
  8. 2010-11-18 10:05 am
    • 2010-11-18 4:01 pm
  9. 2010-11-18 11:27 am
  10. 2010-11-18 3:24 pm
  11. 2010-11-18 3:43 pm
  12. 2010-11-18 6:43 pm
    • 2010-11-18 9:59 pm
      • 2010-11-18 11:13 pm
        • 2010-11-19 12:14 am
          • 2010-11-19 1:47 am
          • 2010-11-19 3:23 am
  13. 2010-11-18 8:12 pm
  14. 2010-11-18 8:26 pm