for of和forEach的效率比较

2016-2-18 13:32:10

因为最近开始用generator处理异步逻辑了,所以遇到需要循环的地方如果使用数组,数组里再有异步逻辑的话使用forEach再带一个函数进去是无法当成异步逻辑处理的,所以就想用for of循环做枚举遍历,顺手写了个小测试当做性能对比

'use strict';
let arr = [];
for(let i =0;i<10000000;i++){
    arr.push(i);
}
let sum = 0;
console.time('for of');
for(let i of arr){
    sum+=i;
}
console.timeEnd('for of');

sum = 0;

console.time('forEach');
arr.forEach((n)=>sum+=n);
console.timeEnd('forEach');

console.time('reduce');
arr.reduce((sum,n)=>sum+n, 0);
console.timeEnd('reduce');

结果发现效率是for of最差
for of: 1351.440ms
forEach: 688.484ms
reduce: 462.045ms

还有就是从哪个版本开始node的console.time能够精确到千分之毫秒了啊……