【发布时间】:2012-06-27 01:32:33
【问题描述】:
据推测,C# 结构相对于轻量级数据对象的类具有一些性能优势,因为它们完全存储在堆栈上,而不是分配堆内存。
如果该结构的成员之一是 int[] 或结构数组,那么这对分配有什么影响以及我可能从中获得的任何其他性能优势?
例子:
struct A
{
int foo;
int bar;
}
struct B
{
int[] foos;
A[] bars;
}
结构 A 与结构 B 在性能、内存使用等方面有何不同?
【问题讨论】:
-
“据说 C# 结构比轻量级数据对象的类有一些性能优势,因为它们完全存储在堆栈上,而不是分配堆内存。” - 是的,在某些情况下在这种情况下,值类型语义更可取。在担心您的问题之前,我会先阅读值类型与引用类型。一旦你这样做了,你将能够自己回答这个问题:)
-
@Ed S. 我有一个不错的理解,并有一个初步的答案。我只是把它放在那里,看看我在研究中是否遗漏了什么。
-
@CodeFusionMobile:好的,但是这里有很多重要的细节。例如,在托管堆上分配的类型的结构成员实际上仍然在堆上分配。如果你还没有读过这篇文章,a good read on the subject here
标签: c# performance optimization