JS中使用new Array()与使用Array.from()方式创建二维数组的性能比较
比较 1,单次创建小额数组:
1. 通过new Array()方式
function t() {
console.time();
new Array(100).fill().map(() => new Array(10));
console.timeEnd();
}
执行5次耗时:
- 0.078125 ms
- 0.050048828125 ms
- 0.0380859375 ms
- 0.031005859375 ms
- 0.093017578125 ms
2. 通过Array.from()方式
function t() {
console.time();
Array.from({ length: 100 }, () => new Array(10));
console.timeEnd();
}
执行5次耗时:
- 0.115966796875 ms
- 0.045166015625 ms
- 0.0458984375 ms
- 0.046142578125 ms
- 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次耗时:
- 0.05908203125 ms
- 0.047119140625 ms
- 0.02001953125 ms
- 0.016845703125 ms
- 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次耗时:
- 78.958984375 ms
- 66.5771484375 ms
- 75.095947265625 ms
- 74.529052734375 ms
- 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次耗时:
- 301.885009765625 ms
- 301.829833984375 ms
- 302.973876953125 ms
- 305.974853515625 ms
- 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次耗时:
- 60.8369140625 ms
- 60.953125 ms
- 60.804931640625 ms
- 60.619873046875 ms
- 60.380859375 ms
总结:以粗略的平均耗时进行从快到慢排名,方式3(60.72ms) -> 方式1(73.94ms) -> 方式2(302.72ms)。