2 {
3 void M();
4 }
5 public class Test1:ITest
6 {
7 public void M()
8 {
9 }
10 }
11 class Test
12 {
13 public Test()
14 {
15 }
16 }
2 {
3 Hashtable table = new Hashtable();
4
5 System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
6 stopWatch.Start();
7 for (int i = 0; i < CompareCount; i++)
8 {
9 table.Add(i,new Test());
10 }
11 stopWatch.Stop();
12
13 for (int i = 0; i < CompareCount; i++)
14 {
15 Test o = table[i] as Test;
16 }
17
18 string t1 = stopWatch.ElapsedTicks.ToString();
19
20 Hashtable table1 = new Hashtable();
21 System.Diagnostics.Stopwatch stopWatch1 = new System.Diagnostics.Stopwatch();
22 stopWatch1.Start();
23 for (int i = 0; i < CompareCount; i++)
24 {
25 table1.Add(i, i);
26 }
27 stopWatch1.Stop();
28
29 for (int i = 0; i < CompareCount; i++)
30 {
31 int o = (int)table1[i];
32 }
33
34 string t2 = stopWatch1.ElapsedTicks.ToString();
35 Hashtable table2 = new Hashtable();
36 System.Diagnostics.Stopwatch stopWatch2 = new System.Diagnostics.Stopwatch();
37 stopWatch2.Start();
38 for (int i = 0; i < CompareCount; i++)
39 {
40 ITest test2 = new Test1();
41 table2.Add(i,test2);
42 }
43
44 stopWatch2.Stop();
45 for (int i = 0; i < CompareCount; i++)
46 {
47 ITest o = table2[i] as ITest;
48 }
49
50 string t3 = stopWatch2.ElapsedTicks.ToString();
51 Console.WriteLine(t1);
52 Console.WriteLine(t2);
53 Console.WriteLine(t3);
54 Console.WriteLine(((double)Convert.ToInt64(t1)/Convert.ToInt64(t2)).ToString());
55 Console.WriteLine(((double)Convert.ToInt64(t3) / Convert.ToInt64(t2)).ToString());
56 Console.Read();
57
58 }
2 {
3 Hashtable table = new Hashtable();
4
5 for (int i = 0; i < CompareCount; i++)
6 {
7 table.Add(i,new Test());
8 }
9
10 System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
11 stopWatch.Start();
12 for (int i = 0; i < CompareCount; i++)
13 {
14 Test o = table[i] as Test;
15 }
16 stopWatch.Stop();
17 string t1 = stopWatch.ElapsedTicks.ToString();
18
19 Hashtable table1 = new Hashtable();
20
21 for (int i = 0; i < CompareCount; i++)
22 {
23 table1.Add(i, i);
24 }
25
26 System.Diagnostics.Stopwatch stopWatch1 = new System.Diagnostics.Stopwatch();
27 stopWatch1.Start();
28 for (int i = 0; i < CompareCount; i++)
29 {
30 int o = (int)table1[i];
31 }
32 stopWatch1.Stop();
33 string t2 = stopWatch1.ElapsedTicks.ToString();
34 Hashtable table2 = new Hashtable();
35
36 for (int i = 0; i < CompareCount; i++)
37 {
38 ITest test2 = new Test1();
39 table2.Add(i,test2);
40 }
41
42 System.Diagnostics.Stopwatch stopWatch2 = new System.Diagnostics.Stopwatch();
43 stopWatch2.Start();
44 for (int i = 0; i < CompareCount; i++)
45 {
46 ITest o = table2[i] as ITest;
47 }
48 stopWatch2.Stop();
49 string t3 = stopWatch2.ElapsedTicks.ToString();
50 Console.WriteLine(t1);
51 Console.WriteLine(t2);
52 Console.WriteLine(t3);
53 Console.WriteLine(((double)Convert.ToInt64(t1)/Convert.ToInt64(t2)).ToString());
54 Console.WriteLine(((double)Convert.ToInt64(t3) / Convert.ToInt64(t2)).ToString());
55 Console.Read();
56
57 }
测试结果
Add
1) 调试(1)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
227960 |
1 |
class |
100000 |
138122 |
0.6059 |
Interface |
100000 |
103693 |
0.4549 |
调试(2)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
282564 |
1 |
class |
100000 |
156588 |
0.5542 |
Interface |
100000 |
148623 |
0.5230 |
2)
运行(1)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
155927 |
1 |
class |
100000 |
191537 |
1.2284 |
Interface |
100000 |
127647 |
0.8186 |
运行(2)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
151806 |
1 |
class |
100000 |
222375 |
1.4649 |
Interface |
100000 |
256467 |
1.6894 |
运行(3)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
99465 |
1 |
class |
100000 |
235016 |
2.3628 |
Interface |
100000 |
201519 |
2.0260 |
从上面几个表可以得出,在向Hashtable里面添加数据的时候,当value为值类型的时候最快,interface次之,class慢
2. 查询
1. 调试(1)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
52360 |
1 |
class |
100000 |
71250 |
1.3608 |
Interface |
100000 |
291566 |
5.5685 |
2.
调试(2)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
53645 |
1 |
class |
100000 |
55679 |
1.0379 |
Interface |
100000 |
310780 |
5.7932 |
运行(1)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
53013 |
1 |
class |
100000 |
55414 |
1.0453 |
Interface |
100000 |
282835 |
5.3352 |
运行(2)
数据类型 |
循环次数 |
执行时间 |
执行时间比例 |
int |
100000 |
53647 |
1 |
class |
100000 |
66768 |
1.2446 |
Interface |
100000 |
204599 |
3.8138 |
在查询哈希表的时候,int最快,class次之,interface比较慢