陈建华的博客
专注web开发
js数组求和的方法(最高效率)
2014-11-21 11:51:31   阅读22184次

js数组求和,相信大家多数都是进行循环求和。但是这种方法,资源开销比较大,效率比较低。今天想了想,发现了一个好办法。在此分享一下。

  1. 首先我们创建一个数组a,数组的长度是10万;

    var a = new Array();
    for(var i=0;i<100000;i++){
        a.push(i*12);
    }
  2. 然后我们用普通的循环求和,记录一下开始时间和结束时间;

    执行结果为

    blob.png

    我们可以看到,普通循环的方式,用时是196毫秒。

    console.info(new Date().getTime());
    var x=0;
    for(var i=0;i<a.length;i++){
        x +=a[i];
    }
    console.info(x);
    console.info(new Date().getTime());
  3. 然后我们用新的方法来求和,记录一下开始时间和结束时间;

    执行结果为:

    blob.png

    我们同样可以看到,新方法,用时是46毫秒。

    console.info(new Date().getTime());
    console.info(eval(a.join("+")));
    console.info(new Date().getTime());
  4. 从2和3中我们可以看到,普通方法和我们新方法时间相差了4.2倍,并且这个倍数随着数组长度的变长,呈指数增长。

  5. 实验全部代码如下:

    var a = new Array();
    for(var i=0;i<100000;i++){
        a.push(i*12);
    }
    console.info(new Date().getTime());
    console.info(eval(a.join("+")));
    console.info(new Date().getTime());
    var x=0;
    for(var i=0;i<a.length;i++){
        x +=a[i];
    }
    console.info(x);
    console.info(new Date().getTime());




-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
1楼:kaller 发表于 2015-05-13 17:27:57
so good
2楼:zmen 发表于 2015-07-23 11:34:10
我试了下,用reduce方法比上面这两个方法都要快不少的样子。 我这里第一个方法用了96ms,第二个24ms,用reduce只用了5ms。
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航