近日,Opera公司发布了其浏览器新版本(9.5x系列,开发代号为Kestrel),其中一个重要想法就是为了全面地提高其性能表现。与之前的版本相比(9.x,开发代号为Merlin),这个版本拥有一个新的ECMAScript引擎,并且对页面渲染做了比较重大的修改。通过一些科学的测试方法,我们可以量化Opera性能到底发生了哪些改变。
首先,我们要了解一下组成浏览器的各个子系统,每一个部分都会对整体表现产生影响。因为一个浏览器除了能够快速滚动及显示中心透明的PNG图片外,它也刚好可以用来浏览你最喜欢的网站!尽管不可能完全覆盖所有的各方面的性能测试,但我们可以通过一个跨样本的渲染子系统来测试其处理速度。我已经选择把重点放在ECMAScript和DOM操作上,因为现在很多网站开发的页面里,这两个已经逐渐成为重要的应用。当然,我还会使用三个真实的页面来进行测试,下面看看测试结果吧。
测试环境
以下所有的测试都是在一台主频2G HZ、内存2GB的Macbook苹果笔记本电脑上进行的,XP SP2操作系统,已经打上了所有的补丁,系统干净无其他程序。OS X版本是10.4.10,也已全面更新。
浏览器版本
浏览器 | 版本号 |
| Firefox 2 | 2.0.0.6 |
| Firefox 3 | alpha 7 |
| Safari 3 | 3.0.2 beta |
| Opera Merlin | 9.23 |
| IE 7 | 最新更新 |
真的有什么不同吗?
有一件让我感到困惑的事,就是我看到在网上公布的标准大部分都是给出完全缺少错误的信息。如果我测试某个对象A,五次测试我可能得到:1.8, 6.5, 3.4, 11.5, 6.1五个数据,它们的平均值是5.84。但是实际的值却不一定是5.84。所以如果我测试了某个对象B而得到6.48,虽然这是比对象A的平均数值高。但是这种不稳定的测试意味着我并不能说这是真的“不同”。就凭我们在这里看到的一些情况,我已经考虑了99.9%的有重大影响的限制,所以关于这些不稳定性的数值的获取,我可以给你更好的建议。这里有一个例子,记得这个褐色矩形的底部是正的可信区间,负区间是在主栏的后面。存在的区间表示,经过反复的测试,有99.9%的值预计是属于在盒子中类似地使用。有些人声称对象A在5.4时比对象B在6.1时更小,但看可信区间,它更难与某些作用相同。
除了这些给出的限制,任何假定的差异,若用于汽车时速,每小时消耗大量的卡路里,或者一个浏览器如何快速地渲染,都会让它吃不少苦头。在这里,可信区间给你一个指标去信任这些样本值的差异度,不多也不少。
基于Javascript的性能测试
第一个是对DOM(浏览器的文档对象模型)的压力测试。用1像素的单位来填充一个单独的DIV(布局),既精确又密集。这里有两个设定,基准和满载,分别是用3个像素和1个像素的DIVs。下图是基准测试的结果。
 |
| 像素填充测试结果 |
当进行满载测试时,59000个DIVs被动态创建,完全测试了DOM,IE7在满分辨率下无法渲染所有的像素;尽管Opera Merlin(Opera的上一个渲染引擎)快速地渲染,但也处于高度不稳定的状态。所以我们只采纳Safari 3, Opera Kestrel and Firefox 3的结果,如下图所示:
 |
| Safari 3, Opera 9.5 和 Firefox 3 |
最后,在满载情况下进行渲染测试时,当所有的DIVs都成功创建后,我好奇地查看了内存占用,