HTML5, and Real World Site Performance: Seventh IE9 Platform Preview Available for Developers

Performance on the web is multi-dimensional. Real websites call on many different browser subsystems to deliver amazing experiences. Each browser subsystem in turn has its own performance characteristics. The chart here and the diagrams in this post describe the specific subsystems like JavaScript and graphics rendering and more in detail.

Over the last few weeks, we’ve been tuning the JavaScript engine for more of the patterns we’ve found in real world sites. Based on the progress since the last platform preview, we’re releasing an updated platform preview build today so developers can try it out and provide feedback about the changes. Here’s a video of the changes in action:

Stepping back from these striking differences, let’s look at the big picture. JavaScript performance is one part of one aspect of performance. In addition to the other parts of the browser platform (like graphics rendering), performance involves other aspects as well: how well does the browser guard the user from slow add-ons, or from unreliable sites that crash? Enabling users to pin websites to the Windows taskbar means that users can go directly to sites without having to launch the browser and navigate. Making the most of your device for web browsing is significant as well. Taking advantage of the whole PC, and using the specialized graphics hardware and the many cores that modern PCs typically include, offers huge performance gains.

Tuning the JavaScript Engine for Real world patterns

Real world websites use JavaScript to respond to user input, manipulate strings, and move objects around the screen, and much more. We looked at common patterns and made adjustments to IE9’s script engine. You can try these examples (and more) at www.ietestdrive.com.

Running these sites in other browsers like the latest Google Chrome or FireFox 4, shows significant performance differences. In Shakespeare’s Tag Cloud, you see the performance advantage of compiled JavaScript and ECMAScript5 support with script-intensive operations. IE9 can run through a large body of text and build a tag cloud much more quickly. That same ECMAScript5 support combined with HTML5 Canvas delivers an HTML5 Sudoku solver that can solve puzzles faster than other browsers running the same site. With Galactic, you see fast JavaScript and hardware accelerated graphics together creating a 3D interactive experience. The frame rate in IE9 is significantly better than what the other browsers do today.

The Webkit SunSpider Microbenchmark

One measure of some aspects of JavaScript performance is the Webkit Sunspider microbenchmark. Remember that JavaScript is just one component of many that define browser performance on real world sites. Here is a chart of the latest results:

Webkit Sunspider JavaScript Benchmark Results. IE9 Platform Preview 7 is fastest followed by Chrome 8 Beta, Opera 11 Alpha, Opera 10.63, Chrome 7, FF 4 Pre-Release, Safari 5.0.2, FF 3.6.12 and IE8.

You may notice that the relative positions of browsers on this chart have changed with the latest IE9 Platform Preview.

We’ve gotten some questions after the last few Platform Previews about this chart. The results in the graph are from running actual browsers (in a consistent lab setup), just as we have since we started publishing the chart. Reporting results that “rely on a ‘shell’ JS engine that runs in a command line” is odd because those results don’t reflect the user’s experience in a browser. Similarly, because the point of a browser is to run actual websites, not just benchmarks, the chart we publish continues to include two versions of each other browser. You can read more on this choice at the end of this post.

You may also notice that the differences between browsers on this microbenchmark are converging within thousandths of a second on tests that repeat operations many, many times to find any differences at all. Some have suggested that this benchmark doesn’t matter now and it’s time for another JavaScript microbenchmark.

We’ve been consistent in our point of view that these tests are at best not very useful, and at worst misleading. Even with the most recent results in the chart above, our motivations and our point of view remain unchanged. We’ve focused on improving real world site performance. We’ve made progress on some microbenchmarks as a side effect. Focusing on another subsystem microbenchmark is not very useful.

Microbenchmarks and Real world web patterns have little in common

We think people should evaluate browser performance with real-world scenarios. Real-world scenarios involve using all the subsystems in the browser together rather than looking at single subsystems in isolation. Using a narrow slice of features to assess the big picture makes as little sense here as using the “Acid” tests to understand standards compliance.

Microbenchmarks isolate very narrow and specific aspects of a system. That’s the opposite of real-world websites that use the different subsystems together in order to deliver something useful or entertaining. Microbenchmark results often have little in common with the actual user experience of sites; for example, comparing JavaScript ray tracing or Fourier transforms is a good measure if that’s what the sites you rely on actually do. Performance on the test drive site samples has not, to date, looked like the Webkit SunSpider graph because there’s more to real world performance than JavaScript. The work at the W3C with other browser developers on a web standard to help developers measure and understand the performance of their website is a powerful statement about how much more there is to performance than JavaScript.

This Channel 9 interview with Jason Weber (a Lead Program Manager on the IE team focused on performance) is worth watching if you’re interested in hearing more about the difference between real world performance and microbenchmarks,

The IE Test Drive site offers samples that run in all browsers and deliberately represent real-world site patterns rather than microbenchmark-style samples. The visualization of the real-world samples is often more fun than a graph, as with Galactic, browser hunt and speed reading. The performance differences between browsers can be striking. They reflect how we’ve designed for real world, end-to-end performance rather than tuning subsystems for microbenchmarks.

Previews with Meaning

Back in March, we committed to delivering public Platform Preview Builds to the developer community on a regular schedule leading up to the IE9 beta. Feedback about these previews from developers has made both the IE9 development process and the IE9 release itself significantly different from previous IE releases.

