c++ - 常量引用优于非常量引用的性能

标签 c++ performance compiler-construction compiler-optimization

在C++中使用常量引用和非常量引用在性能上有区别吗?如果是,那么哪个更好,为什么?

SystemC中有声明手册指出通过非常量引用传递对象是一种快速解决方案。

最佳答案

不,完全没有区别。 const 仅适用于本地,但任何最新的编译器都能够轻松确定引用是否已更改,因此没有任何区别。

考虑这个场景:

void MyClass::foo(const int& param)
{
    m_myInt1 = param + 1;
    m_myInt2 = param;
}

在这两种情况下,每次访问param 都必须通过内存。为什么?因为 param 可能是 m_myInt1 的别名。

MyClass bar;
bar.foo(bar.m_myInt1);

const 引用仅意味着不能通过该引用修改param。您仍然可以通过一些其他引用来修改它(在本例中,通过 this->m_myInt1)。

关于c++ - 常量引用优于非常量引用的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421884/

相关文章:

sql-server - 通过在 group by 子句中使用的字段上设置索引来提高性能?

r - 处理嵌套命名向量时,有没有比 tidyr::unnest_longer() 更快的替代方法?

c++ - LLVM 代码生成链接器错误

使用 std::future 的 C++ 程序拒绝在 Windows XP Embedded 上运行

c++ - 动态数组与 C++ 中的静态绑定(bind)数组有何不同?

mysql - 是什么导致 MySQL 基数减少?

c - C 编译器如何发现 -lm 指向文件 libm.a?

c++ - 由于在 main 函数之前创建了全局对象,因此从 rand() 获得完全相同的结果

c++ - C++中extern "C"有什么作用?

java - 即时编译器和解释器有什么区别?