JS for与for in对比(包含性能测试)

原创 2016年05月31日 19:44:07
测试事例(性能对比):

     终端前面部分是没有加入红框中的代码 


如上图, 明显for循环比for in 性能高很多(原因是因为for通过number遍历,for in 则是穷举所有索引)

其实for 与 for in 还有其它区别:
1、for中的i是number类型,for in中的 key是string类型;
2、如果扩展了js 的原生Array,for in 会将其遍历,出现错误结果;
3、如果遍历js对象,需要用for in。 

测试代码:

var s,d;
var arr = [];
for (var index = 0, len = 10000000; index<len; index++) {
    arr.push(index);
}
//Array.prototype.test=function(){
//
//};
function forSum(arr) {
    var i = 0,
        sum = 0,
        l = arr.length;
    for (; i<l; i++) {
        if (i == 0){
            console.log(typeof i);
        }
        sum += arr[i];
    }
}
function forInSum(arr){
    var sum = 0;
    for (var key in arr){
        if (key == 0){
            console.log(typeof key);
        }
        sum += arr[key];
    }
}
function performanceTest(func,param){
    s = new Date().getTime();
    func(param);
    d = new Date().getTime();
    console.log((d-s).toString());
}
performanceTest(forSum,arr);
performanceTest(forInSum,arr);



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

enumerateObjectsUsingBlock 、for 、for(... in ...) 的区别 & 性能测试

for VS for(... in ...) for 的应用范围广基本可以NSArray、NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray、NSArray等...

php array_map,for,foreach性能测试

array_map是php自带的使用回调函数的数组批处理函数,看到这类函数的结构我就怀疑其处理效率。做了个小测试

无人值守的性能测试 -- for 淘宝技术嘉年华 TCon2011

去年有幸参加了淘宝组织的测试技术大会,和不少业界同行有面对面沟通的机会,今年更有幸可以作为speaker参与。我的topic是无人值守的性能测试,主要讲的是我们公司内部的一些性能测试自动化的实践,我是...

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql...

单服务器node.js和php性能测试

选手介绍: node.js,服务端javascript语言,以出色的事件驱动和I/O异步广受关注,它更像一辆性能出色的Mitsubishi Evlution X; php,耳熟能详的服务端语言,在...
  • yczz
  • yczz
  • 2011-11-26 21:50
  • 2597

node.js mongodb数据库驱动性能测试

众所周知,node.js的特点是单线程、事件驱动、异步IO,适合开发运行在分布式设备上的实时性较强的数据密集型应用。今天做了一个性能测试,相同的场景下,拿java和node对比测试,数据库是mongo...
  • shmnh
  • shmnh
  • 2015-02-02 08:10
  • 1186

多核单服务器各种配置和业务压力下的node.js性能测试

本文为原创文章,出自http://cnodejs.org,转载请注明出处和作者  作者:snoopy  原文:http://cnodejs.org/blog/?p=2334 上篇文章我提...

单元测试出错Native library for Attach API not available in this JRE

偶然一天,运行eclipse单元测试,报错: java.lang.IllegalStateException: Native library for Attach API not available...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)