一个常见的事实是,在某些情况下最好通过引用传递参数以避免昂贵的复制。但是最近我看了一个手工制作的英雄系列,凯西说,如果物体不是太复杂,有时最好通过价值传递它。我对底层细节不太熟悉,但是我认为它与缓存有关。有人可以对发生的事情给出更扎实的解释吗?
答案 0 :(得分:0)
如果按值传递,则很可能会通过寄存器传递(假设参数不太多,并且每个参数都不太大)。这意味着被调用者无需执行任何操作即可使用这些值,因为它们已经在寄存器中。如果通过引用传递,则每个值的地址可能在寄存器中,但这需要取消引用,这需要在CPU缓存(如果不是主内存)中查找,这会比较慢。
在许多流行的系统上,您可以传递大约5至10个值,每个值与地址一样宽。