黑马程序员技术交流社区

标题: 关于效率的一个小问题 [打印本页]

作者: 廖理    时间: 2012-5-8 10:52
标题: 关于效率的一个小问题
本帖最后由 廖理 于 2012-5-8 10:54 编辑

int x ;
x= x+1;//1
x+=1;//2
x++;//3
这三种方式都是似的x的值增加1,那种的效率最高呢?为什么?
作者: 谭景宾    时间: 2012-5-8 11:08
x=x+1最低,因为它的执行过程如下:

  1. 读取右x的地址;

  2. x+1;

  3. 读取左x的地址;

  4. 将右值传给左边的x(编译器并不认为左右x的地址相同).

  x=+1其次,它的执行过程如下:

  1. 读取右x的地址;

  2. x=1;

  3. 将得到的值传给x(因为x的地址已经读出).

  x++最高,它的执行如下:

  1. 读取右x的地址;

  2. x自增1.


作者: 杨威    时间: 2012-5-8 11:10
这个以前好像在哪看过,是一道面试题来着,在效率方面是第三种最好
第一种,我们得先读出x=x+1;中左边的x的地址,加1后再读出算式中右边的x地址,将右边的值传到左边的x
第二种,我们读出x的地址,然后加1,再返回原来地址就行了
第三种,直接读出x,然后加1就完了

作者: 隋营营    时间: 2012-5-8 11:10
理论上说:x++比其它两种效率都高。而x+=1 与 x=x+1 效率差不多。
x++直接在cpu的寄存器中执行。
x+=1把 x 从内存中取出加 1 后再赋给内存中的i变量 x

但是实际应用中可以忽略这种差别了。
作者: 张成龙    时间: 2012-5-8 13:00
x++效率最高,最低的是x=x+1;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2