4

我一直听说确保最佳性能的一个好做法是:

  • 按值传递基本类型 ( int, double...)
  • 通过 const 引用传递类

如今,在编译器下使用 C++11 和完全优化,当通过 const 引用传递基本类型时是否有开销?

此外,什么时候Tint出现以下功能:

template <typename T> inline void f(const T& x);

慢于:

template <typename T> inline void f(const T x);
4

1 回答 1

6

如果编译器真的内联代码(这在简单模板中很常见),则没有区别。当函数不能被内联时,问题变得很明显,并且调用了外联定义。

在这种情况下,传递引用可能会在访问变量时涉及额外的取消引用(至少是第一次,可能是多次)。同时,如果参数是按值的,编译器可以执行更积极的优化,因为它知道变量不能在当前函数之外访问/修改。

于 2013-07-22T04:39:44.660 回答