哪一个更快List 或ArrayList ?

可能重复:
.NET:ArrayList vs List

你好,

我在网上搜索并发现我的冲突答案,到目前为止还不清楚,哪一个更快List or ArrayList ,原因是什么?

我猜List应该更快但不确定,因为在这种特定情况下,甚至ArrayList也被标记为generics类型。

非常感谢,Mani

我为你做了这个。

  static void Main(string[] args) { Stopwatch sw = new Stopwatch(); Console.WriteLine("Adding a million 32bit integers"); sw.Start(); List listA = new List(); for(int i = 0; i < 1000000; i++) { listA.Add(i); } sw.Stop(); Console.WriteLine("List took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); List listB = new List(); for (int i = 0; i < 1000000; i++) { listB.Add(i); } sw.Stop(); Console.WriteLine("List took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); ArrayList listC = new ArrayList(); for(int i = 0; i < 1000000; i++) { listC.Add(i); } sw.Stop(); Console.WriteLine("ArrayList took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("\n Inserting 1000 values"); //Gen list of random numbers Random rand = new Random(12345); int[] insertlocs = new int[1000]; for (int i = 0; i < insertlocs.Length; i++) insertlocs[i] = rand.Next(1, 999999); sw.Start(); for (int i = 0; i < insertlocs.Length; i++) { listA.Insert(insertlocs[i], i); } sw.Stop(); Console.WriteLine("List took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); for (int i = 0; i < insertlocs.Length; i++) { listB.Insert(insertlocs[i], i); } sw.Stop(); Console.WriteLine("List took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); for (int i = 0; i < insertlocs.Length; i++) { listC.Insert(insertlocs[i], i); } sw.Stop(); Console.WriteLine("ArrayList took {0} ms", sw.ElapsedMilliseconds); sw.Reset(); Console.ReadKey(); } 

在我的comp上, List花了13ms, List花了69ms, ArrayList花了40ms。

所以你有它,对于引用类型ArrayList更快。 但对于值类型,您显然应该使用List

编辑:测试插入性能, List花了255ms, List花了723ms, ArrayList花了397ms。 带拳击的 ArrayList几乎与没有拳击的List相提并论!

我想你的意思是ListArrayList

你应该使用List而不是ArrayList因为它没有所有的装箱\解拳。

我猜它取决于,你在谈论查找,插入等吗?