如果我只使用C ++中所有函数的引用传递,那么性能会得到改善吗?如果是这样,它会是多少钱?

时间:2018-05-29 04:27:56

标签: c++ pass-by-reference pass-by-value

由于通过引用传递没有复制过程,如果我使用通过引用传递(当满足情况时)所有函数,性能会提高吗? (这有所不同)

(据我在Cpp编程中学到的,传递值意味着复制值并将其传递给函数,而通过引用传递意味着为变量创建另一个“占位符”或“名称”而不复制值。)

1 个答案:

答案 0 :(得分:1)

除非编译器对参数进行了优化(也可以使用pass-by-value),否则每个"引用"在内部只是一个指针。

因此,假设64位指针,如果你通过引用传递一个复制&lt;的对象,它可能会损害性能。复制时为8个字节(大小为<8字节的基本类型,或者没有复杂复制构造函数的用户定义类)。

当然,您应该始终对代码进行分析,以确定是否存在任何明显的差异。如果功能足够大,差异可以忽略不计;如果函数很小,你应该只允许编译器内联它,使参数传递方法无关紧要。

对于(大)大于8字节的用户定义类,或者具有复杂的复制构造函数,pass-by-reference通常比pass-by-value更快。