Internet Explorer Project Spartan Shows Large Performance Gains
With the release of build 9926 of Windows 10, I have had some time to get to know the new build. One of the things discussed at the Windows 10 event in Redmond was an update to the browser, codenamed Project Spartan, which is a new fork of Microsoft’s browser. There will be a lot of features coming to Spartan, such as the ability to annotate web pages with digital ink or keyboard text input, a new reading experience, and Cortana integration. It will be available on all Windows 10 devices – PCs, tablets, phones, and even Xbox. Internet Explorer has never been on the fast update cycle that other browsers are on – namely Google’s Chome browser and Mozilla’s Firefox.
As a brief history, there are of course several major browsers and many smaller ones. WebKit has become one of the dominant rendering (also called layout) engines, and powers Apple’s Safari browser on both OS X and iOS. Chrome used to be based on WebKit, but in 2013, Google forked WebCore from the WebKit project and created Blink, which is also now used by the Opera browser. Firefox has their own rendering engine, called Gecko, and Internet Explorer has used a closed source rendering engine called Trident since version 4.0.
In addition to the rendering engine, each browser also has an ECMA Script engine for executing JavaScript. JavaScript has become very important on the web, so JavaScript performance of the engine is important for how fast web pages feel. Safari’s engine is branded as Nitro, Chrome has V8, Firefox has SpiderMonkey, and Internet Explorer uses Chakra. This means that even though Chrome and Safari were both based on Webkit, performance can be very different because of the different script engines in each browser.
Previous to Internet Explorer 9, IE used a script interpreter for JavaScript, which was fine back when the web was mostly static content, but not good enough with the move to dynamic webpages. Chakra was created for IE9, and it gave a large jump in performance for IE 9 over IE 8. It was certainly an improvement, but quickly fell behind in terms of performance against the other competitors. IE 10, and IE 11, both improved somewhat over the competition, but still the performance of Javascript was poor.
With Windows 10, Microsoft is finally talking about performance again, but also compatibility. For legacy sites, Spartan can load the IE 11 engine as needed, but most of the time they will be able to avoid the legacy code and use a much leaner, faster engine, along with a revamped Javascript engine which offers much greater performance.
Spartan will not be Internet Explorer. This will be a completely new browser, with a new name. Spartan will however be able to load the IE 11 engine if and when needed to maintain compatibility with older sites. For enterprises which still rely on older technologies such as ActiveX controls and Browser Helper Objects, Internet Explorer will still be available in Windows 10 for those use cases, however it will have the same dual rendering engine as Spartan, allowing modern sites to be rendered with the new rendering engine, and older sites to be rendered with IE 11.
For the Windows 10 build 9926 which was released on January 23rd, Spartan is not yet available, and will show up at a later date. However Internet Explorer does have the new Edge document mode. A small number of testers will have this mode enabled by default, and anyone who wants to test against it can manually enable it by going to about:flags in the address bar. Switch Enable Experimental Web Platform Features to Enabled, and you will be using the latest rendering engine. This is still pre-release software, so enable at your own risk of course. Also in the experimental features is the ability to set a custom user agent string, and Microsoft has continued the successful strategy that they brought forward in Windows Phone 8.1 Update 1 of having a user agent string say that it is not Internet Explorer to avoid old IE-only content.
The performance increase of the new Javascript engine is massive, and brings Internet Explorer basically up to par with Google Chome for Javascript performance. WebGL still has some work to be done, and at the moment, the only HTML5 features that have been added is WebM support Update: WebM is not supported, but it registers as available on my install of Windows 10. Let’s take a look at the numbers.
Browser Performance – Core i7-860 | |||||
Benchmark | IE Old | IE Experimental | Chrome 40 | Firefox 35 | Percentage Change |
Sunspider (lower is better) | 149.7ms | 144.6ms | 260.9ms | 220.1ms | 3.4% |
Octane 2.0 (higher is better) | 9861 | 17928 | 17474 | 16508 | 81.8% |
Kraken 1.1 (lower is better) | 3781.2ms | 2077.5ms | 1992.8ms | 1760.4ms | 45.1% |
WebXPRT (higher is better) | 913 | 1083 | 1251 | 1345 | 18.6% |
Oort Online (higher is better) | 1990 | 2170 | 5370 | 3900 | 9% |
HTML5Test (higher is better) | 339 | 344 | 511 | 449 | 1.5% |
IE was well optimized for Sunspider already, so there is not much of a change there. Google Octane 2.0 however has always been terrible in IE, and now it comes in roughly the same as Chrome, for a massive 81.8% increase over the old rendering engine. Kraken continues this with a 45% jump in performance. It is a big change, and a welcome one too.
Spartan should have good performance when it is eventually previewed, and hopefully the standards support will increase as well. Since it will be updated through the Windows Store, the old way of updating Internet Explorer with new Operating System releases should also disappear, allowing Microsoft to ramp up the updates to the new browser. It has taken a long time, but it seems that Redmond is finally focusing on performance and standards for a new web. For those that want to read up on more of the changes, check out the MSDN IE Blog for more information.