Dictionary的遍历速度和List的比较
1.概念
List<T>是T的集合
Dictionary<T1, T2>字典,包含Key和Value,通过Key可以快速查找到Value
2.Dictionary<T1, T2>和List的简单存储原理
Dictionary<T1, T2>根据Key通过Hash计算得到应该存放的虚拟内存地址,当按照Key进行查找的时候,首先就是根据Key计算出其存放的虚拟内存地址,找到对应的数据。
List<T>在内存中是连续的
3.根据存储原理,分析
在宏观上Dictionary<T1, T2>的内存地址不是连续的,虽然微软对这个算法进行了很大的优化,但是正因为这种不连续,在遍历的时候,Dictionary会产生大量的内存换页的操作,然而List只需要进行最少的内存换页即可。这就是List和Dictionary在遍历时效率差异的根本原因。
4.不建议遍历Dictionary
Dictionary的遍历效率很差,不建议进行遍历Dictionary。
Dictionary除了要储存的Value之外,还需要一个Key,造成了内存空间的双倍浪费。
从内存空间来说,List只需要在原有的地址基础上向后延续即可,然而Dictionary需要经过复杂的Hash计算,造成性能上的损耗。