天天看点

也谈枚举ToString()性能的改进

不过,用<code>switch的做法,个人觉得虽然性能上去了,但是可维护性就下来了,以后该枚举要增加或删除一项,这段switch代码都要改一下,其实该问题的关键就是反射带来的性能损耗,在调用枚举的ToString()方法时,无非就是要得到一个字符串而已,我个人更倾向于用key-value这种经典的键值对来优化。</code>

<code></code>

<code>下面是示例代码:</code>

<code>这样处理后的性能测试代码:(asp.net页中测试的,主要只是对比一下跟传统ToString方法的差异而已)</code>

在我的本本上跑出来的测试结果如下:

Dictionary方法耗时:28

反射方法 耗时:1384

效果还是比较明显的,相对于switch方法而言,没有将结果字符串硬编码在处理函数中,以后枚举中增加或删除某一项,也不影响调用代码,可维护性相对更好一些。但是也应该看到,这是一种空间换时间的做法,避开了反射,但是系统需要额外存储一个字典对象,占用的内存要比原来多一些。

最后:本文仅为技术探讨,没有哪个最好之说,具体如何使用,大家自己酌情考虑。