長度動態增加的集合類,例如 ArrayList、Queue等,無需在初始化時指定其容量,集合本身能夠根據需求自動增加集合大小,為程序設計帶來方便。然而,過分依賴這種特性對程序的性能提高並非好的選擇,因為集合動態增加的過程是一個內存重新分配和集合元素復制的過程,會對性能造成一定的影響,所以有必要在集合初始化時指定一個適當的容量。
下面分三種情況來測試指定集合容量對程序性能的影響。
測試代碼
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Collections;
5
6 namespace Test_Console
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 TimeSpan ts = new TimeSpan();
13 DateTime dt = DateTime.Now;
14
15 // 情況一:不指定數組的長度
16
17 for (int i = 0; i < 100000; i++)
18 {
19 ArrayList al = new ArrayList();
20 al.Add("one");
21 al.Add("two");
22 al.Add("three");
23 al.Add("four");
24 al.Add("five");
25 }
26
27 ts = DateTime.Now.Subtract(dt);
28 Console.WriteLine(ts.Milliseconds + " 毫秒");
29
30 dt = DateTime.Now;
31
32 // 情況二:初始化時為集合對象指定適當的容量
33
34 for (int i = 0; i < 100000