数组-为什么普通for的性能远高于forEach的性能

为什么普通for的性能远高于forEach的性能

forEach vs for loop网址:https://jsperf.com/testing-foreach-vs-for-loop
(有如下几种可能)
1.

  • for 循环没有任何额外的函数调用栈和上下文;
  • forEach函数签名实际上是 array.forEach(function(currentValue, index, arr), thisValue)它不是普通的 for 循环的语法糖,还有诸多参数和上下文需要在执行的时候考虑进来,这里可能拖慢性能;
    2.forEach 里操作了toObject 以及判断是否终止循环条件比for loop 复杂一点。
    3.代码如下
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');

结论:

  • 在10万这个级别下, forEach 的性能是 for的十倍
  • 在100万这个量级下, forEach 的性能是和for的一致
  • 在1000万级以上的量级上 , forEach 的性能远远低于for的性能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值