编译器何时执行RVO?

时间:2013-04-11 14:13:27

标签: c++ return-value-optimization

似乎有很多关于编译器何时执行RVO或者为什么它不会在这种情况下执行它的问题。

阅读http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/后 我似乎无法绕过它。

基本上似乎“通常”编译器会执行某种优化,但在极少数情况下它不能。

如果我理解Dave Abrahams正确的文章,除了可读性更好的原因之外,他并没有真正建议按值返回。对我来说,这表明为了可读性和一致性,总是传递大输出值的引用可能是一个好主意。

所以我应该传入引用来避免复制,还是有办法找出编译器是否会优化副本?

此外,是否努力找出编译器是否会以特定方式进行优化,而不仅仅是通过引用传递?

2 个答案:

答案 0 :(得分:2)

文章的重点是告诉您,不应该担心这个。优化是一个黑盒子,你不应该关心,除非在最罕见的情况下。

编译器在认为RVO适用时执行RVO

答案 1 :(得分:0)

任何体面的编译器都会支持它。只要继续使用它,除非您确定需要支持不支持的编译器。