35 c++
可能重复: 在C++中i ++和++ i之间是否存在性能差异?
我听说在C++中,preincrements(++ i)比postincrements(i ++)快一点.真的吗?这是什么原因?
tva*_*son 55
后增量通常涉及保留前一个值的副本并添加一些额外的代码.预增量只是做它的工作并且不受影响.我通常预先增加,除非语义会改变,实际上需要后增量.
Dre*_*all 9
后增量必须复制对象以返回未增加的值.对于类类型,这可能很重要,但对于"类似int"类型(包括指针),它可能不是.
lar*_*moa 7
普通类型类型(例如int)的差异可能可以忽略不计.我猜测编译器能够优化这种情况(例如,在适当的情况下将后缀转换为前缀增量).但是,对于复杂类型(通常是STL迭代器,差异可能会很明显).在这些情况下,编译器无法切换到前缀,因为操作符实际上可能完全不同.我建议阅读STL迭代器和性能以获得关于使用STL迭代器的后增量的性能损失的一些背景信息(简短的故事:它需要两倍的时间作为预增量).
Ric*_*ton 5
在任何合适的编译器上,如果不使用该值,则++ i和i ++相同。
如果使用该值,如果需要相同的语义,++ i将需要一个临时值来存储预增值。
归档时间:
15 年,9 月 前
查看次数:
36634 次
最近记录: