首先定义两个类:
1
public
interface
ITest
2
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
void M();
4
}
5
public
class
Test1:ITest
6
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
7
public void M()
8![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
9
}
10
}
11
class
Test
12
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
13
public Test()
14![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15
}
16
}
首先,测试设置的速度hashtable.add()
1
static
void
Main(
string
[] args)
2
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
Hashtable table = new Hashtable();
4![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
6
stopWatch.Start();
7
for (int i = 0; i < CompareCount; i++)
8![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
9
table.Add(i,new Test());
10
}
11
stopWatch.Stop();
12
13
for (int i = 0; i < CompareCount; i++)
14![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
25
table1.Add(i, i);
26
}
27
stopWatch1.Stop();
28
29
for (int i = 0; i < CompareCount; i++)
30![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
40
ITest test2 = new Test1();
41
table2.Add(i,test2);
42
}
43![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
stopWatch2.Stop();
45
for (int i = 0; i < CompareCount; i++)
46![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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
}
测试获取的代码
1
static
void
Main(
string
[] args)
2
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
Hashtable table = new Hashtable();
4
5
for (int i = 0; i < CompareCount; i++)
6![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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比较慢