Microsoft’s goals with the new platform release included the delivery of an engine capable of offering great performance capabilities, for both the web and for emerging Web application scenarios.
Given the fact that web applications have evolved considerably in the past years, the performance factors that influenced the user experience also changed.
The advancements in performance also made it possible for applications such as Office 365, Bing Maps, and others to appear, while the expansion of the W3C standard APIs, resulted in the emergence of web games such as Angry Birds, Pirates Love Daisies, Cut The Rope, etc.
- Minimize the amount of work on the critical path for the user experience. This involves deferring as much work as possible until absolutely necessary, avoiding work altogether, making use of periods of inactivity, and parallelizing work to minimize impact on the responsiveness of the application.
- Take advantage of all available hardware. This translates to utilizing all available CPU cores, as well as generating advanced specialized CPU instructions, for example, Intel’s SSE2, if available.
Among these apps, HTML5 games were of great importance, along with simulators, since they were able to tell what performance improvements would have the most significant influence on the experience that users receive from them.
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.
In a new post on the IEBlog, he explains some of the changes that Microsoft performed in IE10 to ensure a better performance of web applications that use the above.
“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,” he notes.