標籤:
比較泛型集合和非泛型集合在運行中的效率:
using System;using System.Collections;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ListDemo{ class Program { static void Main(string[] args) { Console.WriteLine("開始測試ArrayList:"); TestBegin(); TestArrayList(); TestEnd(); Console.WriteLine("開始測試List<T>:"); TestBegin(); TestGenericList(); TestEnd(); Console.Read(); } static int collectionCount = 0; static Stopwatch watch = null; private static int testCount = 10000000; static void TestBegin() { GC.Collect();//強制對所有代碼進行即時記憶體回收 GC.WaitForPendingFinalizers();//掛起線程,執行終結器隊列中的終結器(析構方法) GC.Collect();//再次對所有代碼進行記憶體回收,主要包括從終結器隊列中出來的對象 collectionCount = GC.CollectionCount(0);//返回在0代中執行的記憶體回收次數 watch = new Stopwatch(); watch.Start(); } static void TestEnd() { watch.Stop(); Console.WriteLine("耗時:" + watch.ElapsedMilliseconds); Console.WriteLine("記憶體回收次數:"+(GC.CollectionCount(0)-collectionCount)); } static void TestArrayList() { ArrayList al = new ArrayList(); int temp = 0; for (int i = 0; i < testCount; i++) { al.Add(i); temp = (int) al[i]; } al = null; } static void TestGenericList() { List<int> listT = new List<int>(); int temp = 0; for (int i = 0; i < testCount; i++) { listT.Add(i); temp = listT[i]; } listT = null; } }}
如果集合的數目固定並且不涉及轉型,使用數組效率高否則就使用List<T>.
C# 泛型集合