看到有人做了
Firefox和Internet Explorer在执行JavaScript方面的性能对比 ,觉得这种测试可以再系统化一点,对多种浏览器进行。这里将这个测试延伸,对IE 6.0,IE 7.0 beta,Opera 8.54,Opera 9.00 beta和Firefox 1.5.0.3的javascript性能进行对比。
测试的脚本在
http://wd-testnet.world-direct.at/mozilla/dhtml/funo/jsTimeTest.htm 。其中分了15个测试项目,计算所有的运行时间,然后得到一个算术平均结果作为该浏览器的性能指标。15个测试项目为javascript所作的简单计算:#1 for-loop, #2 add, #3 subtract, #4 multiply, #5 divide, #6 divide2, #7 get value from array, #8 parseInt(), #9 var, #10 Math.sin(), #11 Math.floor(), #12 if, #13 read global variable, #14 concatenate strings, #15 sort Array。为了做到尽可能的准确,每个浏览器将这15个项目运行5遍,取平均值。并且在IE 6.0中,所有的插件都不显示;在IE 7.0 beta中,只开一个tab;在Firefox中所有的插件都关闭,只开一个tab。虽然不能做到排除一切影响因素,这样的设定大致可以反映浏览器javascript引擎的运行效率。
另外,IE和Firefox都有当javascript脚本运行时间过长的提示功能,而这个测试的时间是简单地将结束时间减去开始时间,所以用户响应这些提示所用的时间也会被计算在内,势必造成结果不准确。Google了一番之后找到了延迟最大脚本运行时间的方法。对于IE,看
这里 ,对于Firefox,看
这里 。在本测试中我将IE的MaxScriptStatements设置成10^8,将Firefox的dom.max_script_run_time设置成50,没有再出现这种提示。
15个项目的平均时间如下:(越短效率越高)

javascript:if(this.width>=400)this.style.width=400;" onmouseover="toolTip('+ 单击看大图 +','#800000','#ffffff')" onmouseout="toolTip();" onclick="window.open(this.src);">
可以看到,总平均水平来看,Firefox对于以上测试其javascript引擎的执行效率是最低的,IE 6.0/7.0次之,Opera最好。Opera 9.00 beta的平均效率比Firefox 1.5.0.3快了超过三分之一。这一结果再一次肯定了Opera在主流浏览器中速度最快的地位。事实上,Opera总是宣传它打开网页的速度最快,看起来这至少应该包括html渲染速度和脚本执行速度。而Firefox尽管开源、可订制性强,由于它是建立在Gecko这个虚拟机上,javascript解释效率低下也是意料之中。IE的表现则颇为中规中矩。
再来看看5种浏览器对于15项测试的分项结果。下面这张图x轴代表了15个项目,y轴代表了执行时间(毫秒)。可以看到Firefox在#5 (divide 除法),#6 (divide2 除法),#14 (concatenate strings 字符串合并),#15 (sort Array 数组排序)中性能大大落后,在#1,#7,#9,#11,#13中有微弱优势;而Opera在#8 (parseInt() 浮点到整型的转换),#10 (Math.sin() 正弦函数),#11 (Math.floor() 取整函数)中比其他浏览器大幅度领先,在其他项目中没有大的滞后。这也就解释了Firefox同Opera的差别——Firefox的javascript引擎在除法、字符串处理和排序上的性能较弱,而Opera似乎对浮点数处理做过优化。

javascript:if(this.width>=400)this.style.width=400;" onmouseover="toolTip('+ 单击看大图 +','#800000','#ffffff')" onmouseout="toolTip();" onclick="window.open(this.src);">
此外,还可以看到Opera 8.54和Opera 9.00 beta,IE 6.0和IE 7.0 beta的分布差不多,这种子项目的性能某种程度上代表了不同浏览器的javascript解释行为的分布。
在越来越多的Ajax应用中,浏览器的javascript性能变得越来越重要,而低下的javascript性能会对用户体验造成很大的障碍。不过,这个测试脚本不是非常严格,所有的测试都是对于一个固定的数字、字符串或者条件进行的。如果浏览器有某种javascript缓存优化机制,那么结果就不是很准确了。如果能对随机生成的内容进行测试,应该可以得到更有意义的结果。
[Last Edited By KusTa @ 2006-06-15 02:09 PM]
![]()
查看更多与几种浏览器的JavaScript性能比较相关内容