首先定义两个类: 测试结果 Add 1) 调试(1) 数据类型 循环次数 执行时间 执行时间比例 int 100000 227960 1 class 100000 138122 0.6059 Interface 100000 103693 0.4549
1 public interface ITest
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 } 首先,测试设置的速度hashtable.add()
1static void Main(string[] args)
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 }测试获取的代码
1static void Main(string[] args)
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 }
调试(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比较慢