当前位置: 首页 > 工具软件 > Fortune.js > 使用案例 >

js的 for forEach

焦阎宝
2023-12-01

考虑到代码少简洁,我常常用forEach,在我的猜想里我觉得forEach要耗性能。今天查看了这方面的知识,以后还是多用for少用forEach(如果for能做到的话),

  • for 循环没有任何额外的函数调用栈和上下文;

  • forEach函数签名实际上是 array.forEach(function(currentValue, index, arr), thisValue)

它不是普通的 for 循环的语法糖,还有诸多参数和上下文需要在执行的时候考虑进来,这里可能拖慢性能

但 在node.js运行环境下,有一个惊人的发现

let arrs = new Array(100000);

console.time('for');
for (let i = 0; i < arrs.length; i++) {

};
console.timeEnd('for');

console.time('forEach');
	
arrs.forEach((arr) => {
 
});
console.timeEnd('forEach');

for: 2.263ms
forEach: 0.254ms
在10万这个级别下, forEach 的性能是 for的十倍

for: 2.263ms
forEach: 0.254ms
在100万这个量级下, forEach 的性能是和for的一致

for: 2.844ms
forEach: 2.652ms
在1000万级以上的量级上 , forEach 的性能远远低于for的性能

for: 8.422ms
forEach: 30.328m

对于小少数据,可以选forEach也可以选for ,对于极大超大的,还是乖乖用for好了。

PS:

 看到过一个说法,forEach能让代码更为简便和可读性更高,在性能不是特别影响的前提下,代码的可拓展性,可读性等会更为重要,而且随着浏览器引擎的升级,应该forEach的性能会被优化的越来越棒的

 类似资料: