您的位置:首页 > 职场人生

自己面试中遇到的for循环问题

2013-05-11 10:20 316 查看
最近面试时,面试官问我的一个问题,如下:

for(i=0; i<n; i++)

for(i=n; i>0; i--)

“这两个for循环,哪个的速度更快?为什么?”

我的答案是:后者更快。原因是for语句括号中的三个部分中,第二个部分是进行判断的,每循环一次都要进行判断,根据判断的结果决定是否继续进行下一次循环。
前者的判断为i<n是将i和n这两个变量进行比较,计算机为了比较这两个变量的值需要内存中读取n的值,再放入寄存器中,然后再与i相减,最后判断结果是不是0,如果不是0,则继续循环,否则,则退出循环。
而后者是将i和0进行比较,任何一个CPU都有一个与0比较的指令,编译器将会使用这条指令(一般为JZ或JNZ),这样将省去读取内存的时间和两变量相减的时间。
还望有牛人指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: