++i, i++效率问题求解
c++吧
全部回复
仅看楼主
level 1
btt1095347198
楼主
不是说i++要产生副本,效率比++i低吗?
但为什么反汇编得到的结果是这样呢?求解
++i,与i++三条完全相同的汇编语句
a = ++i;
a = i++;
都是五条语句,顺序不同但效率一样
2012年05月02日 04点05分
1
level 11
ZD_Tinson
对基本内置类型没差别``
2012年05月02日 05点05分
2
level 13
关签
你自己重载一下就知道了。
2012年05月02日 05点05分
3
level 1
btt1095347198
楼主
重载当然有区别啊,我是说不重载?
2012年05月02日 05点05分
4
level 13
关签
2012年05月02日 05点05分
5
level 1
btt1095347198
楼主
能解释一下吗?
我们重载无非是像下面这样
前缀{ i = i + 1;
return i;
}
后缀
{
int temp = i;
i = i + 1;
return i;
}
内置的++是怎么实现的呢?是编译器优化,还是直接用汇编啊?
2012年05月02日 05点05分
6
level 11
whatofor
我记得我也问过这个问题.
2012年05月02日 05点05分
7
level 1
btt1095347198
楼主
求解释,
2012年05月02日 05点05分
8
level 1
btt1095347198
楼主
结果呢?
2012年05月02日 05点05分
9
level 1
btt1095347198
楼主
6楼是return temp.
2012年05月02日 05点05分
10
level 11
whatofor
如 for(int i=0;i<1231;i++)和for(int i=0;i<1231;++i)一样.
如果i是迭代器或者其它类型,则不一样.
优先使用++i;
2012年05月02日 05点05分
12
level 11
ZD_Tinson
对于复杂的类型
重载的前置自增先自增再返回自身的引用
后置自增先复制自己再自增再返回先前复制的对象
复制代价越大前置和后置的效率差别就越大
貌似是这样
2012年05月02日 05点05分
14
level 11
Coding狂人
这是DEBUG版代码。 编译器不做任何优化。
Release编译后 代码一样
都是 inc i.
2012年05月02日 05点05分
15
level 1
btt1095347198
楼主
也就是说,对与int i.
不重载则++i与i++效率一样.
如果重载或为iterator以及其它复杂类型,则++前置效率高
2012年05月02日 05点05分
16
level 1
btt1095347198
楼主
哦,那为什么汇编语句并无效率差别呢?
2012年05月02日 05点05分
17
level 11
whatofor
就是这样
2012年05月02日 05点05分
18
level 1
btt1095347198
楼主
我试了一下++iterator 和iterator++效率确实差不少
2012年05月02日 05点05分
19
level 8
ssnhero
问个小白问题!请问楼主用什么软件反汇编的哈?
2012年05月02日 08点05分
20
level 5
767225477
2012年05月02日 09点05分
21
1
2
尾页