为什么通过价值传递有时比通过引用传递更好

时间:2019-09-28 20:33:04

标签: pass-by-reference pass-by-value cpu-cache

一个常见的事实是,在某些情况下最好通过引用传递参数以避免昂贵的复制。但是最近我看了一个手工制作的英雄系列,凯西说,如果物体不是太复杂,有时最好通过价值传递它。我对底层细节不太熟悉,但是我认为它与缓存有关。有人可以对发生的事情给出更扎实的解释吗?

1 个答案:

答案 0 :(得分:0)

如果按值传递,则很可能会通过寄存器传递(假设参数不太多,并且每个参数都不太大)。这意味着被调用者无需执行任何操作即可使用这些值,因为它们已经在寄存器中。如果通过引用传递,则每个值的地址可能在寄存器中,但这需要取消引用,这需要在CPU缓存(如果不是主内存)中查找,这会比较慢。

在许多流行的系统上,您可以传递大约5至10个值,每个值与地址一样宽。