javascript - 是什么让相同数量的循环具有不同的性能?
问题描述
var t1 = new Date().getTime()
for (let i = 0; i < 100; i++) {
for (let j = 0; j < 1000; j++) {
for (let k = 0; k < 10000; k++) {
}
}
}
var t2 = new Date().getTime()
console.log('first time', t2 - t1)
for (let i = 0; i < 10000; i++) {
for (let j = 0; j < 1000; j++) {
for (let k = 0; k < 100; k++) {
}
}
}
var t3 = new Date().getTime()
console.log('second time', t3 - t2)
如您所见,上述两个 for 循环的执行时间似乎相同。但事实上,第二个循环的执行时间比第一个循环要多。引擎盖下有何不同?
解决方案
在第一个循环中,您正在执行:
- 让 j=0; //100次
- 让 k=0; //100*1000=100000次
在第二个循环中,您正在执行:
- 让 j=0; //10000次
- 让 k=0; //10000*1000=10000000次
第二个循环有 9909900 多个变量初始化,因此预计运行时间更长。
推荐阅读
- java - 为什么 List.contains(Object) 的行为不同?
- r - 如何在同一个数据帧上做colsum和average
- powerbi - 使用 DAX 生成日期系列
- javascript - 仅在服务器上需要一个包
- java - Intellij IDEA 仅针对所有未提交的更改运行测试
- regex - 在换行符之前匹配字符,不包括空格?
- macos - MacOS - 使用带有launchd的脚本 - 启动,登录,注销,关闭?
- service-worker - Workbox 的服务人员在更改时未更新
- python - AllenNLP 共指分辨率的多 GPU 训练
- reactjs - 事件处理程序中带有 [name] 的 PrevState