黑马程序员技术交流社区

标题: i++和i=i+1哪个效率高? [打印本页]

作者: 高欢欢    时间: 2012-7-15 13:07
标题: i++和i=i+1哪个效率高?
本帖最后由 高欢欢 于 2012-7-18 07:36 编辑

如果编译器不进行优化,i++效率比后者高
如果进行优化,
两者最终代码是一样的,效率没有差别!

大家还有没有什么好的解释呢?
作者: 全海波    时间: 2012-7-15 13:09
这应该涉及到算法了
作者: 黑马-王言龙    时间: 2012-7-15 13:14
哪个方便写哪个
不解释
作者: 苑占丽    时间: 2012-7-15 13:37
我顺便把i+=1也说了吧

这是在程序员面试宝典上的一道题,对此题的解释为:

i=i+1最低,执行过程:
1)读取右边x的地址
2)i+1
3)读取左边x的地址
4)将右值给左边的x(编译器并不认为左右x的地址相同)

i+=1次之,过程:
1)读取右边x的地址
2)i+1
3)将得到的值给i(因为i的地址已经读出)

i++的效率最高,过程:
1)读取右边i的地址
2)i自增1

所以i++的效率最高.


作者: 陈欢    时间: 2012-7-15 13:40
这两种再计算机内部实现过程中是有区别
i=i+1的过程相当:
  temp=i+1; i=temp;
i++的过程相当:
  temp=i; i=temp+1; return temp;

换种表现形式:
(1) i = i + 1 执行过程如下:
     1-1 读取右x的地址;
     1-2 x + 1;
     1-3 读取左x的地址;
     1-4 将右值传给左边的x

(2) i++; 他的执行过程是:
     3-1 读取右x的地址
     3-2 x自增1


所以说i++的执行效率还是比i=i+1要高的





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