【发布时间】:2011-01-06 19:07:19
【问题描述】:
我试图检查拳击和不拳击的表现。 这是一个代码:
public struct p1
{
int x, y;
public p1(int i)
{
x = y = i;
}
}
public class MainClass
{
public static void Main()
{
var al = new List<object>();
var l = new List<p1>();
var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 1000; i++)
{
al.Add(new p1(i));
}
p1 b;
for (int i = 0; i < 1000; i++)
{
b = (p1)al[i];
}
Console.WriteLine(sw.ElapsedTicks);
var time = sw.ElapsedTicks;
for (int i = 0; i < 1000; i++)
{
l.Add(new p1(i));
}
p1 v;
for (int i = 0; i < 1000; i++)
{
v = l[i];
}
var t = sw.ElapsedTicks - time;
Console.WriteLine(t);
Console.ReadKey();
}
}
但对象列表比 p1 列表工作得更快。为什么?
1139
9256
1044
6909
【问题讨论】:
-
顺便说一句,请使用更好的变量和类名,即使在示例代码中也是如此。当遇到一堵代码墙并出现像
p1, al, l, sw, b, v, & t这样的名称时,代码在做什么并不总是很清楚。 -
我刚刚尝试了你的代码,得到了非常不同的结果——第二个是 3-5 倍大的数字。因此,正如 Reed 建议的那样,原因可能在于您的测试配置......
标签: c# .net performance list boxing