上篇文章中,测试了一下值类型数据和引用类型数据在hashtable中插入和读取的性能,测试结果和本人预期也有一些出入,msdn有一篇文章介绍在box,unbox的时候,性能关系为:class>interface>int,原文:Open the Box! Quick,进一步分析了上篇测试,发现其实影响测试性能还有其它几个方面的因素,本篇就针对不同数据类型在GetHashCode()上面的消耗
测试程序如下;
 1值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode() System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
 2值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()            stopWatch.Start();
 3值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()            for (int i = 0; i < CompareCount; i++)
 4        }

结果表,我暂且不画在这上面了,因为比较多,而且不好排版,我只说一下结果,int类型的数据比字符串类型的在GetHashCode()的效率上要高50多倍,比Class的也高50-70倍
察看了GetHashCode()的实现
Int32
     
1值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()public override int GetHashCode()
2

String

 1值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
 2值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()public override unsafe int GetHashCode()
 3

而object的实现方法,我 不太理解:
1值类型和引用类型在hashtable里面性能比较分析1 -GetHashCode()public virtual int GetHashCode()
2

 object的具体处理方法
而从int,string类型算法可以轻易看出效率差别,虽然string类型还有unsafe .

而且,值类型必须重写GetHashCode。
从这里可以看出,在上次测试中,GetHashCode帮了int类型不少忙呀!

相关文章:

  • 2022-12-23
  • 2021-11-07
  • 2022-12-23
  • 2021-10-26
  • 2021-12-12
  • 2021-06-29
  • 2021-06-12
猜你喜欢
  • 2021-10-02
  • 2022-12-23
  • 2021-07-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案