比较下面两段代码:

1
2
3
4
for(int i = 0; i < n; i++)
{
     //~ do something;
}
1
2
3
4
for(int i = 0; i < n; ++i)
{
    //~ the same thing;
}

区别仅仅在于i++还是++i,相信大部人都是第一种风格,但在大部分的编译器里,++i是比i++快的。在linux下用time命令测试这两个循环,n = 1000000000时,两个程序运行的时间分别是

real	0m4.413s
user	0m4.376s
sys	0m0.012s

vs.

real	0m4.753s
user	0m4.728s
sys	0m0.008s

可见,差别是存在的,原因据说是:++i是直接在i的内存单元上操作,而i++则是先把i值取出到寄存器中,再执行加法操作,这种差别是和这两种操作方法取得返回值不同有很大联系的,我想这应该还会和编译器的实现有关吧。
但是不要忘了这时的n是很大的,两种用法不成为程序的瓶颈,但是养成一个好的风格和习惯还是必要的。

Tags: .
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Home

RFC: Request For Comments. Orz..

Name(required)
Mail (required),(will not be published)

RFC: Request For Comments. Orz..

Website(recommended)