对于对象(尤其是字符串),按引用调用比按值调用更快,因为函数调用不需要创建原始对象的副本。使用const,还可以确保引用不被滥用。
我的问题是,如果使用基本类型(如 bool、int 或 double),const 按引用调用是否也会更快。
void doSomething(const string & strInput, unsigned int iMode);
void doSomething(const string & strInput, const unsigned int & iMode);
我的怀疑是,一旦基本类型的字节大小超过地址值的大小,就使用引用调用是有利的。即使差异很小,我也想利用这一优势,因为我经常调用其中一些函数。
附加问题:内联对我的问题的答案有影响吗?
我的怀疑是,一旦基本类型的字节大小超过地址值的大小,就使用引用调用是有利的。即使差异很小,我也想利用这一优势,因为我经常调用其中一些函数。
在 C++ 中,基于预感的性能调整大约有效率为 0%(这是我对统计数据的直觉,它通常有效......)
正确的是const T&
将小于T
if sizeof(T) > sizeof(ptr)
,所以通常是 32 位或 64 位,具体取决于系统。
现在问问自己:
1) 有多少内置类型大于 64 位?
2) 复制 32 位是否值得让代码变得不太清晰?如果您的函数因为没有向其复制 32 位值而变得明显更快,那么也许它没有做太多事情?
3)你真的那么聪明吗? (剧透警告:不。)请参阅这个很好的答案,因为它几乎总是一个坏主意:https://stackoverflow.com/a/4705871/1098041 https://stackoverflow.com/a/4705871/1098041
最终只是按值传递。如果在(彻底)分析之后您发现某些函数是瓶颈,并且您尝试的所有其他优化都不够(并且您应该在此之前尝试其中的大多数),请传递常量引用。
然后看看它不会改变任何东西。翻身哭泣。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)