x=x+1, x+=1, x++哪个效率高?
三个式子都实现x加1,<<程序员面试宝典>>里面说x=x+1(四步),x+=1(三步),x++(一步),说x++效率最好
其实不然,现代编译器都做的比较智能了,gcc编译后的结果这三个式子的结果是完全相同的:
如果x是临时变量(即函数内部定义的),c代码
void fun1(){
int x=1;
x=x+1;
}
void fun2(){
int x=1;
x+=1;
}
void fun3(){
int x=1;
x++;
}
编译后的汇编代码均为
movl $1,-4(%ebp) #初始化x=1,x在栈空间内
leal -4(%ebp),%eax #取x的地址
incl (%eax) #x加1
如果x是全局变量(函数外部定义的),则汇编代码均为
incl x #变量x在数据段
所以这三个式子的效率是一样的
阅读(1749) | 评论(2) | 转发(0) |