对于对象(尤其是字符串),按引用调用比按值调用要快,因为函数调用不需要创建原始对象的副本。使用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
最终只是传递价值。如果经过(彻底)性能分析后发现某个功能是瓶颈,而您尝试的所有其他优化还不够(您应该在此之前尝试大多数优化),请通过const引用传递。
然后看看它不会改变任何东西。翻滚和哭泣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句