2 mengxiang tianji mengxiang_tianji 于 2016.03.27 14:53 提问

前自增和后自增效率比较
    书上说,对于C++中内建数据类型,前自增和后自增效率差别不大,对于自定义数据类型,后自增要返回对象的值并在原对象中自增,导致产生复制开销,引起效率降低。
    问题:1、无论内建还是自定义数据类型,单条语句自增运算,后自增和前自增效果一样,编译器对于两者的执行差不多,后自增应该没必要复制吧?
                        2、假如自定义数据类型中只含有一个内置数据类型成员并且定义该数据类型的自增运算,编译器会不会将它的运算优化成只按单个数据类型处理?

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.27 17:47

这是编译器优化的问题。前自增,原来的变量拥有自增前的值,所以拷贝在前,后自增,拷贝在后,但是如果后自增之后没有进一步改变变量,复制会被优化掉,这才是后自增性能高的原因,但是这种性能高只是假想而已,因为必须满足一个前提,后自增后这个变量没有修改操作。

oyljerry
oyljerry   Ds   Rxr 2016.03.27 17:41

如果不是特意追求这个 不需要特别考虑这个区别编译器已经做了各种优化 直接按习惯来添加

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!