JS中使用new Array()与使用Array.from()方式创建二维数组的性能比较

比较 1,单次创建小额数组

1. 通过new Array()方式

function t() {
    console.time();
    new Array(100).fill().map(() => new Array(10));
    console.timeEnd();
}

 执行5次耗时:

  1. 0.078125 ms
  2. 0.050048828125 ms
  3. 0.0380859375 ms
  4. 0.031005859375 ms
  5. 0.093017578125 ms

2. 通过Array.from()方式

function t() {
    console.time();
    Array.from({ length: 100 }, () => new Array(10));
    console.timeEnd();
}

 执行5次耗时:

  1. 0.115966796875 ms
  2. 0.045166015625 ms
  3. 0.0458984375 ms
  4. 0.046142578125 ms
  5. 0.09912109375 ms

3. 通过朴素for循环方式

function t() {
    console.time();
    const a = new Array(100);
    for (let i = 0; i < 100; i++) {
        a[i] = new Array(10);
    }
    console.timeEnd();
}

 执行5次耗时:

  1. 0.05908203125 ms
  2. 0.047119140625 ms
  3. 0.02001953125 ms
  4. 0.016845703125 ms
  5. 0.02099609375 ms

总结:以粗略的平均耗时进行从快到慢排名,方式3(0.033ms) -> 方式1(0.058ms) -> 方式2(0.070ms)。

 

比较 2,多次创建小额数组

1. 通过new Array()方式

function test() {
    console.time();
    for (let i = 0; i < 10 ** 5; i++) {
        new Array(100).fill().map(() => new Array(10));
    }
    console.timeEnd();
}

 执行5次耗时:

  1. 78.958984375 ms
  2. 66.5771484375 ms
  3. 75.095947265625 ms
  4. 74.529052734375 ms
  5. 74.527099609375 ms

2. 通过Array.from()方式

function test() {
    console.time();
    for (let i = 0; i < 10 ** 5; i++) {
        Array.from({ length: 100 }, () => new Array(10));
    }
    console.timeEnd();
}

 执行5次耗时:

  1. 301.885009765625 ms
  2. 301.829833984375 ms
  3. 302.973876953125 ms
  4. 305.974853515625 ms
  5. 300.94482421875 ms

3. 通过朴素for循环方式

function test() {
    console.time();
    for (let i = 0; i < 10 ** 5; i++) {
        const a = new Array(100);
        for (let i = 0; i < 100; i++) {
            a[i] = new Array(10);
        }
    }
    console.timeEnd();
}

 执行5次耗时:

  1. 60.8369140625 ms
  2. 60.953125 ms
  3. 60.804931640625 ms
  4. 60.619873046875 ms
  5. 60.380859375 ms

总结:以粗略的平均耗时进行从快到慢排名,方式3(60.72ms) -> 方式1(73.94ms) -> 方式2(302.72ms)。

posted @   樊顺  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
历史上的今天:
2018-11-23 Ant Design中的Form组件
点击右上角即可分享
微信分享提示