C# 泛型集合List和非泛型集合ArrayList的性能比较
来源:互联网 发布:淘宝新手卖家 编辑:程序博客网 时间:2024/06/02 15:55
在使用ArrayList这样的非泛型集合的过程中,要进行装箱和拆箱操作,会有比较大的性能损失,
而使用泛型集合就没有这样的问题。
现做一简单测试如下:
- //用来记录开始和结束的时间
- DateTime startTime = new DateTime();
- DateTime endTime = new DateTime();
- //定义集合类型ArrayList的一个实例
- ArrayList list = new ArrayList();
- //取得当前时间
- startTime = DateTime.Now;
- //★★★★★★★★①使用ArrayList类★★★★★★★★
- //ArrayList的add方法的参数是Object型,
- //当我们把int型作为参数传入的时候需要做装箱操作
- //装箱操作将值类型转化为Object类型
- for (int i = 0; i < 1000000; i++)
- {
- list.Add(i);
- }
- int iCount = 0;
- //当我们使用int型的时候需要做拆箱操作操作
- //拆箱操作将应用类型转化为Object类型,拆箱过程要做大量的工作
- foreach (int i in list)
- {
- iCount += 1;
- }
- Console.WriteLine("使用ArrayList的结果 : {0}", iCount.ToString());
- //取得结束时间并计算差值
- endTime = DateTime.Now;
- TimeSpan ts = endTime - startTime;
- Console.WriteLine("使用ArrayList的耗时 :" + ts.TotalMilliseconds);
- //★★★★★★★★②使用泛型类★★★★★★★★
- //使用List的泛型定义List<T>,int类型在编译器动态生成的类中本替换为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("使用泛型的耗时 :" + ts.TotalMilliseconds);
- //显示三次结果如下
- /* 第一次
- * 使用ArrayList的耗时 :92
- * 使用泛型的耗时 :25
- *
- * 第二次
- * 使用ArrayList的耗时 :96
- * 使用泛型的耗时 :22
- *
- * 第三次
- * 使用ArrayList的耗时 :90
- * 使用泛型的耗时 :22
- *
- * 由此可以明显看出两者的差别
- * 这里仅仅是时间上的,并不包括对内存消耗的统计
- *
- * ※但是也要注意到差别的单位是毫秒,
- * 我这里只想说明用泛型是有好处的,
- * 但也不可过分追求程序的孰优孰劣,
- * 总之要把握好这个度,适合自己的才是最好的
- * O(∩_∩)O~
- */
- Console.Read();
- C# 泛型集合List和非泛型集合ArrayList的性能比较
- C# 泛型集合List和非泛型集合ArrayList的性能比较
- C# 泛型集合List和非泛型集合ArrayList的性能比较
- 泛型集合List<T>和非泛型集合ArrayList性能比较
- ArrayList 类和List泛型集合
- C#ArrayList 集合 和list<t>泛型集合
- C# ArrayList 和 List 集合类型
- ArrayList/List 泛型集合
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- 【集合】ArrayList和Vector的比较总结
- C# 集合( Stack和Queue 、Dictionary、 ArrayList和List<T> )
- c# 集合类:ArrayList,StringCollection,Hashtable,List
- c# 集合类:ArrayList,StringCollection,Hashtable,List
- C# List泛型集合
- C# List泛型集合
- C# List泛型集合
- vim taglist 使用方法
- vs2010使用devExpress第三方组件
- tomtom navigon sygic 比较
- PS返回进程状态的意思
- 数据库存储的一些小知识
- C# 泛型集合List和非泛型集合ArrayList的性能比较
- c#操作word VBA简单应用
- 各种编码方式
- Javascript的执行过程详细研究
- 怎么样安装arm-linux-gcc
- threadpool
- .NET 的绘图控件ZedGraph
- MVC下载文件方式
- 交换机的基本配置