哪一个更有效:List 或int
有人能告诉我哪一个在List
和int[]
之间更有效。 因为我正在研究一个项目,你可能知道效率是如此重要的关注点。
如果您在post中添加了一些介绍性说明,那就太棒了:)
(list should be resizable) ? List : int[]
List
是int[]
的包装器,可根据需要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
通常,声明一个array Type[]
,它的长度是一定的数字。 换句话说,如果声明List<>
,则已经使用了大空间。
如果List<>'s
元素超出,则应将数组复制到另一个更大List<>'s
元素。 因此,最好不要使用List<>
。
更好的使用方法是声明它的长度。
列出aa=new List
List在内部使用数组,因此使用数组(正确)将始终更多(或至少)有效。
如果您计划使用列表提供的任何function(搜索,排序,删除,resize),那么我会选择一个列表,因为这些function很可能已经非常优化,您将无法编写更好的版本。