for...in循环比for循环更快吗?

熟悉ActionScript的朋友可能都有一个认识,就是在flash中for...in循环要比for循环快很多,因此在能用for...in循环的地方就不用for循环

我一直认为在Object中可能没问题的(也没有进行测试过),但是对于Array来说,只有一个序列,而没有别的元素,用for...in循环会更快吗?我一直对这个结论表示怀疑,今天终于做了一下测试:

var tmpArray = new Array();
var time1 = getTimer();
for(var i=0;i < 10000;i++){
 tmpArray[i] = "abcd";
}
var time2 = getTimer();
trace(time2-time1);
var tmp;
for(var i=0;i < tmpArray.length;i++){
 tmp = tmpArray[i];
}
var time3 = getTimer();
trace(time3-time2);
for(var i in tmpArray){
 tmp = tmpArray[i];
}
var time4 = getTimer();
trace(time4-time3);



上面程序就是对2种循环的一个测试,结果在下面(pm1.4):

206
89
98

结果是for循环比for...in还要快一点,但相差不大

如果我们把10000次循环改成100000次会怎么样呢,看下面:

960
833
3000

呵呵,结果是for...in比for循环要慢很多了

因此可以得出的结论就是,对于数组来说,for...in循环并不比for循环快,而且当数据量很大时,for...in循环比for循环还要慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值