哪一个更有效:List 或int

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

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

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

Listint[]的包装器,可根据需要resize。 使用JIT内联,它们应该执行几乎相同的操作,但是JIT将更容易从int[]删除额外的性能,因为它是具有专用IL指令的CLI原语。

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

 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 iy = new List(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=" + sw2.ElapsedTicks.ToString()); Console.ReadKey(); 

得到了这个:

 100000 int [] = 1796542
 100000清单= 2517922

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

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

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

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

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