时间:2009-02-08 分类:opera 阅读:次
我之前的一篇文章发现从1996年到2006年,浏览器的 JavaScript 性能提高了100倍。如果 web 2.0 是构建在 JavaScript 的骨干上,那么那些重要的摩尔定律式性能改善会使之成为可能。 ????我们已经走到性能提升的尽头了么?浏览器运行 JavaScript 有没有可能比现在还快得多?我一直认为即时优化(甚至编译)JavaScript 是浏览器技术尚未探索到的前线。但现在,显然情况大大改观了:
苹果的 WebKit 团队刚刚发布最新的 JavaScript 测试集,SunSpider。
浏览器市场的竞争更激烈了。Opera 9.5, Firefox 3, Safari 3 和 IE 8 都在争夺觊觎已久的主流浏览器地位。
????或许浏览器开发者们将会把 JavaScript 的性能提上竞争优势的高度。上次我寻找通用JavaScript测试的时候十分失望。这也是为什么我对 SunSpider 的推出十分高兴:它是一组被精心设计的测试,易于运行也非常全面。 首先,它基于执行有趣任务的真实代码;包括现在网络程序正在执行的一些任务,以及我们期望的一些更高级网络程序将执行的任务。里面几乎没有什么测试可以被称作微测试。
其次,它平衡了JavaScript语言中的各个领域——并不是仅仅包含一小部分。事实上,我们从整个网络上搜集测试用例子,包括其他各种测试集。同时,我们排除了DOM测试,紧紧聚焦在JavaScript本身。
不管在浏览器上,还是用命令行,运行测试都非常容易。所以你可以仅仅测试纯引擎速度,也可以看到它在浏览器中的真实表现。
我们使用了统计分析的方法,能够给出真实稳定的结果。
WebKit 成员 Maciej Stachowiak 在注释中给出了每个测试子集的用途:
- 3d- 纯粹 JavaScript 的 3D 渲染运算,但并不包含渲染部分。它包含大量的浮点运算和数组操作。
- access?- 数组,对象属性和变量的访问读取。
- bitops?-?位操作,这在游戏、数学运算和多种编码解码中有重要应用。它也是JavaScript中唯一的整数运算。
- controlflow- 控制流结构 (重复,递归,条件)。目前它主要是递归结构,但其它结构也均被包含。
- crypto?-?真实的加密代码,主要为位操作和字符串操作。
- string- 字符串处理,包括生成一个巨型"tagcloud"的代码,解压压缩过的 JS 代码等等。
SunSpider是我目前看到最好的JavaScript测试集;在我们这个JavaScript已成为网络通用语言的时代,它尤其重要。我用它对几个主流浏览器做了一下测试,环境为:
- dual-core 3.0 GHz Core 2 Duo CPU
- all browser extensions disabled (clean install)
我很惊奇,如果排除字符串测试, Firefox 远远慢于 IE。至于 Opera,我不得不用一个测试板本的 Opera 以免所有浏览器在某些测试中都取得无效(NaN)结果;这足以说明我对 Opera 的态度。可以用伟大来形容Opera!我原先也期望 Opera 能够做得不错,毕竟在 2005 年的时候它就在JavaScript测试中轻松取得冠军。Safari,这个Windows系统里面的来客表现得相当不错,尤其考虑到它并不是在 OS X 中运行。当然,这里先不提非常严重的所有字体显示过胖问题。 如果你希望每个浏览器在各项测试中的成绩: 如果你想要更详细的细节,包括变化区间,这里有完整的SunSpider测试结果。 如果说我从计算机工业发展史里面学到什么,那就是竞争有利于每个人。让我们期待这个浏览器JavaScript大比拼激励浏览器开发团队吧。在这个重要方面,我们总是需要更好的性能。