使用ArrayList 这样的非泛型集合过程中,要进行装箱拆箱的操作,会有较大性能的损失
而 List<T> 泛型集合就没有这样的问题
ArrayList的add方法的参数是Object类型
当我们把参数传入时会进行装箱操作,将参数转换成Object类型
示例:
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
//------------------ArrayList ------------------
ArrayList list = new ArrayList();
startTime = DateTime.Now;
//装箱操作
for (int i = 0; i < 1000000; i++)
{
list.Add(i);
}
int iCount = 0;
//拆箱操作
foreach (int i in list)
{
iCount += 1;
}
Console.WriteLine("输出结果 :{0}", iCount.ToString());
endTime = DateTime.Now;
TimeSpan ts = endTime - startTime;
Console.WriteLine("使用ArrayList的结果:{1}" , ts.TotalMilliseconds);
//---------------------List<int>---------------
List<int> list2 = new List<int>();
startTime = DateTime.Now;
for (int i = 0; i < 1000000; i++)
{
list2.Add(i);
}
iCount = 0;
foreach (int i in list2)
{
iCount += 1;
}
Console.WriteLine("输出结果 :{0}", iCount.ToString());
endTime = DateTime.Now;
ts = endTime - startTime;
Console.WriteLine("使用ArrayList的结果:{1}" , ts.TotalMilliseconds);
Console.Read();
结果:
使用 ArrayList 耗时:92s
使用 List<T>耗时:25s