Opera Fights Back: Announces Next Gen JavaScript Engine

Josh Catone
Josh Catone

One of the most important fronts in the fight for web browser supremacy is the battle for JavaScript engine speed. The game of one-upmanship has been going on for awhile now, and it’s not easy to stay on top of who has the current fastest JavaScript engine — especially since different benchmarks often yield vastly different results. However whether the current fastest engine is Google’s V8, Mozilla’s TraceMonkey, Apple’s SquirrelFish, Microsoft’s JScript, or Opera’s Futhark the battle is an important one.

The reason has to do with the slow transition to cloud-based web applications. We reported last month that over half the world’s developers will be working on software as a service projects in 2009, so the trend is definitely moving in that direction. In order to simulate a more “desktop-like” user experience, many web applications utilize a lot of JavaScript. So the speed at which the browser can render JavaScript (or ECMAScript) is becoming more and more important.

In September, when Google first released Chrome, jQuery creator John Resig put up a good rundown of JavaScript engine performance on his blog. Though his benchmarking is probably outdated by now, one theme was clear then: Opera’s Futhark engine ran near the bottom of the pack, with Internet Explorer’s JScript engine as company.

This week Opera announced their next generation JavaScript and ECMAScript engine, called Carakan. According to Opera, when they first released Futhark, it was the fastest ECMAScript engine on the market. That is clearly no longer the case, and Opera is now intending to raise the bar again.

“The Web is a changing environment however, and tomorrow’s advanced web applications will require faster ECMAScript execution, so we have now taken on the challenge to once again develop the fastest ECMAScript engine on the market,” says Opera core team member Jens Lindström.

Carakan makes improvements in three areas. First, a switch to a register-based bytecode instruction set rather than a stack-based one, which Lindström says speeds things up because “fewer instructions need to be executed, and less data needs to be copied.” Second, Carakan will include native code generation for some ECMAScript programs and functions. Finally, the new engine will do automatic object classification.

Though Opera isn’t ready to release any benchmarks showing Carakan’s performance against the competition, Lindström says that without any generated native code, Carakan is about two and a half times faster than the current engine in the Opera 10 Alpha according to the SunSpider benchmark. The native code generation isn’t ready for broad benchmarking, but in some individual tests, it is between 5 and 50 times faster. Not too shabby.

Of course, one also has to wonder if it is too little, too late for Opera. According to Net Applications, Opera only has 0.71% of the browser market — a number that has more or less stayed flat over the past year. And while Opera has seen virtually zero growth, Firefox, Safari, and Chrome have each experienced significant growth (IE has lost considerable share points, as we recently noted). Then again, Opera’s numbers are far higher on mobile devices, where speedy JavaScript performance might be even more important.