gpt4 book ai didi

javascript - 更高的性能 - Map.prototype.forEach 还是 for..of?

转载 作者:行者123 更新时间:2023-12-03 16:37:55 25 4
gpt4 key购买 nike

说我有:

const m = new Map();

之间是否存在性能差异:
for(let v of m){

}

对比
m.forEach(v => {});

我假设 Map.protoype.forEach使用迭代器就像 for..of?我在这里读到在迭代过程中使用 for..of 从 map 中删除键是安全的,请参阅: ES6: Is it dangerous to delete elements from Set/Map during Set/Map iteration?

我想知道使用 Map.prototype.forEach 从 map 中删除键是否安全循环也。

最佳答案

我也对此感兴趣并创建了一个 JSPerf benchmark它对 map 执行简单的原始迭代,但不对条目本身做任何事情。

for-of 循​​环如下所示:

for (let entry of testMap) ...

始终将执行速度提高约 15-20% 在 chrome 中,与 forEach 相比,只是迭代整个事物。

如果你需要更好的可读性,循环表达式本身中的数组解构是最慢的,它实际上是在 forEach 级别上执行的:
for (let [key, value] of testMap) ...

使用局部变量介于两者之间,比数组解构快但比原始循环慢:
for (let entry of testMap) {
let key = entry[0];
let value = entry[1];
}

此外,for-of 循​​环还有一个额外的好处是不需要创建函数,这意味着在 forEach 时产生的潜在垃圾更少。使用每次调用创建的匿名函数表达式调用。

关于javascript - 更高的性能 - Map.prototype.forEach 还是 for..of?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com