我一直听说确保最佳性能的良好做法是:
- 通过基本类型(
int
, double
...) 按价值
- 通过常量引用传递类
如今,使用 C++11 并在编译器下进行全面优化,当通过 const 引用传递基本类型时是否会产生开销?
而且,当T
is int
将实现以下功能:
template <typename T> inline void f(const T& x);
慢于:
template <typename T> inline void f(const T x);
如果编译器确实内联代码(这对于简单模板来说很常见),那么就不会有什么区别。当函数无法内联并且调用外联定义时,问题就会变得明显。
在这种情况下,传递引用可能会在访问变量时涉及额外的取消引用(至少是第一次,可能多次)。同时,如果参数是按值传递的,则编译器可以执行更积极的优化,因为它知道该变量无法在当前函数之外访问/修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)