怎么优化这个循环

dingoc 2010-03-04 07:46:28

for(int i=0;i<1000;i++){

for(int i=0;i<100;i++){

for(int i=0;i<10;i++){
function(i,j,k);
}

}
}



我觉得应该把循环次数少的放外循环,不知带是不是这样?
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
musiclee 2010-03-04
  • 打赏
  • 举报
回复
引用 5 楼 dingoc 的回复:
引用 2 楼 musiclee 的回复:是的 不然 要大量的内循环 10次    一次1000循环快 1000次  一次10循环慢

能不能解释详细点,确实是笔误

这个要从汇编说起,对于汇编超过1个循环记录循环的次数要有压栈操作(X86只有一个寄存器cx记录循环变量的),内部循环短的话要重复大量的出入栈操作(外部循环控制1000次啊)
对于java 我估计生成的字节码也类似吧 所以。。。1楼
墨水鱼 2010-03-04
  • 打赏
  • 举报
回复
循环次数越多放越里面,如:


for(int k=0;k<10;k++){
for(int j=0;j<100;j++){
for(int i=0;i<1000;i++){
function(i,j,k);
}
}
}

dingoc 2010-03-04
  • 打赏
  • 举报
回复
引用 2 楼 musiclee 的回复:
是的 不然 要大量的内循环
10次    一次1000循环快
1000次  一次10循环慢


能不能解释详细点,确实是笔误
dingoc 2010-03-04
  • 打赏
  • 举报
回复

for(int i=0;i<1000;i++){

for(int j=0;j<100;j++){

for(int k=0;k<10;k++){
function(i,j,k);
}

}
}




复制快了 是这样的 ijk
musiclee 2010-03-04
  • 打赏
  • 举报
回复
引用 1 楼 kasper360 的回复:
三个循环里全是 i ? j, k 呢?

汗 我都没注意看 lz笔误吧?还是程序就是这样?
musiclee 2010-03-04
  • 打赏
  • 举报
回复
是的 不然 要大量的内循环
10次 一次1000循环快
1000次 一次10循环慢
kasper360 2010-03-04
  • 打赏
  • 举报
回复
三个循环里全是 i ? j, k 呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