gpt4 book ai didi

c# - 为什么简单的 List 似乎比 ArrayList 慢?

转载 作者:太空狗 更新时间:2023-10-29 20:05:40 24 4
gpt4 key购买 nike

出于好奇,我想测试滴答数以比较 GenericList 和 ArrayList。

对于下面的代码,当我检查秒表时,ArrayList 似乎更快。

我做错了什么或者对此有解释吗? (我相信 List 会快得多)

测试代码和以下输出:

private static void ArrayListVsGenericList()
{
// Measure for ArrayList
Stopwatch w0 = new Stopwatch();
w0.Start();

ArrayList aList = new ArrayList();

for (int i = 0; i < 1001; i++)
{
Point p = new Point();
p.X = p.Y = i;

aList.Add(p);
}

foreach (Point point in aList)
{
int v0 = ((Point) aList[8]).X; //unboxing
}


w0.Stop();

// Measure for Generic List<Point>
Stopwatch w1 = new Stopwatch();
w1.Start();

List<Point> list = new List<Point>();

for (int i = 0; i < 1001; i++)
{
Point p = new Point();
p.X = p.Y = i;

list.Add(p);
}


foreach (var point in list)
{
int v1 = list[8].X;
}

w1.Stop();

Console.WriteLine("Watch 0 : " + w0.ElapsedTicks);
Console.WriteLine("Watch 1 : " + w1.ElapsedTicks);
Console.WriteLine("Watch 0 > Watch 1 : " + (w0.ElapsedTicks > w1.ElapsedTicks));
}

enter image description here

最佳答案

更改您的测试程序以至少运行您的方法两次并忽略第一次运行。结果是由具体类型的代码生成和抖动引起的 List<Point> .

在我的机器上,这会导致以下输出:

  Watch 0 : 154
Watch 1 : 74
Watch 0 > Watch 1 : True

这几乎是人们所期望的。

关于c# - 为什么简单的 List<T> 似乎比 ArrayList 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9563654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com