This latest Platform Preview comes about two and half weeks after the most recent Preview. Leading up to the IE9 beta, we released Platform Previews approximately every eight weeks. We have internal builds of IE at least once a day, often more. Why not release public “dailies” and “nightlies” of IE?

The cadence of IE Platform Previews reflects our point of view: the point of a browser is to run actual websites, not just benchmarks or samples that are hardwired for one browser. Our point of view starts with providing consistent quality to respect customers’ time and includes delivering meaningful progress with each Platform Preview.

Twenty four hours of elapsed time is rarely meaningful. “Nightlies” vary widely in performance and quality, and may not run actual websites successfully. Those daily builds are of some interest to a small audience of “insider” enthusiasts who often take activity (even incrementing the version number) as progress. The gap between the IE Platform Preview download numbers (in the millions) and the other browsers’ pre-release offerings reflects this difference.

Looking ahead, we will continue to improve IE9’s performance. Making the full power of the PC available to websites is part of our focus on real-world sites and real-world performance. We’ll continue to work with the W3C and other browser developers to deliver on the goal of the same markup (the same HTML, CSS, and script) working across browsers. We’ll continue to take a holistic approach to the browser experience and platform and safety. We’ll also continue to release at a cadence that provides meaningful builds for the community to provide meaningful feedback.

Dean Hachamovitch

Update 1:10pm – There have been some questions raised about how a particular optimization in the Chakra engine is affecting IE9’s Webkit Sunspider results. The below addition addresses these questions.

Dead Code Elimination in JavaScript

One of the changes we made to the IE9 JavaScript Engine, codenamed Chakra, to improve performance on real world web sites involves dead code elimination. Yesterday afternoon, someone posted a question (“What sorts of code does the analysis work on, other than the exact [math-cordic test] function included in SunSpider,”) on the Microsoft Connect feedback site. Given some recent interest in this question, this blog answers that question.

Briefly, the IE9 JavaScript engine includes many different changes to improve the performance of real-world Web sites and applications. You can see this in action by visiting www.ietestdrive.com and trying the samples there with IE9 and other browsers. The behavior of the IE9 JavaScript engine is not a “special case optimization” for any benchmark and not a bug.

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. 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.

Here is a very simple example of JavaScript code that is a candidate for dead code elimination. Because the conditional will always evaluate to false, the JavaScript engine can eliminate this code altogether.

 function func() {
    var x = 1;
    var y = 3;
    var w = x + y;

    if (w != 4) {
        // dead code 
    }
}

Dead code elimination is especially effective when code would be executed many times, as in a loop. In the following example, the code in the loop repeatedly overwrites the same variable (what is known in computer science as a dead store), so it can be reduced to only one call.

 function func(a, b) {
    var x;
    var i = 300;
    while (i--) {
        x = a + b; // dead store
    }
}

In the example below, the code executed in the loop is not used anywhere in the program outside the loop, so the entire loop can be safely removed.

 function sum() {
    var a = [1, 2, 3, 4, 5];
    var sum = 0.0;
    
    // dead loop elimination
    for (var i = 0; i < 5; i++) {
        sum += a[i];
    }
}

Developers often write dead code without knowing it and can rely on compilers to optimize the code. Most modern compilers today run an extensive set of dead code elimination optimizations.

So, why does this affect the math-cordic benchmark in the Webkit SunSpider suite? Let’s take a look at the inner function in the test.

 function cordicsincos() { 
     var X;  
     var Y;  
     var TargetAngle; 
     var CurrAngle;  
     var Step;   
     X = FIXED(AG_CONST);         /* AG_CONST * cos(0) */ 
     Y = 0;                       /* AG_CONST * sin(0) */ 
   
    TargetAngle = FIXED(28.027);  
    CurrAngle = 0;  
    for (Step = 0; Step < 12; Step++) { 
        var NewX; 
            if (TargetAngle > CurrAngle) { 
               NewX = X - (Y >> Step);  
               Y = (X >> Step) + Y; 
               X = NewX; 
               CurrAngle += Angles[Step];  
            } else { 
               NewX = X + (Y >> Step); 
               Y = -(X >> Step) + Y; 
               X = NewX; 
               CurrAngle -= Angles[Step]; 
            } 
    } 
} 

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.

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.

The interest in this issue is a great example of why these microbenchmarks fail to represent the real world web. Webkit Sunspider uses an expensive JavaScript loop to approximate sine and cosine. Real world sites would actually use the much faster and CPU-optimized functions already available in JavaScript engines.

These optimizations are relatively new to the world of JavaScript runtimes even though there are many examples of dead code in real-world JavaScript on the Web. These optimizations often require significant flow analysis of the code, and in a real world site, spending too much time analyzing code can reduce the responsiveness of the page. The Chakra engine picks the right balance between code quality and analysis time, and only performs a small set of dead code optimizations. We continue to tune this for IE9, and bugs reported via Microsoft Connect are examples of where the optimization could do more. We continue to tune these and other optimizations for the final release.

This kind of dead code elimination is one of many optimizations that Chakra makes to reduce unnecessary work. Over the next few days we’ll post about some of the other techniques Chakra uses to deliver great performance.

