【发布时间】:2010-10-03 09:20:23
【问题描述】:
来自SO answer1关于堆和堆栈的问题,它向我提出了一个问题:为什么知道变量的分配位置很重要?
another answer 有人指出堆栈更快。这是唯一的暗示吗?有人可以给出一个简单的分配位置更改可以解决问题(例如性能)的代码示例吗?
请注意,这个问题是特定于 .NET 的
1 问题已从 SO 中删除。
【问题讨论】:
-
未来的 Google 员工请注意,此 c# 问题中的第一个链接已损坏(如图所示),第二个链接 是关于
stack allocation in general并且不特定于 .NET。 -
当前答案中从未提及:在堆栈上分配的值可能必须在堆上重新定位,然后多次返回。这就是装箱和拆箱的作用,例如当使用非通用集合(
object存储在堆中的集合)时,当项目被强制转换为例如int(存储在堆栈中),然后重新装箱(例如,因为它们在方法中作为object传递)。成本是巨大的。它可以通过设计不需要装箱/拆箱的变量和方法参数来减少。 More.
标签: c# .net performance stack heap-memory