传递对输出位置的引用与使用return

Pau*_*aul 10 c++ performance pass-by-reference

在调用提供简单数据类型的函数时,哪个更好的性能 - 让它填充内存位置(通过指针传递)或让它返回简单数据?

我在这里过度简化了返回静态值5的示例,但假设确定返回值的查找/功能在现实生活中是动态的......

传统逻辑会告诉我第一种方法更快,因为我们通过引用操作而不是像第二种方法那样返回副本......但是,我想要别人的意见.

谢谢

void func(int *a) { *a = 5; }

要么...

int func() { return 5; }

Gre*_*ill 8

通常,如果您的函数就像一个函数(即返回一个逻辑值),那么最好使用它int func().即使返回值是一个复杂的C++对象,也有一个称为返回值优化的常见优化,它避免了不必要的对象复制,并使这两种形式在运行时性能上大致相同.