【发布时间】:2012-12-02 17:35:07
【问题描述】:
我想知道在每一对循环代码中,某个版本是否比第二个版本消耗更少的内存,以及在某些版本中我们是否确实在每个循环周期中为变量分配了新空间。
注意:2 很明显,1 和 3 更有趣..
1。
While(!exit)
{
int x = 5;
}
对比:
int x= 0;
While(!exit)
{
x = 5;
}
引用类型的相同问题: 2。
While(!exit)
{
Point p = new Point();
p.x = 5;
}
对比:
Point p = new Point();
While(!exit)
{
p.x = 5;
}
3。没有分配的引用类型类似于1?:
While(!exit)
{
Point p = point1;
}
对比:
Point p = null;
While(!exit)
{
p = point1;
}
【问题讨论】:
-
我认为编译器会为你优化它。
-
出于所有实际目的,这并不重要。使用范围作为变量声明决策的基础,而不是性能。
-
顺便说一句:点是
struct,所以值类型。 -
假设 Point 是我写的,它是一个类
-
是值类型(struct)还是引用类型(class),与问题无关。两种情况都有存储要求。对于值类型,存储要求是该类型的完整存储要求。在引用类型的情况下,存储要求是引用(x86 为 4 字节,x64 为 8 字节)。
标签: c# memory memory-management