美文网首页
js Array 与 Map 的性能比较

js Array 与 Map 的性能比较

作者: littlesunn | 来源:发表于2023-01-20 21:18 被阅读0次
      // 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的优势在于修改,添加

相关文章

网友评论

      本文标题:js Array 与 Map 的性能比较

      本文链接:https://www.haomeiwen.com/subject/iupqhdtx.html