`
febird
  • 浏览: 247420 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gold_hash_map design

 
阅读更多

前一段时间写了个 hash_strmap, 效果不错,其中的一些设计思想可以扩展。于是,昨天到今天两天写了一个通用的 hash_map, 起了个名字叫 gold_hash_map

hash_strmap 的介绍文章一介绍文章二

内存使用

hash_strmap 一样,使用连续的内存块,不过更简单,只需要两块内存( hash_strmap 需要 3 块或 4 块 )。


不一样的地方


缓存 hash value

一般情况下,hash value 的计算比较昂贵,所有有效的方式就是将这个计算出来的 hash value 缓存起来,但是,缓存是需要空间的!所以,对于简单的 Key,就不缓存它的 hash value, 比如象 int, long 等等,是否缓存的默然条件就是:没有 trivial destructor 并且尺寸小于指针宽度。

删除元素更简单

只需要在被删除的那个元素占的位置,用末尾的那个(有效)元素替换,然后再重新链接,一切就 OK 了。

gold_hash_map::operator[]

使用有效的方式传递参数(Key),如果参数比较复杂,就用引用传,如果比较简单,就直接拷贝。


性能测试

这个 map 和通用的 hash_map 接口非常相似,所以就直接用 google sparse hash map 的性能测试代码了,具体的测试结果在这里
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics