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

问题描述 投票:0回答:1

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

pass-by-reference pass-by-value cpu-cache
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.