摘要:
在某些场景下, 对于内存数据结构, 当需要用多个键值来唯一确定一个值的时候, 我们经常会面临这样一个选择:
* 组合键: 将多个键组合成一个组合键, 在一个词典中存储和定位数据;
* 多级词典: 使用多级词典, 在多级词典中依次保存键-词典的键值对, 定位数据时由键依次确定下一级词典, 最终确定所在的数据;
抛开内存数据的空间效率不谈, 以上这两类做法的主要时间效率影响在于:
* 使用多级词典可以降低散列冲突及计算的时间消耗, 由于人为地添加了数据的分类, 数据散列的冲突概率也被大大降低.
* 使用多级词典在创建子Dictionary的时候带来额外的时间消耗,
* 使用多级词典可能会影响散列的数据均匀度, 这方面的影响类似于桶算法中的均匀度. 不均匀的桶长度会降低散列的效率.
* 使用组合键时所采用的组合键生成算法的生成效率和算法对散列值分布的影响.
* 在线程安全的要求对性能的影响. 在加锁的情况下, 锁的申请和释放对时间性能也有比较大的影响.
那么, 综合这些因素, 最终哪种做法会有比较好的性 阅读全文