c – 按值或引用传递标量类型:这有关系吗?

当然,micro-optimization is stupid可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情:

void function( const double& x ) {}

代替:

void function( double x ) {}

因为它被认为“更有效率”.假设这个功能经常在一个程序中被荒谬地称为数百万次;这种“优化”是否重要?

解决方法

长话短说不,特别是在大多数现代平台上,标量甚至浮点类型都通过寄存器传递.我见过的一般经验法则是128字节作为你应该通过值和通过引用传递之间的分界线.

鉴于数据已经存储在寄存器中,您实际上需要处理器转出缓存/内存来获取数据,从而减慢了速度.这可能是一个巨大的打击,取决于数据所在的缓存行是否无效.

在一天结束时,它实际上取决于平台ABI和调用约定.大多数现代编译器甚至会使用寄存器来传递数据结构,如果它们适合(例如,两个短路的结构等),则在调优时.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...