zoukankan      html  css  js  c++  java
  • ++i和i++哪个效率高?

    这个问题需要分两种情况来解说:

    1、当变量i的数据类型是c++语言默认提供的类型的话,他们的效率是一样的。

    int a,i=0;     a=++i;汇编代码如下:

     int a,i=0;
    01221A4E  mov         dword ptr [i],0 
     a=++i;
    01221A55  mov         eax,dword ptr [i] 
    01221A58  add         eax,1 
    01221A5B  mov         dword ptr [i],eax 
    01221A5E  mov         ecx,dword ptr [i] 
    01221A61  mov         dword ptr [a],ecx

    int a,i=0;     a=i++;汇编代码如下:

      int a,i=0;
    009E1A4E  mov         dword ptr [i],0 
     a=i++;
    009E1A55  mov         eax,dword ptr [i] 
    009E1A58  mov         dword ptr [a],eax 
    009E1A5B  mov         ecx,dword ptr [i] 
    009E1A5E  add         ecx,1 
    009E1A61  mov         dword ptr [i],ecx

    从汇编代码可以看出,他们的执行行数是一样的! 

     2、我们自定的数据类型,++i效率高于i++,通过运算符重载来给大家说明这一点。

    Operator Operator::operator++()
    {
       ++value;    //内部成员变量
       return *this;
    }

    Operator Operator::operator++(int)
    {
     Operator temp;
     temp.value=value;
     value++;
     return temp;
    }

    看到了吗?后++必须要有一个临时对象才可以完成。所以他的效率自然就下降了!

     
     
     
     

  • 相关阅读:
    PageHelper 空指针异常
    ajax提交因参数超长导致接收参数为空问题解决
    Vue入门:Vue项目创建及启动
    Vue入门:Vue环境安装
    程序部署到服务器服务无法启动问题
    sqlServer区分大小写查询
    按下回车默认提交form表单问题
    MyEclipse常用快捷键
    基于JAX-WS的webService开发实例
    ie8下new Date()指定时间
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3324877.html
Copyright © 2011-2022 走看看