`
febird
  • 浏览: 256434 次
  • 性别: 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 的性能测试代码了,具体的测试结果在这里
分享到:
评论

相关推荐

    gen_lex_hash_pc

    《gen_lex_hash_pc:MySQL交叉编译的关键工具详解》 在IT行业中,数据库管理系统是核心组件之一,而MySQL作为开源关系型数据库的代表,广泛应用于各类项目中。在特定环境下,如嵌入式设备或资源有限的PC平台,我们...

    Nginx安装url_hash插件.doc

    **Nginx与url_hash插件** Nginx是一个高性能的HTTP和反向代理服务器,以其轻量级、高并发处理能力以及丰富的模块扩展性而闻名。然而,Nginx本身并不内置支持url_hash功能,这是一个用于负载均衡的策略,通过将特定...

    UMAT_Hashin3D_hashin

    标题 "UMAT_Hashin3D_hashin" 指涉的是一个专门针对复合材料损伤分析的三维子程序,该程序基于Hashin破坏准则。在有限元分析(FEA)中,用户自定义材料(User-Defined Material,UMAT)是实现特定材料行为建模的一种...

    nginx_upstream_hash-0.3.1.tar.gz

    《Nginx Upstream Hash模块详解与应用》 在Web服务器领域,Nginx以其高效、轻量级的特性赢得了广泛的应用。为了实现更灵活的负载均衡策略,Nginx提供了一系列的upstream模块,其中,`nginx_upstream_hash`模块是...

    ngx_http_consistent_hash-master.zip

    "ngx_http_consistent_hash-master.zip" 是一个与 Nginx Web服务器相关的压缩包文件,其中包含了一个名为 "ngx_http_consistent_hash" 的第三方模块的源代码。"master" 指示这可能是该模块的主分支或最新版本。 **...

    dense_hash_map:STD的简单替代

    jg :: dense_hash_map 一个简单的std::unordered_map替代品,具有更好的性能,但失去了稳定的寻址方式,这是一种折衷方案。 在此处查看此哈希图的详细说明: : 生成状态: 特拉维斯(Travis):

    Nginx如何配置url_hash转发方式.docx

    在本文中,我们将深入探讨如何在Nginx服务器上配置URL哈希(url_hash)转发方式,这是一种负载均衡策略,用于将特定的URL请求路由到特定的后端服务器。这种配置适用于需要根据URL保持会话状态的应用场景,比如动态...

    TBB并发容器 学习笔记

    3. `concurrent_hash_map`:这是一个线程安全的哈希映射,允许并发的读写操作。它在多线程环境下提供高效的数据查找和更新,同时确保数据一致性。 相比于传统的STL容器,TBB并发容器的优势在于它们在设计时考虑了多...

    基于应变和应力的Vumat子程序_hashin失效准则_动态应变_拉伸失效_hashin_vumat.zip

    这个压缩包文件“基于应变和应力的Vumat子程序_hashin失效准则_动态应变_拉伸失效_hashin_vumat.zip”显然包含了与使用Vumat子程序来模拟材料失效,特别是Hashin失效准则相关的资料,以及动态应变和拉伸失效的应用。...

    pwwHash.zip_Big!_hash map

    在IT领域,哈希表(Hash Map)是一种高效的数据结构,尤其在处理大数据时,它的作用至关重要。"pwwHash.zip_Big!_hash map"这个文件标题暗示了这是一个关于大规模数据处理和哈希映射的专题,可能包含了某种特定的...

    STATUS_INVALID_IMAGE_HASH.zip

    标题 "STATUS_INVALID_IMAGE_HASH.zip" 暗示了一个与操作系统或浏览器有关的错误,特别是针对Chrome和Edge浏览器。这个问题通常涉及到系统中某个可执行文件(DLL或EXE)的哈希值与预期不符,导致安全策略无法验证其...

    nginx_upstream_hash-0.3.2.tar.gz

    4. `hash_method`: 设置哈希算法,nginx默认使用MD5,也可以选择其他的哈希算法,如SHA1。 5. `consistent`: 添加此选项可以使用一致性哈希算法,这有助于在添加或删除服务器时减少请求的重新分布。 在部署nginx_...

    md5_hash.rar_hash_md5_hash

    在本项目中,"md5_hash.rar_hash_md5_hash" 的标题暗示了这是一个关于C++实现MD5哈希算法的工程。描述中的 "C++ implementation for md5" 进一步确认了这个项目的焦点。标签"hash"和"md5_hash"也与哈希计算相关。 ...

    mysql_hash.exe/使用hash登陆mysql

    在获取到mysql用户的hash后, 可用hash直接登陆mysql进行操作 比如我们注入出数据库的hash,但是没办法拿到webshell 我们可以使用mysql_hash,用hash登陆并控制数据库 使用方法: mysql_hash.exe -u root -p Enter ...

    hash_map的简单应用

    hash_map

    Nginx_upstream_hash-0.3.1.tar.gz

    而"hash"策略则是Nginx upstream模块中的一个功能,用于根据特定的请求属性(例如URL)来决定请求应被转发到哪个后端服务器。 在标题和描述中提到的"Nginx_upstream_hash-0.3.1.tar.gz"是一个Nginx的第三方模块,它...

    vuamt and umat_hashin_UMAT_Hashin_umathashin_vumat_

    标题中的"vuamt and umat_hashin_UMAT_Hashin_umathashin_vumat_"提到了几个关键术语,它们都是在材料力学和有限元分析(FEA)领域中的重要概念。在这里,我们主要讨论的是"UMAT"、"Hashin damage"以及"umat_hashin...

    无线安全破解专用WPA-PSK_Hash_Table_DVD下载地址汇总.

    无线安全破解专用WPA-PSK_Hash_Table_DVD下载地址汇总.

    MD5.c.zip_hash_md5_md5 hash_md5_hash_woodennfx

    这个标题"MD5.c.zip_hash_md5_md5_hash_woodennfx"可能指的是一个包含有关MD5哈希计算源代码的压缩文件,其中可能包含了名为"MD5.c"的C语言源代码文件。 MD5的主要特性是它的单向性,即从任意长度的消息生成固定...

Global site tag (gtag.js) - Google Analytics