Skip to content

[zz]浏览器 JavaScript 大比拼

2007/12/24

   我之前的一篇文章发现从1996年到2006年,浏览器的 JavaScript 性能提高了100倍。如果 web 2.0 是构建在 JavaScript 的骨干上,那么那些重要的摩尔定律式性能改善会使之成为可能。
    我们已经走到性能提升的尽头了么?浏览器运行 JavaScript 有没有可能比现在还快得多?我一直认为即时优化(甚至编译)JavaScript 是浏览器技术尚未探索到的前线。但现在,显然情况大大改观了:

  1. 苹果的 WebKit 团队刚刚发布最新的 JavaScript 测试集,SunSpider。

  2. 浏览器市场的竞争更激烈了。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 – 真实的加密代码,主要为位操作和字符串操作。
  • date – "date"对象性能。
  • math – 多种数学运算类型。
  • regexp – 正则表达式。
  • string – 字符串处理,包括生成一个巨型"tagcloud"的代码,解压压缩过的 JS 代码等等。

SunSpider是我目前看到最好的JavaScript测试集;在我们这个JavaScript已成为网络通用语言的时代,它尤其重要。我用它对几个主流浏览器做了一下测试,环境为:

  • Windows Vista 32-bit
  • 4 GB RAM
  • dual-core 3.0 GHz Core 2 Duo CPU
  • all browser extensions disabled (clean install)

browser-javascript-performance-graph-totals-1.png
我很惊奇,如果排除字符串测试, Firefox 远远慢于 IE。至于 Opera,我不得不用一个测试板本的 Opera 以免所有浏览器在某些测试中都取得无效(NaN)结果;这足以说明我对 Opera 的态度。可以用伟大来形容Opera!我原先也期望 Opera 能够做得不错,毕竟在 2005 年的时候它就在JavaScript测试中轻松取得冠军。Safari,这个Windows系统里面的来客表现得相当不错,尤其考虑到它并不是在 OS X 中运行。当然,这里先不提非常严重的所有字体显示过胖问题
如果你希望每个浏览器在各项测试中的成绩:
browser-javascript-performance-graph-breakdown-1.png
如果你想要更详细的细节,包括变化区间,这里有完整的SunSpider测试结果
如果说我从计算机工业发展史里面学到什么,那就是竞争有利于每个人。让我们期待这个浏览器JavaScript大比拼激励浏览器开发团队吧。在这个重要方面,我们总是需要更好的性能。

Advertisements
2条评论 leave one →
  1. Unknown permalink
    2008/09/07 02:14

     柔性吊带 柔性吊带 柔性吊带 扁平吊带 扁平吊带 扁平吊带 钢板起重吊具 横梁/吊具 吊钩附件 尼龙吊带 电工吊带 钢丝绳 起重链条 工业吊带 柔性吊带 扁平吊带 钢板起重吊具 横梁/吊具 吊钩附件 尼龙吊带 吊带 钢丝绳 起重链条 工业吊带 成套索具 钢板起重钳 托盘  托盘转运车 钢托盘  托盘 塑料托盘 料箱  钢料箱 仓储笼 托盘车  托盘车 托盘车 托盘车  托盘 钢托盘 塑料托盘 料箱 手推车 仓储笼 托盘转运车 托盘车 托盘车 托盘车 托盘车 手推车  手推车 手推车 手推车 仓储笼 钢制料箱 塑料托盘 钢制托盘 登高车 手推车 托盘托盘转运车 威海托盘 扬州仓储笼 钢托盘 塑料托盘 泰州托盘 南通托盘 扬州料箱 扬州手推车 仓储笼 钢制料箱  扬州仓储笼  钢托盘 塑料托盘 泰州托盘 南通托盘 扬州料箱 扬州手推车 仓储笼 钢制料箱吊具 江苏吊具

  2. Unknown permalink
    2008/09/07 02:14

    塑料托盘 仓储笼   塑料托盘 手推车 仓储笼 钢托盘  钢托盘  托盘  塑料托盘 手推车 仓储笼 料箱 钢托盘 托盘  手推车  仓储笼 塑料托盘 料箱  钢托盘 托盘 塑料托盘 手推车 仓储笼 仓储笼 手推车 料箱 塑料托盘 钢托盘 仓储笼 手推车 料箱 塑料托盘 钢托盘 仓储笼 手推车 料箱 塑料托盘 钢托盘 托盘转运车 仓储笼 手推车 料箱 塑料托盘 钢托盘 托盘转运车 手推车 尼龙吊带 尼龙吊带钢丝绳 起重链条 钢板起重钳 钢板起重吊具 吊钩附件 横梁/吊具 成套索具 钢丝绳 起重链条 钢板起重钳 钢板起重吊具 吊钩附件 横梁/吊具 成套索具  托盘 泰州托盘塑料托盘  手推车 钢托盘 塑料托盘 扬州托盘 各式托盘 泰州托盘  手推车 钢托盘 塑料托盘 扬州托盘 各式托盘 泰州托盘  起重链 柔性吊带 酸性吊带
     

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: