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 @ 2024-11-23 11:52  樊顺  阅读(3)  评论(0编辑  收藏  举报