作者tomin (弱水三千 只取一瓢饮)
看板Ajax
标题Re: javascript benchmark (效能测试 on js function creation)
时间Mon Mar 12 02:20:49 2012
※ 引述《TonyQ (自立而後立人。)》之铭言:
: 你测试的部份怎麽不写成底下这样就好?XD
: function stopWatch(fn){
: var start = new Date();
: try{
: fn();
: }finally{
: var end = new Date();
: return end - start;
: }
: }
: stopWatch(function(){
: function f(){alert()}
: for(i=0;i<1000000;i++){
: x = f;
: }
: });
以这个case来说 这样写测不到真正花费的时间
如果不传fn()进去 而是直接把fn()换成真的要测的部分 也就是变成
function stopWatch(){
var start = new Date();
try{
function f(){alert()}
for(i=0;i<1000000;i++){
x = f;
}
}finally{
var end = new Date();
return end - start;
}
}
需要的时间马上增加 150 倍 也比另一种写法多2.5倍
http://jsfiddle.net/xKvu2/
奇怪吧?三种很类似的写法 但得到不同的数据
以Fx10测 时间差不多是3, 180, 470 ms
让我不禁疑惑怎麽测才对?
更让人无所适从的是 不同的浏览器测出来的数据差很多
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.24.41.89
※ 编辑: tomin 来自: 114.24.41.89 (03/12 02:31)
1F:→ TonyQ:如果会有这种情形那是 optimize 引擎作掉了 XD 03/12 10:21
2F:→ TonyQ:不过实际上在跑就是要考虑 optimze 引擎啊 :P 03/12 10:22
3F:→ TonyQ:这是 test case issue 不是 test issue 03/12 10:22