黑马程序员技术交流社区
标题:
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