【问题标题】:Why small sized struct improves performance over a large sized struct?为什么小型结构比大型结构提高性能?
【发布时间】:2016-02-15 13:01:53
【问题描述】:

在 SO 和互联网上,“为什么 struct 应该是小型的”的许多答案通常是指性能,但没有一个解释 为什么。有没有人能解释一下?

【问题讨论】:

  • 因为它是一个值类型,并且值在传递给方法或从方法返回或分配时被复制。
  • @leppie 那么它是关于更少的内存复制?

标签: .net performance struct clr


【解决方案1】:

Struct 是一种值类型,例如当它被传递给函数时 - 它被复制了。因此,如果 struct 的大小为 512 位 - 所有 512 位都将被复制。如果您将传递引用类型 - 将仅复制对这 512 位的 32/64 位引用。来自MSDN

接下来,引用类型赋值复制引用,而值类型赋值复制整个值。因此,大引用类型的赋值比大值类型的赋值便宜。

【讨论】:

  • 很抱歉在这里分叉:除非您明确通过引用传递,否则 C# 中的所有内容都是按值传递的。当你传递一个引用类型时,引用本身就会被复制。这与 C# 中的引用传递不同。
  • @BrianRasmussen,同意,添加了更多详细信息以回答
  • @BrianRasmussen 引用的内容是关于分配,而不是参数传递。
猜你喜欢
  • 2013-10-19
  • 2011-02-22
  • 2011-09-22
  • 2021-07-08
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多