哪一个更有效:List <int>或int [] </int>

时间:2009-07-23 00:06:22

标签: c# list

有人可以告诉我List<int>int[]之间的效率更高。因为我正在研究一个项目,你可能知道效率现在是如此重要的关注点。

如果您在帖子中添加了一些介绍性说明,那就太棒了:)。

6 个答案:

答案 0 :(得分:81)

(list should be resizable) ? List<int> : int[]

List<int>int[]的包装器,可根据需要调整大小。使用JIT内联,它们应该以相同的方式执行 ,但是JIT将更容易从int[]中删除额外的性能,因为它是具有专用IL指令的CLI原语。

答案 1 :(得分:13)

只是为了它的乐趣,我跑了这个:

int cap = 100000;

Stopwatch sw1 = new Stopwatch();
sw1.Start();

int[] ix = new int[cap];
for (int x = 0; x < cap; x++)
{
    ix[x] = 1;
}

sw1.Stop();

Stopwatch sw2 = new Stopwatch();
sw2.Start();
List<int> iy = new List<int>(cap);
for (int y = 0; y < cap; y++)
{
    iy.Add(y);
}
sw2.Stop();

Console.WriteLine(cap.ToString() + "     int[]=" + sw1.ElapsedTicks.ToString());
Console.WriteLine(cap.ToString() + " List<int>=" + sw2.ElapsedTicks.ToString());

Console.ReadKey();

得到了这个:

100000 int[]=1796542
100000 List=2517922

我在经过的毫秒中尝试了它,分别得到0和1。显然int []速度更快,但除非你说的是大型数组,否则我认为它只是名义上的。

答案 2 :(得分:9)

如果您确切知道集合中将包含多少元素,并且不需要List<int> AND的任何额外功能(这是一个非常严重的 AND )< em>性能是一个严重问题,请使用int[]。否则坚持使用List<int>

答案 3 :(得分:7)

后者更有效。
在源代码中,List<>由某些数组命名 例如,List<Type> aa=new List<Type>();
通常,声明array Type[],它的长度是一定数量。 换句话说,如果你宣布一个List<>,则已经使用了一个很大的空间 如果List<>'s元素不合适,则应将数组复制到另一个较大的元素。 因此,最好不要使用List<> 更好的使用方法是声明它的长度 列出aa=new List<Type>(10);

答案 4 :(得分:6)

List在内部使用数组,因此使用数组(正确)总是更多(或至少)有效。

答案 5 :(得分:4)

如果您计划使用列表提供的任何功能(搜索,排序,删除,调整大小),那么我会选择一个列表,因为这些功能很可能已经非常优化,您将无法更好地编写他们的版本。