在我正在编写的程序(游戏引擎)中,我想要一种将整数值(ID)映射到对象数组的有效方法。我认为最适合的数据结构是HashMap
,但我也希望能够遍历对象数组。
使用:
迭代HashMap
的值要慢多少
for val in map.values()
与拥有Vec
并迭代它相比:
for val in vec.iter()
然后有另一个系统将ID映射到向量的不同索引?
HashMap
方法还有其他缺点吗?
答案 0 :(得分:4)
对HashMap
进行迭代会更慢,只是因为HashMap
中的值不是那么紧密:有空插槽。
如果您的峰值使用率很高,那么有多少个空插槽将取决于您的使用情况,但是迭代现在大部分为空的HashMap
将比在Vec
上迭代更慢紧凑。
对于这个特殊用例,我建议ordermap
结合HashMap
和Vec
的良好特征:
HashMap
,Vec
中,没有交错空槽,因此迭代具有与迭代Vec
相同的性能。