测试程序如下;
1
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
2
stopWatch.Start();
3
for (int i = 0; i < CompareCount; i++)
4
}
2
3
4
结果表,我暂且不画在这上面了,因为比较多,而且不好排版,我只说一下结果,int类型的数据比字符串类型的在GetHashCode()的效率上要高50多倍,比Class的也高50-70倍
察看了GetHashCode()的实现
Int32
1
public override int GetHashCode()
2
2
String
1
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
2
public override unsafe int GetHashCode()
3
2
3
而object的实现方法,我 不太理解:
1
public virtual int GetHashCode()
2
2
object的具体处理方法
而从int,string类型算法可以轻易看出效率差别,虽然string类型还有unsafe .
而且,值类型必须重写GetHashCode。
从这里可以看出,在上次测试中,GetHashCode帮了int类型不少忙呀!