【发布时间】:2010-01-25 11:31:38
【问题描述】:
您如何使用返回值优化?
在任何情况下,我可以信任现代编译器来使用优化,还是应该始终以安全的方式返回某种类型的指针/使用引用作为参数?
是否存在无法进行返回值优化的已知情况? 在我看来,返回值优化对于编译器来说是相当容易执行的。
【问题讨论】:
-
请记住,当编译器确定 RVO 在特定情况下实际上不是优化时,它可能会决定不执行此操作。因此,您不仅要相信编译器会在有用时执行它,而且您还必须相信它在不合适时不执行。
-
澄清一下:不合适的常见情况是返回的类型可以在寄存器中传递,例如
Radians类。 RVO 技术使用分配在堆栈上的空间,因此具有访问内存的开销。 -
@MSalters 好的,很有趣。基本上,我感兴趣的优化是避免例如 std::vector 被复制。
标签: c++ variable-assignment return-value-optimization