因为最近开始用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能够精确到千分之毫秒了啊……