gpt4 book ai didi

c++ - 按值或引用传递标量类型 : does it matter?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:37 26 4
gpt4 key购买 nike

授予,micro-optimization is stupid并且可能是实践中许多错误的原因。尽管如此,我还是看到很多人这样做:

void function( const double& x ) {}

代替:

void function( double x ) {}

因为据说它“更有效率”。假设 function 在程序中经常被调用,数百万次;这种“优化”到底重要吗?

最佳答案

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

鉴于数据已经存储在寄存器中这一事实,您实际上是在通过要求处理器去缓存/内存获取数据来减慢速度。这可能是一个巨大的打击,具体取决于数据所在的缓存行是否无效。

归根结底,这实际上取决于平台 ABI 和调用约定是什么。大多数现代编译器甚至会使用寄存器来传递数据结构(如果它们适合)(例如,两个短裤的结构等),当优化打开时。

关于c++ - 按值或引用传递标量类型 : does it matter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com