提问人:Joseph Kirtman 提问时间:9/29/2019 更新时间:11/6/2019 访问量:79
为什么按值传递有时比按引用传递更好
Why passing by value is sometimes better than passing by reference
问:
一个常见的事实是,在某些情况下,最好通过引用传递参数,以避免昂贵的复制。但最近我看了一部《手工英雄》系列,凯西说,如果对象不是太复杂,有时最好按值传递。我不太熟悉低级细节,但我认为它与缓存有关。有人可以对正在发生的事情给出更可靠的解释吗?
答:
0赞
John Zwinck
11/6/2019
#1
如果按值传递,则很可能是通过寄存器传递(假设参数不多,每个参数都不太大)。这意味着被调用者无需执行任何操作即可使用这些值,它们已经在寄存器中。如果通过引用传递,则每个值的地址可能在寄存器中,但这需要取消引用,这需要在 CPU 缓存(如果不是主内存)中查找,这速度较慢。
在许多流行的系统上,您可以传递大约 5-10 个值,每个值的宽度与一个地址一样宽。
评论