加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:25:35 所属栏目:百科 来源:网络整理
导读:当然,micro-optimization is stupid可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情: void function( const double x ) {} 代替: void function( double x ) {} 因为它被认为“更有效率”.假设这个功能经常在一个程序中被荒谬地称为数
当然,micro-optimization is stupid可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情:

void function( const double& x ) {}

代替:

void function( double x ) {}

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读