哪一个更快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相提并论!
我想你的意思是List
和ArrayList
。
你应该使用List
而不是ArrayList
因为它没有所有的装箱\解拳。