nowayings 发表于 2015-3-29 09:52:01

刨根问底C、C++(1)——i++和++i那个效率高点

【问题】i++和++i那个效率高点
【答案】
         (1)内建数据类型的情况。他们的效率没有什么区别
         (2)自定义数据类型的情况,++i的效率更高点。
【分析】
         我们先来编写一段程序
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int i = 0;
        int x = 0;

        i++;
        ++i;

        x = i++;
        x = ++i;

        system("pause");
        return 0;
}我们得到程序的汇编:
;Line 9
         mov ecx,DWORD PTR _i$
         add eax,1
          movDWORD PTR _i$,ecx
;Line 10
       (同上一样)

这个说明:内建数据类型效率一样。但是自定义的数据类型。++i可以返回对象的引用。但是后缀的i++必须返回对象的值。这导致了在大对象的时候会产生较大的复制开销。引起效率降低。

                                                                                                                                                                  永不止步 nowayings


页: [1]
查看完整版本: 刨根问底C、C++(1)——i++和++i那个效率高点