ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js 遍历数组性能对比

2022-09-15 09:32:31  阅读:223  来源: 互联网

标签:arr 遍历 console js length let forEach 数组 time


js常用的遍历数组的方式有三种:for,forEach,of,由于实现方式的不同,导致三种遍历方式性能有所差异

forEach的性能损耗,主要在于要生成函数。而of的问题,是在于内部使用了迭代器。所以这两种方式比起for来说都要差一些。

结论:

for > forEach > of

在千万级的规模,差距达到几十毫秒,

亿级规模,差距达到几百毫秒

十亿级规模,差距达到几秒钟

随着数据规模的扩大,forEach和of的差距逐渐减少,但forEach仍然比of性能高

如果是需要实时变动的图表,每秒刷新几十上百次的那种,请使用for

在实际使用的过程中,绝大多数情况下,其实是不需要考虑这个差距的,毕竟这种规模的数据交给前端处理的情况不多。

大多数情况下还是要考虑可读性,forEach和of的可读性明显要好于for

 

测试代码

const arr = []
// Create an array with a million elements
for (let i = 0; i < 10000 * 10000; i++) {
    arr.push(i)
}

const length = arr.length

// Use for to walk through the array and print the time
console.time('for')


for (let i = 0; i < length; i++) {
    let n1 = arr[i]
    }
console.timeEnd('for') // for: 56ms

// Use forEach to traverse and print the time
console.time('forEach')

arr.forEach((o) => {
    let n2 = o
    })
console.timeEnd('forEach') // forEach: 636ms

console.time('of')

for (let o of arr) {
    let n3 = o
    }
console.timeEnd('of') // of:804ms:

最后,补充一个使用for循环的好习惯:

for (let i = 0,len=arr.length; i < len; i++) {
    //
}

请使用块级的len变量提前计算arr.length,否则每次循环都会从上级作用域取arr计算一次 

标签:arr,遍历,console,js,length,let,forEach,数组,time
来源: https://www.cnblogs.com/Bin-x/p/16695341.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有