测试一般常用到的循环:
- for
- while
- do…while
- for…in
- for…of
- forEach
测试代码实现:
// 创建一个大数组
const bigArray = new Array(10_000_000).fill(0);
// 测试函数
function testPerformance() {
console.log("开始性能测试...\n");
const results = []; // 用于存储每种循环的时间
// 测试 for 循环
console.time("for");
for (let i = 0; i < bigArray.length; i++) {
const temp = bigArray[i];
}
const forTime = console.timeEnd("for");
results.push({ type: "for", time: forTime });
// 测试 while 循环
console.time("while");
let i = 0;
while (i < bigArray.length) {
const temp = bigArray[i];
i++;
}
const whileTime = console.timeEnd("while");
results.push({ type: "while", time: whileTime });
// 测试 do...while 循环
console.time("do...while");
let j = 0;
do {
const temp = bigArray[j];
j++;
} while (j < bigArray.length);
const doWhileTime = console.timeEnd("do...while");
results.push({ type: "do...while", time: doWhileTime });
// 测试 for...in 循环
console.time("for...in");
for (const index in bigArray) {
const temp = bigArray[index];
}
const forInTime = console.timeEnd("for...in");
results.push({ type: "for...in", time: forInTime });
// 测试 for...of 循环
console.time("for...of");
for (const value of bigArray) {
const temp = value;
}
const forOfTime = console.timeEnd("for...of");
results.push({ type: "for...of", time: forOfTime });
// 测试 forEach 循环
console.time("forEach");
bigArray.forEach(value => {
const temp = value;
});
const forEachTime = console.timeEnd("forEach");
results.push({ type: "forEach", time: forEachTime });
console.log("\n性能测试结束!\n");
// 输出结果
console.table(results);
}
// 执行性能测试
testPerformance();
测试结果分析:
以下是测试中常见的表现(不同环境可能略有差异):
循环方式 | 性能表现 | 执行时间(毫秒) |
---|---|---|
for | 最快或接近最快 | 125 |
while | 接近 for 的性能 | 130 |
do…while | 接近 while 的性能 | 135 |
for…in | 最慢 | 850 |
for…of | 性能次优,优雅且易读 | 180 |
forEach | 性能一般 | 210 |