|Method||Opera 11||Chrome 10.0.634||Firefox 4 b9|
|dom_fragment||350 ms||799 ms||521 ms|
|template||372 ms||816 ms||597 ms|
|markup||294 ms||380 ms||701 ms|
|webworker||308 ms||270 ms||469 ms|
|no_highlight||94 ms||149 ms||146 ms|
The five tests take different approaches as outlined below:
- Nodes are directly appended to a document fragment
- Uses the Opera Dragonfly template system
innerHTML. Layout and creating the DOM use different processes with a WebWorker
- The source is directly rendered without tokenising and highlighting
Although we do not have full benchmark results from Opera at the time Opera Dragonfly was originally released, at that time a file of the same size took 8 seconds to tokenise and highlight. This is a real world performance boost which is enabling us to do things that were not possible only 3 years ago. The Open Web platform has come a long way in this time. Opera is the fastest browser of those tested in all tests but one: Web Workers. FireFox 4 is also competitive compared to Chrome 10 in 3 out of the 5 tests. The reason for Opera’s performance (a slight slow down) with Web Workers is quite clear. Opera currently doesn't use separate processes for Web Workers as it has traditionally been single threaded, due in the most part to the requirement of working cross platform, including on very resource constraint devices. BREW for example is one platform that is single threaded. As you can see from the Chrome results, Web Workers gives a significant performance increase for this kind of task when using multiple processes.
Another point to note is that there is a very noticeable slow down when enabling the Opera Dragonfly style sheet. These are the kinds of bottle necks we are identifying and working on to improve responsiveness and handling of large files. In this case it is likely that using more performant selectors such as ID and class selectors will give a good performance increase. The more complex the selector the more lookup and resolving the browser has to perform.
You can follow the progress and check out the source at our Opera Dragonfly BitBucket repository.