// Map与Array性能测试
let map = new Map();
let arr = new Array();
let maxNum = 1000000; // 首先存的东西得多,少量数据性能基本差别不大
for (let index = 0; index < maxNum; index++) {
map.set(index, index);
arr.push(index)
}
// 查找元素,Map获胜
console.time()
console.log(arr.findIndex(item=>item== randomNum(0, maxNum)));
console.timeEnd() // 速度,基本在 x或xx 毫秒(x代表一位数,xx表示两位数)
console.time()
console.log(map.get(randomNum(0, maxNum)));
console.timeEnd() // 速度,基本在 0.0x 毫秒
// 删除元素, Map获胜
console.time()
console.log(arr.splice(randomNum(0, maxNum), 1));
console.timeEnd() // 速度,基本在 xx 毫秒
console.time()
console.log(map.delete(randomNum(0, maxNum)));
console.timeEnd() // 速度,基本在 0.0x 毫秒
// 添加或修改元素(map没有添加方法所以同时比较添加修改), Array获胜
console.time()
console.log(arr.push(1));
console.timeEnd() // 速度,基本在 0.x 毫秒
console.time()
console.log(arr.splice(randomNum(0, maxNum), 1, randomNum(0, maxNum)));
console.timeEnd() // 速度,基本在 0.x 毫秒
console.time()
console.log(map.set(randomNum(0, maxNum), 1));
console.timeEnd() // 速度,基本在 xxxx 毫秒
// 遍历, 势均力敌
console.time()
arr.forEach(item=>{})
console.timeEnd() // 速度,基本在 x.x 毫秒
console.time()
map.forEach(item=>{})
console.timeEnd() // 速度,基本在 x.x 毫秒
/**
* 获取随机数,指定范围内
*/
function randomNum(minNum: number, maxNum: number) {
switch (arguments.length) {
case 1:
return parseInt(Math.random() * minNum + 1, 10);
case 2:
return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
default:
return 0;
}
}
总结: Map的优势在于查找,删除 ,Array的优势在于修改,添加
网友评论