https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/235
结论:把循环次数大的放在内层,执行时间会比较短。
var t1 = new Date().getTime()
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 100; j++) {
for (let k = 0; k < 1000; k++) {
}
}
}
var t2 = new Date().getTime()
console.log('first time', t2 - t1)
for (let i = 0; i < 1000; i++) {
for (let j = 0; j < 100; j++) {
for (let k = 0; k < 10; k++) {
}
}
}
var t3 = new Date().getTime()
console.log('two time', t3 - t2)
以上两种方式的嵌套,循环次数是一样的。但是第一种执行时间会比较快。从实例化(次数) 、初始化(次数)、比较(次数)、自增(次数)几方面比较
第二循环
变量 | 实例化(次数) | 初始化(次数) | 比较(次数) | 自增(次数) |
---|---|---|---|---|
i | 1 | 1 | 1000 | 1000 |
j | 1000 | 1000 | 1000 * 100 | 1000 * 100 |
k | 1000 * 100 | 1000 * 100 | 1000 * 100 * 10 | 1000 * 100 * 10 |
第一循环
变量 | 实例化(次数) | 初始化(次数) | 比较(次数) | 自增(次数) |
---|---|---|---|---|
i | 1 | 1 | 10 | 10 |
j | 10 | 10 | 10 * 100 | 10 * 100 |
k | 10 * 100 | 10 * 100 | 10 * 100 * 1000 | 10 * 100 * 1000 |
主要差别是外层两个变量初始化,比较,自增次数全部减少
网友评论