使用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