测试环境:VS2008
1. 仅对内置数据类型自加,两者效率一样
#include <iostream>
using namespace std;
int main()
{
int a=1,b=2;
a++;
++b;
return 0;
}
汇编代码如下:
int a=1,b=2;
00F4138E mov dword ptr [a],1
00F41395 mov dword ptr [b],2
a++;
00F4139C mov eax,dword ptr [a]
00F4139F add eax,1
00F413A2 mov dword ptr [a],eax
++b;
00F413A5 mov eax,dword ptr [b]
00F413A8 add eax,1
00F413AB mov dword ptr [b],eax
return 0;
可以看出,前置++的a和后置++的b的操作是一样的·,两者效率一样
可见,前置++和后置++都有三个步骤:
- 从内存中,拷贝数据到寄存器
- 寄存器值加1
- 从寄存器中,拷贝数据到内存