sealed class A
{
public int X;
public int Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个新的A实例,它需要大约550ms才能访问Y 100,000,000次,而访问X大约需要250ms.我将它作为发布版本运行,它对于该属性来说仍然要慢得多.为什么.NET不优化Y到字段?
编辑:
A t = new A();
t.Y = 50;
t.X = 50;
Int64 y = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 100000000; i++)
y += t.Y;
sw.Stop();
Run Code Online (Sandbox Code Playgroud)
那是我用来测试的代码,我正在改变tY到tX来测试X. 我也在发布版本中.