【发布时间】:2013-04-11 14:13:27
【问题描述】:
似乎有很多关于编译器何时会执行 RVO 或为什么它在这样那样的情况下不执行它的问题。
看完http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/ 我似乎也无法理解它。
基本上,编译器似乎“通常”会执行某种优化,但在极少数情况下它不能。
如果我正确理解了 Dave Abrahams 的文章,他并不真正建议按值返回,除非出于更好的可读性的原因。对我来说,这表明为了可读性和一致性,始终为大输出值传递引用可能是个好主意。
那么我应该传递引用以避免复制还是有什么方法可以确定编译器是否会优化掉一个副本?
另外,找出编译器是否会以特定方式进行优化的努力实际上比仅仅通过引用传递要少吗?
【问题讨论】:
-
它是特定于实现的,因此您必须参考您正在使用的特定编译器。而且由于大多数广泛使用的都支持它,因此您可以安全地按值返回。
标签: c++ return-value-optimization