惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 电机拖动

我晕,DELL邮寄WIN7升级光盘的服务是不是太过分了? 史记.饭岛爱列传(转) 新手可以借助Profiler学习TSQL 如果《24》在94年播出的话…… 两个当年的MS广告(暴笑) SQL Server中的两个有用的存储过程 重新回归 [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十九:使用SqlDataSource插入、更新以及删除数据 [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询 - 电机拖动 [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十七:使用SqlDataSource控件查询数据 [翻译]Scott Mitchell的ASP.NET2.0数据教程中文版索引(Canceled!!) Evanescence - Origin [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息 [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十四:使用FormView 的模板 [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之二:创建一个业务逻辑层 [SQLServer2000]TEMPDB丢失或TEMPDB文件损坏的服务器恢复 白话设计模式——FactoryMethod
[翻译]JavaScript性能测试
电机拖动 · 2008-09-11 · via 博客园 - 电机拖动

一个全新的JavaScript引擎诞生了:V8引擎Google新推出的Chrome浏览器就用到了它)。

市面上有一大堆的JavaScript引擎(光是浏览器所常用的那些就已经够多的了):

1.         JavaScriptCoreSafari/WebKitSafari 3.1以前的版本)用的是这个引擎。

2.         SquirrelFish:该引擎用于Safari 4.0注意:最新的WebKit nightly for WindowsDromaeo测试中会崩溃,所以暂时就无视它吧。

3.         V8:该引擎用于Google Chrome

4.         SpiderMonkeyFirefoxFirefox 3.0或更早的版本)用的是这个引擎。

5.         TraceMonkey3.1以及更高版本的Firefox将使用这个引擎(现在已经有了,只是默认被禁用了而已)。

6.         Futhark:该引擎用于Opera 9.5及其更高版本中。

7.         IE JscriptInternet Explorer用的就是这个引擎了。

关于上述浏览器的性能测试已经有很多了,其中有些测试还包括了刚出锅的Chrome。我们很有必要仔细地研究一下这些测试,并尝试找出它们所关注的测试目标及其测试结果具体对应于哪些实际的网页性能。

本文将要讨论的测试平台有以下三种:

SunSpider:它是较为流行的JavaScript性能测试平台,由WebKit团队开发;仅测试JavaScript引擎(不含渲染及DOM操作)的性能;拥有许多的测试类型(如对象、函数调用、数学、递归……等等)。

V8 Benchmark:它是由V8团队开发的一种性能基准测试平台,仅测试JavaScript性能(尤其关注递归的性能测试)。

Dromaeo:该测试平台由Mozilla开发,用于测试JavaScriptDOM以及JavaScript Library的能;拥有大量的测试类型,其中大部分用于分析DOMJavaScript库的性能。

SunSpider

我们先来看看WebKitSunSpider测试结果(它有着大量的纯JavaScript功能)。下图为详细的测试结果:

可以发现,这是一条由Chrome开始逐步向上的曲线(无视早期的Internet Explorer)。显然,Chrome是最快的(不过,这里并没有包含针对TraceMonkey引擎的测试结果)。

昨天晚上,Brendan Eich将最新的TraceMonkey代码搞了出来,并把它跟V8放在一起做了个比较

可以发现,TraceMonkey(开发了约两个月)的性能要比V8(开发了约两年)好一些。

这里,TraceMonkey的最大问题在于其递归回溯的能力。目前,递归调用时还没有任何的回溯(这就使得TraceMonkey在递归时要比V8慢差不多10倍)。当递归回溯功能加入到Firefox 3.1之后,我相信上面那个结果仍然会出现的。

Google Chrome Benchmark

Chrome团队发布了他们自己的用于分析JavaScript性能的测试平台。它含有一些新的测试(即不同于SunSpider的那些),而且有着非常变态的递归:

通过这些测试,我们可以发现Chrome直接秒杀了其他浏览器。这些测试是否能够说明真实的浏览器性能呢?这个问题还是有待商榷的,因为它只是高度关注了JavaScript中的一些细节功能而已。

注意,TraceMonkey表现得很差:由于没有递归回溯,因此它在这里占不到任何便宜(就像前面所解释的那样)。

Dromaeo with DOM

最后,我们来更全面地看看JavaScript的性能。我一直在维护Dromaeo测试平台,已经添加了大量新的DOMJavaScript库测试。它能够提供更加权威的浏览器性能报告,即关注浏览器在进行正常的Web浏览时的性能表现。

考虑到大部分网页都受制于DOM的性能(想想table sorter之类的东西就明白了)而不是JavaScript的性能(如游戏、图形等),因此很有必要仔细看看这些扩展分析的结果。

针对JavaScriptDOM以及库测试的分析结果(多谢Asa Dotzler帮我搞掂了这些测试):

(比较郁闷的是,这里没有IE的测试结果,因为该浏览器在测试时崩溃掉了。另外,我在Windows上运行WebKit的各种nightly版本(包括Squirrelfish)时也遇到了麻烦,参见Bug 20626。)

这里,我们看到了一张非常不同的图。基于WebKit的引擎都有着绝对的领先优势,而Chrome则仅次于最新版的Safari。跟一般的Firefox相比,使用了TraceMonkeyFirefox会有小幅的性能提升。在回溯被应用到DOM结构操作上之前,其全部的潜力是发挥不出来的(其实它现在根本就没这本事,估计要等到Firefox 3.2才行)。

有一件事是明摆着的:JavaScript性能的“跳蛙游戏”仍在继续(译者注:老外小时候会玩这游戏,貌似俺们小时候玩的是“跳马”,规则跟这个差不多。如果理解不了这个意思的话,请google一下leapfrog)。只要有多个JavaScript引擎存在,这种“三十年河东三十年河西”的现象就只会越来越快(显然,这对于最终用户和应用程序开发人员来说,都无疑是一件大好事)。