关于 ++i 和 i++ 效率的讨论!!

 

        第一种说法: 在内建数据类型,这两者的效率是一样的,差别不大. 如果是用户自定义的数据类型时,他们的开销就相差很多了.因为在++i时,可以返回对象的引用.i++时,必须返回对象的值,所以导致在打对象的时候产生较大的开销.如果是自定义的类型(不是内建类型)的时候,应该使用++i的方式.


       第二种说法: ++i 不用生成临时变量而 i++要生成临时变量

 

       第三种说法: 只有在必要时才使用后置操作符.++i ,因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。i++ ,而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于int对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大代价。因此,养成使用前置操作这个好习惯,就不必担心性能差异的问题。

 

     第四种说法:(最通俗的)一般来说++i 性能要高些,因为i++的意思,是在原有的i基础上加上1,表面上看假似乎在原有的内存空间上加上一,其实在加1的过程中是重新实例化一个内存空间,再把i加上1的值重定向到新实例化的内存空间中,等系统垃圾清理时会清理原先i的内存空间,如果i自加的次数多的话,这样会给系统带来很多的垃圾空间,而++i则是在自己的内存空间上自加,所以系统损耗少,最终我觉得i++比较好些

 

 

这四种说法的本质其实都是一样的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值