文章 评论 浏览 28
我之前用浏览器的做的实验,现在改为 node发现了不一样的结果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其实你这个测试方法有点小问题,for循环这样写会影响性能的,for (let i = 0; i < arrs.length; i++)每次循环都会计算arrs的长度,你可以改成for (let i = 0, let len = arrs.length; i < len; i++)再试一下。
我之前用浏览器的做的实验,现在改为 node发现了不一样的结果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
我之前用浏览器的做的实验,现在改为 node发现了不一样的结果
node
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的十倍
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
其实你这个测试方法有点小问题,for循环这样写会影响性能的,for (let i = 0; i < arrs.length; i++)每次循环都会计算arrs的长度,你可以改成for (let i = 0, let len = arrs.length; i < len; i++)再试一下。
一样的 不管是先赋值还是直接判断length都是上面的结论。 甚至在一千万时赋值length比直接判断耗时更长, 有点搞不懂
文章 0 评论 0
接受
一样的 不管是先赋值还是直接判断length都是上面的结论。 甚至在一千万时赋值length比直接判断耗时更长, 有点搞不懂
第 72 题:为什么普通 for 循环的性能远远高于 forEach 的性能,请解释其中的原因