3 回答

TA贡献1831条经验 获得超4个赞
对于任何好奇的人,我做了一个非常快速的基准测试:
const benchmarkMap = size => {
console.time('benchmarkMap');
var map = new Map();
for (var i = 0; i < size; i++) map.set(i, i);
for (var i = 0; i < size; i++) var x = map.get(i);
console.timeEnd('benchmarkMap');
}
const benchmarkObj = size => {
console.time('benchmarkObj');
var obj = {};
for (var i = 0; i < size; i++) obj[i] = i;
for (var i = 0; i < size; i++) var x = obj[i];
console.timeEnd('benchmarkObj');
}
var size = 1000000;
benchmarkMap(size);
benchmarkObj(size);
我运行了几次,结果如下:
(2017 MacBook Pro,2.5 GHz i7带16G RAM)
benchmarkMap: 189.120ms
benchmarkObj: 44.214ms
benchmarkMap: 200.817ms
benchmarkObj: 38.963ms
benchmarkMap: 187.968ms
benchmarkObj: 41.633ms
benchmarkMap: 186.533ms
benchmarkObj: 35.850ms
benchmarkMap: 187.339ms
benchmarkObj: 44.515ms

TA贡献1772条经验 获得超8个赞
所有O(1)算法也都是O(n),因此让性能较低的规范实现不会造成任何危害。性能较差的实现可能在资源受限的系统中可能会引起一些关注,因为它们很可能需要更少的代码/空间。
添加回答
举报