Comments

  • Anonymous
    November 17, 2010
    Good job but when will you update the beta version? Tabs on top, password sync, "load urls as you type" is features I need in my browser. Keep up the good work!

  • Anonymous
    November 17, 2010
    Please stop using the SunSpider benchmark. A 5 ms distinction is not an important one. There are plenty of better ones out there like Google V8 version 6, Mozilla Kraken, and Peacekeeper.

  • Anonymous
    November 17, 2010
    A heartfelt congratulations to the IE Team! Two thumbs up! =D

  • Anonymous
    November 17, 2010
    Still no CSS transitions, text-shadow, border-image or pointer events. Will these ever make it into IE9?

  • Anonymous
    November 17, 2010
    what bob said

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    I was excited about javascript news and downloaded your preview. Then I realized the preview was typical Microsoft FUD. The soduku solver you posted DOES NOT SOLVE GAMES FASTER than Chrome 7. Chrome can solve 1000 games in 0.198 seconds and your IE9 preview takes 0.269 seconds for 1000 games making you 30% slower. When I run 10,000 games you're 0.008 seconds faster. Why don't you let people solve only 1 game? Because the fewer games the more Chrome beats you? If I ever need to solve 100,000,000,000,000,000 soduku games maybe I'll runIE. For playing 1 soduku game which is what people actually do on the web Chrome is better choice.

  • Anonymous
    November 17, 2010
    @Paul I just tried what you said and you are wrong: http://imgur.com/xIdMp.png Typical Paul FUD...?

  • Anonymous
    November 17, 2010
    While I agree that java script speed improvements are a good thing, I also share Hugh's comment above.  The implementation of certain CSS3 styles and behaviors is far more important than shaving a few more milliseconds on script performance scores.

  • Anonymous
    November 17, 2010
    Please can we have a non-silverlight video embed option next time. eg: ogm or x264 in video tags

  • Anonymous
    November 17, 2010
    A web browser app should be about balance, you are tunnel visioning on w/e people used to mock IE with and leaving important stuff to the side, like the important CSS3 features mentioned, we can only hope you are saving a somewhat balanced build to the final product.

  • Anonymous
    November 17, 2010
    @ed the video shows  up as HTML5 for me... Looking at the code they feature detect if you can play mp4 if not fall back to silverlight.

  • Anonymous
    November 17, 2010
    Could you please add a SunSpider graph without IE8 ? Currently, we can't see any difference between browsers (even though that's probably something you wanted to show - there is little to no difference between modern browsers in the SunSpider test)

  • Anonymous
    November 17, 2010
    I agree with Hugh and Glen above me. Please Please implement other "Common" css3 attributes before burning cycles on shaving 2% off your javascript processing times. Other major browsers have had these features for years, and given that IE only releases new versions every year or two (if we're lucky), I could see not including the css3 spec to be the nail in the coffin for IE.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Please, add other CSS3 features before release. No text-shadow support is just absurd. As said before, there are fair more important features to be implemented rather than keep posting that IE9 is 0.000002s faster than anything on earth. Help us developers to move the web foward for a change. Thank you.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    No spell check = useless for business applications, still with Google chrome, but will have a look sometimes on IE builds.

  • Anonymous
    November 17, 2010
    Run "Speed Reading" in Chrome and still try to argue that it's fast.

  • Anonymous
    November 17, 2010
    I appreciate the speed increases with each IE9 PP including this latest one, great stuff.  The faster the browser is, the more stuff the web page and user can do with it.  However, I do agree, now that IE9 is nice and fast, with graphics and javascript, and is pretty secure, I'd like to see increased adoption of the html5, canvas, css3 and svg web standards. Thanks for listening. - James.

  • Anonymous
    November 17, 2010
    Hey guys, great work but on my computer Chrome still does considerably better than IE9 at mozilla's ant farm test. www.mozilla.com/.../ants

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    It's a shame that this release didn't include any support for other standards, such as the CSS transitions module, but it's still good to see improvements of any kind. However, for the next release, I would like to see support mainly for the text-shadow property. After that, I'd like to see experimental support for CSS transitions and CSS gradients; the latter of which may be asking for much.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    I would like to see IE9 auto update like Microsoft Security Essentials and frequently.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    About the Chrome version number -- please learn to recognise a joke when you see one.

  • Anonymous
    November 17, 2010
    Has anybody had this same problem with the last couple of IE9 Platform Previews? If I go to Page | Open , put in a URL and hit Enter, the status bar gives updates as if things are loading correctly, but nothing displays. I have to either switch to a different window and switch back, or grab the window's title bar and move the window slightly before all the content actually shows up. If I move the mouse around on the blank page, the status bar will change to show any URLs that I'm hoving over, but the page remains blank unless I do one of the two things above. Other than that, the browser's running great. Obviously this is a big problem for me, though. Any ideas?

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    CSS3 is still in draft right? The problem with IE implementing drafts is that it will by default be the standard and then you guys will jump on MS again shouting "MS is using their monopoly to define standards" etc.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Good job on the JavaScript engine, welcome to 2009. Now get all the CSS3 things in and we'll consider using IE9 in 2010/2011, otherwise your still dead last no matter how much your JavaScript engine improved.

  • Anonymous
    November 17, 2010
    Please add CSS Transitions!!!! After all the great work the IE team has done, it would be a real shame if CSS Transistions were missing. Please add CSS Transitions!!!!

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    @kekekeke: Yes, CSS 3 is still in draft. But Microsoft already implemented a lot of CSS 3 and HTML 5 (which is also in draft) features into IE 9 but leaving out those a *LOT^ of Webdesigners are begging for. It seems that Microsoft is just cherrypicking the features they like and ignore others, even if their customers are asking for them almost every time over the past years.

  • Anonymous
    November 17, 2010
    I haven't been able to install any version since PP4. The Beta and PP6 both fail because there's a prerequisite, KB2028560, that can't be installed. (I never tried PP5, and haven't tried PP7 yet, but I'm about to). I've got a fairly new Dell XPS 1647 with Windows 7. I tried installing the fix standalone, and also tried some fix program from MSFT. No joy. Any ideas?

  • Anonymous
    November 17, 2010
    If I run IE9 Beta and IE9 Platform preview 7 at the same time then my IE9 Beta will refuse to load new pages.  Closing IE9 preview 7 fixes the issue.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    I think the real question ppl have with the SunSpider test is why does DCE not kick in when you add a "true;" statement to the loop or when you have a return statement after the loop?  Neither of those should effect DCE of the loop.

  • Anonymous
    November 17, 2010
    Guys, great work :-)

  • Anonymous
    November 17, 2010
    Maybe it's better to show how robust the "optimizations" that FireFox relies on for its Kraken score are? Alternatively, you can explain why someone would be calculating trig functions in JavaScript. FAIL.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Great Job ! thx for all improvements. continue to that way :)

  • Anonymous
    November 17, 2010
    You guys should actually READ THE BOTTOM OF THE BLOG. They explain the SunSpider results. >>>>>>>>>>>>>>>>>>>>>>NO CHEATING IS INVOLVED.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  • Anonymous
    November 17, 2010
    Nice work MSFT! If I asked really nicely, would you implement a lightweight spell checker in IE9 before RTM? :-)

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    I want to believe you, Microsoft, but the question about the "true;" statement is a valid one. How is it possible that this would throw off DCE given a reasonable implementation? Answer that clearly, and you've won me back, because I really, really want to believe you've done a great thing here.

  • Anonymous
    November 17, 2010
    I second the requests for more CSS3 support. Browsers are the future and if you're truly committed to reducing developer friction, start working on CSS3 support.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    After reading a bit on apps.ycombinator.com/item, I think I believe Microsoft. It appears that DCE is just very fragile. But, I also believe that Microsoft should have made this optimization more robust before putting it before a rabid community of, um, free thinkers.

  • Anonymous
    November 17, 2010
    Wow, so addition of a no-op breaks your DCE algorithm. Yes, you have successfully proved that benchmarks can be hoodwinked. And that IE9 is actually at least twice as slow as the competition. And you cheated on the benchmarks. Nice spin job with this post.

  • Anonymous
    November 17, 2010
    There will be a Chakra team chat on Twitter tomorrow.  Details are here: windowsteamblog.com/.../meet-the-chakra-team-live-on-twitter.aspx

  • Anonymous
    November 17, 2010
    Please, please, please get an implementation of HTTP Strict Transport Security (HSTS) in to the final of IE9. It's so important to prevent what is akin to a silent degradation attack which permits MITM to a secured site, such as banking. (Yes, technically, it's not degradation as the user requests HTTP but for all practical intents and purposes it is.) tools.ietf.org/.../draft-hodges-strict-transport-sec-02 Chrome and Firefox are covered now and hopefully Safari and Opera will follow suit...

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Please, release IE9 beta2 with next IE9 Platform Preview.

  • Anonymous
    November 17, 2010
    The next release will be the release candidate

  • Anonymous
    November 17, 2010
    You are not give the preview of ie9.so give the preview or snapshot.

  • Anonymous
    November 17, 2010
    Congratulations! I really appreciate all the work around Internet Explorer 9. There are still more to do for css3, html 5 and also (please do something) for a better bookmark manager. It's better to wait longer and get something very good at the end.

  • Anonymous
    November 17, 2010
    I don't think IE cheated specifically for sunspider, but that their DCE is extremely dumb. So dumb that it won't work on most real world cases of dead code blocks. So IE is saying that they are working on real world sites, but their extremely dumb DCE only functions on extremely limited cases that may work on some synthetic benchmarks but won't work on most real world general cases?

  • Anonymous
    November 17, 2010
    @Stifu, or what ever other degrading nick you chose, it seems you like Microsoft and IE a lot, and took upon yourself to defend them from 'trolls' as you say. IMO, you are doing a bear-hug service, as I read some posts above, see @Alexandre Bars. meni, an open patent-free standards fanboy

  • Anonymous
    November 17, 2010
    Great job I really appreciate the hard work you guys are putting behind IE9. Keep it up .Looking forward to the RC

  • Anonymous
    November 17, 2010
    Got caught pulling an NVidia! Fail. Seems your engineers don't have the chops to keep up with Google & Apple, but then we knew that for ages anyway. This incident just calls into question, yet again, how much of IE9's performance improvements are "real", and how much can only be reproduced by you, in your special lab, hacking IE9 to look good on benchmarks. Amusing, yet sad. Once upon a time, you had the best engineers, it's very clear that ship has sailed.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Even if the dead code in Sunspider were to run in IE9 the score still would be faster than the opera versions tested and it would be a toss up if Chrome 8 testbuild would be faster.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    blog.mozilla.com/.../dead-code-elimination-for-beginners The Chakra DCE "optimization" handles ++ but not --, > but not <=, << but not >>. In short, it handles exactly the set of operators found in math-cordic, and not others. This makes no sense if it's intended to be a general-purpose optimization. Furthermore, Rob also points out that the optimization makes assumptions that aren't true for JS, leading to bugs where it incorrectly eliminates code that is not, in fact, dead. Fixing those bugs will be difficult; they require whole-program analysis or introduction of dynamic guards, both of which will slow the engine down.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    Number one on the graph!  Congratulations!  Now hopefully everyone (fanbois and tech pundits alike) can move on from that silly test and focus on performance metrics that actually make a difference to real people.

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    HTML5: great work in html5 section elements: http://www.html5test.com/ JavaScript: it's not my job to rate it. We're speaking about milliseconds! :) Faster than an eye blink. CSS3: I can't believe there's still no multi-column support. FF does. Webkit does. And even the new coming Opera will support for CSS3 multi-column. Please do your best and implement it in the final release with or without vendor prefix, because it's urgent! Nowadays a screen resolution at 1024768 means a very outnumbered user group. 12801024/ 720p is now the general, and 1080p will became general soon. So there two cases:

  • Fix layout: you see an about 900px wide block surrounded by 1000px wide blank space. Looks awful, and tiring to read.
  • Flexible layout: you see a 1200+ px wide block. It's horror to read. Solution for both:  /* column-count: 3;  -- if you need fix number of colums */  column-width: 300px;  column-gap: 10px;  column-rule: 1px solid black; Simple, elegant, comfortable. Please think about it.
  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    The comment has been removed

  • Anonymous
    November 17, 2010
    I'd rather have a compliant JS implementation than one that introduces bugs by wrong optimizations: blog.mozilla.com/.../dead-code-elimination-for-beginners

  • Anonymous
    November 17, 2010
    We want real CSS3 support and more HTML5. It's been said to death but I just don't understand why you won't listen. Is marketing after these test results to sell the product? Win us web devs over and you'll have a chance at turning the decline around. Burn us and we'll ensure the trend continues.

  • Anonymous
    November 17, 2010
    4.0B7 is the latest firefox beta, is it not? and 4.0b8pre is updated daily..so which day's should MS test? and finally, latest 4.0b8pre is horribly broken on many many websites. I have been using minefield as my primary browser for a long time and it was just fine even yesterday. tl;dr; nightly builds are not a good candidate in this case.

  • Anonymous
    November 17, 2010
    @fanbaby: ... what? I haven't posted here yet, and always post under the same nick. Also, in most of my posts, I do not defend IE nor Microsoft. But I don't blindly bash them, either. Please stop being stupid.

  • Anonymous
    November 17, 2010
    @fanbaby: so you're referring to my comment on the previous article. I wasn't defending MS or IE. Also, I didn't mention "trolls"... Also, look for my second comment on that other article, and realize something is wrong you.

  • Anonymous
    November 17, 2010
    this is cool stuff! - let me tap into the geolocation implementation here in IE9 to see who is nearby to celebrate this with...  hmm.... I keep getting "undefined"?! oh wait, yeah I was in IE when I did this! silly me, if I want to use modern browser features I have to actually use a modern browser! 2010 and IE still doesn't do geolocation! come on, heck even the Windowz Fone se7en supports geolocation in IE. oh wait, does it? or was that the next biggest #FAIL_on_RTM ever?

  • Anonymous
    November 17, 2010
    Hi, You're right, If the test was made by me, I will put the November 17 snapshoot of each browser, but as you point this, for sure others will say me why don't pick 4.0b7 or November 15 snapshot that was 4% faster. Only wanna point on the fact they don't get the latest pre-release versions of browser. IE -> Stable 8, Beta IE9 Beta, Platform Preview: IE9PP7 Firefox -> Stable: 3.6.12, Beta 4.0b7, Pre-Release: 4.0b8pre. Chrome -> Stable: 7.x, Beta 8.x, Developer: 9.x IE has made huge improvements on his browser, compared with IE8 is awesome. If IE9PP7 is better that Firefox, Opera and Chrome Betas it's very good, and with these numbers, it's much possible that it's faster than latest browser snapshoots for sure. The problem is "benchmark" optimizations, if there are, and we should find a "real World" popular Benchmark.

  • Anonymous
    November 17, 2010
    Text-shadow really need to be in IE9. It's the worst bug in support CSS3 in IE9.

  • Anonymous
    November 17, 2010
    Please hide the "http://" from address bar like in new Opera 11 build 1094 (same in chrome)

  • Anonymous
    November 17, 2010
    I really wonder to which situation the term 'real world' refers to. On the one hand, in real world websites there is much dead code chakra has to eliminate. This implicates, that "real world" refers to web sites created by medium or low skilled developers. On the other hand it is stated that "micro benchmarks fail to represent the real world web". And: "Real world sites would actually use the much faster and CPU-optimized functions already available in JavaScript engines." Ah, would they? Isn't it a inconsistency in the article. I think, micro benchmarks perfectly represent the real world web by using not the best solutions for what they are trying to achieve. And what or where are the "other worlds"? I agree, that dead code elimination is absolutely necessary and a good approach. As a professional developer I have been involved in many proprietary closed source but also some open source projects over the last 15 years. I could only see one world, but two types of developers: The ones that nearly never miss deadlines, not being interested in code quality, most often looking for a solution that is "good enough" to fix a problem, also often using proof of concept code in production releases. And the others, to whom code quality and good robust solutions are more important than deadlines, always trying to improve their skills. Basically, developers of second type slowly are getting better software engineers. They would be interested to get feedback from chakra to remove or edit dead code before analysis of the code can take too much time and reduces the responsiveness of the page. Is it (or would be be) possible to have a debug mode in chakra that does extensive code analysis and reports it to interested developers? The others are served by optimized code analysis during runtime. That would enable developers to take active part in improve responsiveness of their pages, but doesn't force them to. I.e. when working with Visual Studio, I'm using additional tools that help me optimize my code (and not leaving dead code in production releases). I would be very interested in getting feedback by the original compiler how I can support him to optimize code.

  • Anonymous
    November 17, 2010
    PLEASE!!! text-shadow

  • Anonymous
    November 17, 2010
    should be easy and REALLY helpful. more helpful than pointless performance tests anyway.

  • Anonymous
    November 17, 2010
    In the video you picked the slower competitor to make IE look better, but still, it is not that bad for IE, probably one of the last closed source on the market.

  • Anonymous
    November 17, 2010
    Why you cannot annouce IE9 roadmap? Why is it so secret? It makes no sense..

  • Anonymous
    November 18, 2010
    @Mike: Geolocation - is it finished spec which is usefull to desktop and notebooks? No,then it is unnecessary (altough I suspect it ¨ll be ready for WP 7) @6205: Maybe because they don't know how many features will have specs finished for proper inclusion without vendor prefix? However, it is interesting they they almost stopped commenting - almost as if busy...

  • Anonymous
    November 18, 2010
    It would be nice to try this out, but why do you not allow the Platform Preview to install on Windows Server 2008 (R2)? That's my dev machine OS, so I'm SOL.

  • Anonymous
    November 18, 2010
    @Hugo: Business informatics major here, what you say is heretic, deadlines are carved in stone, esp. when determined using one of the many magic hocus-pocus techniques available (some involve the third root of something, I am not joking). Whatever works is good enough, trial-and-error programming the best and testing and documenting are a waste of time, VB and PHP good programming languages and and if you don't work our way then we will have to outsource you.

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    Did it mean that we will not write some CSS and rare java script fixes for fixes only for IE any more? How will they stop IE6,IE7 and even IE8 on web or make sure that if some thing works or runs ok in one version then it will be ok in all?

  • Anonymous
    November 18, 2010
    @Hasan I think most developers can just focus on IE8 and IE9 now, maybe with partial fixes for IE7. I think even google stopped supporting IE6 earlier this year.  If websites keep supporting IE6/7, then people using those browsers will only upgrade when they are forced to buy a new computer with a new version of IE installed.

  • Anonymous
    November 18, 2010
    Ryan said: "Please hide the "http://" from address bar like in new Opera 11 build 1094 (same in chrome)" i second this

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    And now, I'm gonna scold the IE9 Team:

  1. You gotta optimize for all operators. < works. >= doesn't.
  2. Mozilla proves that the SunSpider Benchmark is lacking. They tackle passing Objects instead of integers in parameters. This will make your optimizations fail. blog.mozilla.com/.../dead-code-elimination-for-beginners
  3. The math-cordic-return and math-cordic-true -- fix that. So that the idiots who are vindictive with your company will shut up.
  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    Let's assume for a moment IE is the best at sunspider and the "optimizations" are real. Congratulations Microsoft. Now. Why are the slowest at every other single benchmark in the world including V8, Karken, and PeaceKeeper? You're have to be optimizing for sunspider instead of making the javascript engine faster. Your story doesn't hold.

  • Anonymous
    November 18, 2010
    The Soduku tests also run faster on my laptop in Chrome 8 than IE9P7. Fishy.

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    what Hugo (18 Nov 2010 4:21 AM) said. @wetran: you are part of the problem

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    Hi there, you wrote: "We’ve focused on improving real world site performance. We’ve made progress on some microbenchmarks as a side effect. Focusing on another subsystem microbenchmark is not very useful. " Sure that is true, but wait, why all the other webbrowsers out there are faster on the other benchmarks AND fast on real world scenarios and websites?! Your competitors aka Google Chrome, Apple Safari, Opera Softwares Opera and of course Mozilla Firefox, all are much faster in Mozilla Kraken: krakenbenchmark.mozilla.com, Google V8 benchmark: code.google.com/.../benchmarks.html, Mozilla Dromaeo: http://dromaeo.com/ (very important because of much tests incl. DOM..!) and Futuremarks Peacekeeper: service.futuremark.com/.../index.action (very important because of much tests..)! You don't have to be only fast in real-world scenarios, but in the benches, too! Neither only in microbenches being fast, but not in real-world scenarios, nor being fast only in real-world scenarios, but not in microbenches is good! regards, iNsuRRecTiON from Germany

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    Appendix: Is IE9 PP7 now any better there: techgage.com/.../five_web_browsers_which_is_the_fastest ???

  • Anonymous
    November 18, 2010
    @ Biff Thanks but I know this. But why is e.g. Opera one of the fastest in e.g. Mozilla Kraken? Optimized by Mozilla for Mozilla Firefox..?!

  • Anonymous
    November 18, 2010
    A graph which does not have both axes labeled in context is useless. Unless I already know what the benchmark is testing, how am I to interpret the numbers on the vertical axis. Is 4000 better than 3000? 4000 what?

  • Anonymous
    November 18, 2010
    @iNsuRRecTiON "Neither only in microbenches being fast, but not in real-world scenarios, nor being fast only in real-world scenarios, but not in microbenches is good!" I don't see why you think that.  Being fast only in real-world scenarios, but not in microbenchmarks is exactly as good as being fast in real-world scenarios and in microbenchmarks.  There is no intrinsic value to microbenchmark performance whatsoever.  The purpose of a web browser is to browse the web, not to run sunspider or kraken or whatever the fastest. Microbenchmarks are an attempt to simulate real-world scenarios -- ultimately an inherently flawed attempt.  The only value in a microbenchmark is in how well in reflects real-world scenarios, so by definition, a browser cannot be good at real-world scenarios and bad in a good microbenchmark.  Either the microbenchmark is bad, or the browser is also bad at real-world scenarios.

  • Anonymous
    November 18, 2010
    @ RF This blurriness is caused by a known bug in GPU Accelerated Compositing in Chrome:  code.google.com/.../detail

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    @wetran You're out of your depth here. You may be feeding your family for a week because the first few gullable customers shell out for you. Then the negative reviews pour in and your sales will fall. Then you whip up the next revision at lightning speed (based on the bug-ridden release of course, and charging for this Software(tm) 2.0); you'll continue this scheme until a smart competitor sees how you botch things up and does fill the market's need with a quality prosuct, making a handsome profit and gaining the public trust whereas you had been running the threadmill for minimum wages and no loyal customer base at all.

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    @anonym - hmmm, Microsoft have excelled at releasing average code post deadline and still getting away with it.  Microsoft is an Excellent marketing organisation who have built an absolute empire with their uncanny ability to distract the digital heard from all the failings of it's software.  Even now, some 30+ years post incorporation Microsoft still hasn't seen a steady decline in profitability, merely a gradual (read slight) decline in profits.  Even the last quarter (year?) produced a sizeable boost in profit taking turning around this apparent degradation (what, 16.2 billion or up by 25% last quarter??).   Them, Thar's a lotta short-term grub tuh feed the famuhly...

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    The comment has been removed

  • Anonymous
    November 18, 2010
    Are Web Workers and Web Sockets supported?

  • Anonymous
    November 18, 2010
    Really Great Work.

  • Anonymous
    November 19, 2010
    "There will be a Chakra team chat on Twitter tomorrow." Can we get a "transcript" of the whole chat session? thanks in advance.

  • Anonymous
    November 19, 2010
    Nope, I think it is impossible to get fast on all "real" websites nor to test this. But you can test all microbenchmarks, if you're not good or much slower compared to your competitors (like IE9 PP7 is..!), then something is not ok in your browser/subsystem/JS-engine, etc. There must somethink wrong, if all other webbrowser are so much faster in these benches, but IE9 is much much slower.. They have to be in both real world and microbenches fast as possible, or something is wrong. @Tom Unfortunately no, no web workers, nor web sockets support, I want this, too! And yes, IE9 have to be fully compliant and pass the Google Sputnik Javascript test, as Ali already mentioned!

  • Anonymous
    November 19, 2010
    Sorry, the last comment was from me to Why :) Link for Google Sputnik Javascript conformance test: http://sputnik.googlelabs.com/

  • Anonymous
    November 19, 2010
    Microsoft should toggle the sunspider chart because with the "dead code elimination" the tests are simply skipped, thus invalidating the result and the purpose of these kind of tests

  • Anonymous
    November 19, 2010
    I wrote the cordic code in sunspider, and all I'd say is good work! Ideally the next version of the test would have both a version that returns the result and a version that doesn't so that the effect of eliminating dead code is included in the way results are measured.

  • Anonymous
    November 19, 2010
    We want websockets and webworkers!!!

  • Anonymous
    November 19, 2010
    Although improving javascript performance isn't a bad thing, you really need to implement CSS3 transitions. CSS transitions are much more important than a spinning earth or solving a sodukio games 1000 times. Let's think of real world scenarios.  People could actively use CSS transitions in sites to improve user interaction and clarity.  If you wanting to solve a soduko game 1000 times why wouldn't you just do that server or better yet who would need to continue to the soduko game after solving it once?

  • Anonymous
    November 19, 2010
    @ iNsuRRecTiON @ Ali Do do realized IE9 has the second best score on the sputnik conformance test right? the latest firefox nightly fails 178 test Safari fails 170 tests The latest chrome nightly fails 130 tests IE9 pp7 fails only 76 tests Only Opera bests PP7,  at 74 tests failed @Beat You might get web workers if enough people keep asking for it, however websockets is too unstable for Microsoft to implement, see bugzilla.mozilla.org/show_bug.cgi for a brief discussion lamenting the state of development. The way it's looking, no browser's implementation will be compatible with the new standard when it is updated.

  • Anonymous
    November 19, 2010
    Yes I know about that but to be the best of all you must be perfect, IE 9 come to 76 from 469 fail on IE 8, my concern is about V8 benchmark which is pretty low compare to other browsers.

  • Anonymous
    November 19, 2010
    @Anonymous: Tanks for the input. @Microsoft: We want web workers! @All: Keep asking Microsoft for web workers :)

  • Anonymous
    November 19, 2010
    The comment has been removed

  • Anonymous
    November 19, 2010
    The comment has been removed

  • Anonymous
    November 20, 2010
    The comment has been removed

  • Anonymous
    November 20, 2010
    Many of the people whining here are already regular users of other browsers judging from their comments. I've been with IE since v4, I've given every other browser couple opportunities and they have all failed basic requirement. IE9 is the first time I have to consider not upgrading. That's if the blurry fonts and lack of space for whatever bars I want to have the most space for stay. IE9 will be the first IE to fail basic user, not developer, requirements it seems.

  • Anonymous
    November 20, 2010
    This wish acid3 with 100% score, is never going to happen as the smil elements in the test that are not supported are already supportable trough javascript and are obsolete.

  • Anonymous
    November 20, 2010
    It seems that dynamic content or changes to styles are not rendered when printing from IE. I've made a web page that contains a small javascript drawing program, but when I print the drawing in IE I just get the blank page I started with. Is this an inherent property of IE or am I just missing a step. It works in Firefox but not in IE, or Safari for that matter.

  • Anonymous
    November 20, 2010
    m$ cheaters

  • Anonymous
    November 20, 2010
    H264 AND Mpeg2 represents all transmitted TV, plus all DVD and BluRay content.  If browsers had support for these in the new tag all browsers and devices would be media players.  Think of what you could do if everyone got behind this...

  • Anonymous
    November 20, 2010
    deep inside you love 'em... while enjoying the most luxurious operating system, i.e. Microsoft Windows <http://bit.ly/cCWOna> ~ Hail My-crow-soft !

  • Anonymous
    November 20, 2010
    Please add resizing textarea to IE

  • Anonymous
    November 20, 2010
    IE9 is gonna rock the web!

  • Anonymous
    November 21, 2010
    IE9 : .WDP(JPEG XR Filename extension) Support. but IE9 : .hdp, .jxr(JPEG XR Filename extension) - Not supported(Support Has upset) IE9 -.hdp, .jxr(JPEG XR Filename extension) Support.(Support me wind sigil)

  • Anonymous
    November 21, 2010
    The comment has been removed

  • Anonymous
    November 21, 2010
    Considering how close we are to running out of ipv4, I don't think IE should go out of its way to encourage its use.

  • Anonymous
    November 21, 2010
    @Web Developers IE9 and Chrome9 does not fit together. For some reason, uninstalling Chrome9 Canary Builds improved IE9 speed greatly...

  • Anonymous
    November 21, 2010
    wetran wrote: then you should really tell that to Hugo, giuseppe and anonym, and I don't know why you are replying to me here, since they are the ones who keep insisting on the idea of "missing deadlines for better code quality". I don't know where you're from, but here (good) software developers are highly sought after professionals. Any boss will cherish (good) developers here. Good developers give feedback early in the project about (un)realistic deadlines. Bosses take us seriously. Good code, development process, structural analyis, etc. (e.g.: the tools any good developer would use) ensure the deadlines are met. Announcing lateness two days before the deadline is not appreciated, and does not define a good developer.

  • Anonymous
    November 22, 2010
    The comment has been removed

  • Anonymous
    November 22, 2010
    The comment has been removed

  • Anonymous
    November 22, 2010
    The comment has been removed

  • Anonymous
    November 22, 2010
    @yellowstone *.jxr extension support can be added to IE9 and windows by running a .reg file i wrote at this address here: www.mediafire.com I hope the IE9 team add these registry entries with the RC release.

  • Anonymous
    November 22, 2010
    @Mark unfortunately that link seems to rename the download to *.txt. use this link instead for a zipped version: www.mediafire.com

  • Anonymous
    November 23, 2010
    Slightly off topic, I'm getting E-Mail from tarcon@microsoft.com The mails look like Connect notifications but include a incorrect (phishing?) adress that is not ping-able. Can I do anything but ignoring it?

  • Anonymous
    November 23, 2010
    If you are using new web-based Hotmail you can enjoy the luxury of "sweep" functionality and wipe out the tarcon@microsoft.com to ever daring contact you again...

  • Anonymous
    November 23, 2010
    The comment has been removed

  • Anonymous
    November 24, 2010
    The comment has been removed

  • Anonymous
    November 24, 2010
    One thing:  Galactic is fast as all get-out, but it would have been nice if the author had mentioned DirectX as the reason for the graphics performance.  That lack was a little too "propaganda" in my opinion.  Other than that, this seems to be coming along nicely.  For all those who whine about not having CSS-this or geolocation-that, give it a rest.  It's a beta.  These things will be along presently. @wetran: Aye, and double aye.  Here's a story from when I was a project lead:  the PM for a project came to me and asked me when I could deliver the app update for customer testing.  I told her Thursday.  She told me they wanted it on Tuesday.  Thursday, I said, and not a day sooner, because that was the original schedule.  Tuesday, she repeated.  So I told her, and I quote, "then tell them to tear Tuesday off the calendar and paste it over Thursday, because that's when they're getting it."  We delivered on Thursday and it was on spec, no bug send-backs.  That PM learned not to argue with me again.  The customer learned not to try to accelerate the schedule.

  • Anonymous
    November 26, 2010
    I've just filed two calc() issues, see connect.microsoft.com/.../625000 (multiplications are of higher precedence than divisions) and connect.microsoft.com/.../625001 (parenthesis are not supported) Currently, there are a few incorrect calculations done using calc(), these should be must-be-fixed issues because Firefox 4 will support calc() as well. In Firefox the expression is prefixed, but works correctly. Since authors are likely to do -moz-calc(...); calc(...); it seems preferable to have two nteroperable implementatiions.