您的位置:首页 > 编程语言 > C语言/C++

i++与++i哪个效率更高

2017-05-30 11:12 204 查看
c/c++:

自建数据类型的情况,效率没有区别;

自定义数据类型的情况,++i效率较高;

解释:

自定义数据类型(主要指类),前缀式(++i)可以返回对象的引用,而后缀式(i++)必须返回对象的值,所以导致在大对象的时候产生较大的复制开销,降低效率。

可参考自建类型的汇编代码:

8:        i++;
00401036   mov         eax,dword ptr [ebp-4]
00401039   add         eax,1
0040103C   mov         dword ptr [ebp-4],eax
9:        ++i;
0040103F   mov         ecx,dword ptr [ebp-4]
00401042   add         ecx,1
00401045   mov         dword ptr [ebp-4],ecx
10:
11:       x = i++;
00401048   mov         edx,dword ptr [ebp-4]
0040104B   mov         dword ptr [ebp-8],edx
0040104E   mov         eax,dword ptr [ebp-4]
00401051   add         eax,1
00401054   mov         dword ptr [ebp-4],eax
12:       x = ++i;
00401057   mov         ecx,dword ptr [ebp-4]
0040105A   add         ecx,1
0040105D   mov         dword ptr [ebp-4],ecx
00401060   mov         edx,dword ptr [ebp-4]
00401063   mov         dword ptr [ebp-8],edx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++