c++ - 当应用于原始类型时,通过引用调用 const 是否会提高性能?

标签 c++ performance call-by-value

关于对象(尤其是字符串),按引用调用比按值调用更快,因为函数调用不需要创建原始对象的拷贝。使用 const,还可以确保引用不被滥用。

我的问题是,如果使用 bool、int 或 double 等原始类型,const 按引用调用是否也更快。

void doSomething(const string & strInput, unsigned int iMode);
void doSomething(const string & strInput, const unsigned int & iMode);

我的怀疑是,一旦原始类型的字节大小超过地址值的大小,就使用按引用调用是有利的。即使差异很小,我也想利用,因为我经常调用其​​中一些函数。

附加问题:内联会影响我的问题的答案吗?

最佳答案

My suspicion is that it is advantageous to use call-by-reference as soon as the primitive type's size in bytes exceeds the size of the address value. Even if the difference is small, I'd like to take the advantage because I call some of these functions quite often.

基于预感的性能调整在 C++ 中的工作时间约为 0%(这是我对统计的直觉,它通常工作...)

如果 sizeof(T) > sizeof(ptr)const T& 将小于 T 是正确的,所以通常32 位或 64 位,具体取决于系统..

现在问问自己:

1) 有多少内置类型大于 64 位?

2) 复制 32 位是否值得让代码变得不那么清晰?如果您的函数因为您没有向其复制 32 位值而变得明显更快,那么它可能作用不大?

3) 你真的那么聪明吗? (剧透警报:不。)看到这个很好的答案,为什么它几乎总是一个坏主意: https://stackoverflow.com/a/4705871/1098041

最终只是按值传递。如果在(彻底)分析之后您发现某些功能是瓶颈,并且您尝试的所有其他优化都不够(并且您应该在此之前尝试其中的大部分),则通过常量引用。

然后看到它没有改变任何东西。翻滚和哭泣。

关于c++ - 当应用于原始类型时,通过引用调用 const 是否会提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29141682/

相关文章:

c - 传递地址,但它的工作方式就像 C 中的值调用?

c++ - Qt - 显示通过 QProcess 运行的 PowerShell 结果

c++ - 使用 dynamic_cast 转换 const 类

performance - 为什么这两个看似相同的 Cypher 查询在速度上差异如此之大?

javascript - 哪个 JS 基准站点是正确的?

programming-languages - 什么是按需调用?

C++:寻找循环边最小和的快速算法

c++ - 获取 winlogon.exe 的 session ID 和进程 ID

Eclipse 和 Google 插件 (gwt) 非常慢

abap - EXPORTING方法参数如何按值传递?