【问题标题】:Why passing by value is sometimes better than passing by reference为什么按值传递有时比按引用传递更好
【发布时间】:2020-01-28 16:43:46
【问题描述】:

在某些情况下最好通过引用传递参数以避免昂贵的复制,这是一个普遍的事实。但最近我看了一个 Handmade Hero 系列,其中 Casey 说如果对象不是太复杂,有时最好按值传递。我对低级细节不太熟悉,但我认为它与缓存有关。有人可以对发生的事情给出更可靠的解释吗?

【问题讨论】:

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


    【解决方案1】:

    如果您按值传递,您很可能通过寄存器传递(假设参数不多且每个参数都不是太大)。这意味着被调用者不需要做任何事情来使用这些值,它们已经在寄存器中。如果通过引用传递,每个值的地址可能在寄存器中,但这需要取消引用,这需要查看 CPU 缓存(如果不是主内存),这会更慢。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 2012-05-05
      • 1970-01-01
      • 2011-08-12
      • 2011-07-17
      • 2012-01-16
      • 2012-10-14
      相关资源
      最近更新 更多