关于泛型和非泛型

View Code
 1 //用来记录开始和结束的时间
2 DateTime startTime = new DateTime();
3 DateTime endTime = new DateTime();
4
5 //定义集合类型ArrayList的一个实例
6 ArrayList list = new ArrayList();
7
8 //取得当前时间
9 startTime = DateTime.Now;
10
11 //★★★★★★★★①使用ArrayList类★★★★★★★★
12 //ArrayList的add方法的参数是Object型,
13 //当我们把int型作为参数传入的时候需要做装箱操作
14 //装箱操作将值类型转化为Object类型
15 for (int i = 0; i < 1000000; i++)
16 {
17 list.Add(i);
18 }
19
20 int iCount = 0;
21 //当我们使用int型的时候需要做拆箱操作操作
22 //拆箱操作将应用类型转化为Object类型,拆箱过程要做大量的工作
23 foreach (int i in list)
24 {
25 iCount += 1;
26 }
27
28 Console.WriteLine("使用ArrayList的结果 : {0}", iCount.ToString());
29
30 //取得结束时间并计算差值
31 endTime = DateTime.Now;
32 TimeSpan ts = endTime - startTime;
33
34 Console.WriteLine("使用ArrayList的耗时 :" + ts.TotalMilliseconds);
35
36 //★★★★★★★★②使用泛型类★★★★★★★★
37 //使用List的泛型定义List<T>,int类型在编译器动态生成的类中本替换为int型
38 //执行过程中不再执行装箱拆箱操作
39 List<int> list2 = new List<int>();
40
41 startTime = DateTime.Now;
42
43 for (int i = 0; i < 1000000; i++)
44 {
45 list2.Add(i);
46 }
47
48 iCount = 0;
49 foreach (int i in list2)
50 {
51 iCount += 1;
52 }
53
54 Console.WriteLine("使用泛型的结果 : {0}", iCount.ToString());
55
56 endTime = DateTime.Now;
57 ts = endTime - startTime;
58
59 Console.WriteLine("使用泛型的耗时 :" + ts.TotalMilliseconds);
60
61 //显示三次结果如下
62
63 /* 第一次
64 * 使用ArrayList的耗时 :92
65 * 使用泛型的耗时 :25
66 *
67 * 第二次
68 * 使用ArrayList的耗时 :96
69 * 使用泛型的耗时 :22
70 *
71 * 第三次
72 * 使用ArrayList的耗时 :90
73 * 使用泛型的耗时 :22
74 *
75 * 由此可以明显看出两者的差别
76 * 这里仅仅是时间上的,并不包括对内存消耗的统计
77 *
78 * ※但是也要注意到差别的单位是毫秒,
79 * 我这里只想说明用泛型是有好处的,
80 * 但也不可过分追求程序的孰优孰劣,
81 * 总之要把握好这个度,适合自己的才是最好的
82 * O(∩_∩)O~
83 */
84
85 Console.Read();

posted @ 2011-10-19 07:18  JaysD  阅读(94)  评论(0编辑  收藏  举报