IE 9.0.7 Delivered via Windows Update; IE10 and Windows 8 Advances JavaScript Performance

June 2012 Cumulative Security Update released on Tuesday, alongwith it brings a new version of Internet Explorer 9 - now versioned 9.0.7. This security update resolves one publicly disclosed and twelve privately reported vulnerabilities in Internet Explorer.The Internet Explorer 10 achieves dramatic performance gains for JavaScript-intensive applications, particularly HTML5 games and simulations. "These gains were […]

Windows 8 IE10 Advances JavaScript Performance

June 2012 Cumulative Security Update released on Tuesday, alongwith it brings a new version of Internet Explorer 9 - now versioned 9.0.7. This security update resolves one publicly disclosed and twelve privately reported vulnerabilities in Internet Explorer.

The Internet Explorer 10 achieves dramatic performance gains for JavaScript-intensive applications, particularly HTML5 games and simulations. "These gains were accomplished through a range of important improvements in Chakra: from new fundamental capabilities of the JIT compiler to changes in the garbage collector," posted Micsoft's IE team.

In a blog post, Microsoft's Andrew Miadowicz, Program Manager, JavaScript, goes into a lot of detail about how the IE 10 team has made improvements in JavaScript performance.

For IE10's lanch, Andrew says, Microsoft analyzed a sample of popular JavaScript games (for example, Angry Birds, Cut the Rope, or Tankworld) and simulations (for example, FishIE Tank, HTML5 Fish Bowl, Ball Pool, Particle System) to understand what performance improvements would have the most significant impact on the user experience.

"As applications evolve, the performance factors affecting user experience change. For traditional Web sites, initial page load determines how quickly the user can see the content. Interactive Web sites and large Web applications may be gated by the efficiency of DOM operations, CSS processing, and manipulation of large internal state in memory. HTML5 games often depend on fast canvas rendering, JavaScript execution and efficient garbage collection. In short, browser performance is a complex problem, which requires taking into account the needs of a broad spectrum of diverse applications," said Andrew.

"Our analysis revealed a number of common characteristics and coding patterns. All of the applications are driven by a high frequency timer callback," Andrew Miadowicz, program manager, JavaScript, explains.

Many applications use canvas for rendering, while others rely on animating DOM elements for that. Some of them combine the two, he explains. Most of applications have code written in the object oriented style, and also have short functions, as well as property reads and writes, and polymorphism.

"All of the applications perform floating point arithmetic and many allocate a fair amount of memory putting pressure on the garbage collector. These common patterns became the focus of our performance work in IE10," Miadowicz notes.

Andrew then goes on to explains, the improvements Microsoft has made to JavaScript that includes adding 64-bit and ARM support to Chakra's Just-in-Time compiler, improving the floating point math functions and enhancements to IE 10's memory allocator and garbage collection.

He says that all of that work has resulted in "dramatic performance gains for JavaScript-intensive applications, particularly HTML5 games and simulations" for IE 10.

IE10 includes substantial improvements to Chakra's JIT compiler. "We added support for two additional processor architectures: x64 and ARM. That's why, whether your JavaScript application is experienced by the user on a 64-bit PC or an ARM-based tablet, it enjoys the benefits of executing directly on the CPU," he said.

"In IE10 we made a number of enhancements to our memory allocator and garbage collector. We already discussed object layout changes and generation of machine code specialized for floating point arithmetic, which result in fewer memory allocations. In addition, Chakra now allocates leaf objects (for example, numbers and strings) from a separate memory space."