锁定老帖子 主题:面试题讨论(一)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-13
最后修改:2010-09-13
首先,请JE上的高手、老鸟们原谅我把这道题拿出来讨论,也许,这题对你们来说只是小菜一碟,我却是觉得这种题目比较少见,我也不太清楚。但是,我想拿出来与大家分享下,讨论讨论,希望能挖掘出它的原理,让不清楚的小鸟们长长见识,当然也包括我,呵呵! for(int i = 0;i<10000;i++) { for(int j = 0;j<1000;j++) { for(int k = 0;k<100;k++) { function(i,j,k);\ } } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-13
就是把循环次数少的放在最外层嘛
|
|
返回顶楼 | |
发表时间:2010-09-13
太多的函数调用,直接在function内部三重循环就可以了。
|
|
返回顶楼 | |
发表时间:2010-09-13
1楼的优化方案是对的,但没说为什么,我们可能还是不知道
2楼的优化方案已经在该题目讨论之外了 |
|
返回顶楼 | |
发表时间:2010-09-13
最后修改:2010-09-13
抱歉!误人子弟。
|
|
返回顶楼 | |
发表时间:2010-09-13
最后修改:2010-09-13
观 望中
|
|
返回顶楼 | |
发表时间:2010-09-13
哥们,看看这个帖子,分析的很详细
http://www.iteye.com/topic/632481 |
|
返回顶楼 | |
发表时间:2010-09-13
计算一下10000*1000*100=10亿,也就是说要循环10亿次,如果单从循环优化来讲可以从以下几个方面:
1、一楼所提到的把循环次数少的放在最外面,减少外层的判断次数 2、i、j、k放在循环外实例化,减少实例化的次数 3、用i=100,i>0,i--,这种递减的方式,原因是计算机对0和1比较感兴趣 但说白了,应用中遇到这种循环,再优化也死定了! |
|
返回顶楼 | |
发表时间:2010-09-13
我认为。。这样优化了也没啥明显的效果。
|
|
返回顶楼 | |
发表时间:2010-09-13
把循环少的放在外层,我认为还应该是减少了局部变量初始化的次数。
优化前i初始化1次,j10000次,k1000×10000次 优化后k1次,j100次,i100×1000次。 |
|
返回顶楼 | |