5 javascript dictionary node.js es6-map
假设我有:
const m = new Map();
Run Code Online (Sandbox Code Playgroud)
两者之间是否存在性能差异:
for(let v of m){
}
Run Code Online (Sandbox Code Playgroud)
与
m.forEach(v => {});
Run Code Online (Sandbox Code Playgroud)
我假设Map.protoype.forEach使用迭代器就像 for..of 一样?我在这里读到,在迭代期间使用 for..of 从映射中删除键是安全的,请参阅:ES6:在 Set/Map 迭代期间从 Set/Map 中删除元素是否危险?
我想知道用循环从地图中删除键是否安全Map.prototype.forEach。
在 Node.js 8.11 上使用以下代码进行了一些基准测试
\n\nconst Benchmark = require('benchmark');\nconst suite = new Benchmark.Suite();\n\nsuite\n .add('for of', function () {\n const m = new Map();\n for (let i = 0; i < 100; i++) {\n m.set(`key${i}`, i);\n }\n\n for (let v of m) {\n m.delete(v);\n }\n })\n .add('forEach', function () {\n const m = new Map();\n for (let i = 0; i < 100; i++) {\n m.set(`key${i}`, i);\n }\n\n m.forEach(v => {\n m.delete(v);\n })\n })\n .on('cycle', function (event) {\n console.log(String(event.target));\n })\n .on('complete', function () {\n console.log('Fastest is ' + this.filter('fastest').map('name'));\n })\n // run async\n .run({ 'async': true });\nRun Code Online (Sandbox Code Playgroud)\n\n结果非常有趣:
\n\nfor of x 88,105 ops/sec \xc2\xb10.36% (89 runs sampled)\nforEach x 81,532 ops/sec \xc2\xb10.55% (90 runs sampled)\nFastest is for of\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |