基于哈希的 map 和 set
简述
基于哈希的 map
和 set
,它们分别叫做 unordered_map
, unordered_set
。数据分布越平均,性能相较 map
和 set
来说提升就更大。但由于它们基于哈希,所以并不像 map
和 set
一样能自动排序;它们都是无序的。
我做了一个测试:随机生成 $10^7$ 个 int
范围内的整数(平均分布),然后将其分别插入 map
和 unordered_map
,再完整的做一次查询,查看时间和内存上的消耗。
测试结果
结构 | 总耗时 | 插入耗时 | 查询耗时 | 内存 |
---|---|---|---|---|
map | 18,041 MS | 10,299 MS | 7,742 MS | 230.7 MB |
unordered_map | 7,138 MS | 5,426 MS | 1,712 MS | 212.0 MB |
当数据分布平均时,从时间上看,两者的性能差距约为 $7138 / 18041 \approx 40\%$