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

hash_strmap & gold_hash_map update

 
阅读更多

hash_strmap

在不增加任何额外成本的情况下,string pool 中每个 string 消耗的内存,平均情况下,减少了一个字节。太不值一提。

gold_hash_map

计划新加功能:
使用 FreeList 管理已删除的元素,这样最大的好处是:即使有元素删除,所有未被删除的元素的 id(数组下标)都不会改变。这样,就可以把 id(数组下标)作为元素的永久标识,可以把这个 id 保存在别的地方,来直接访问 gold_hash_map 的元素。这个功能看上去比较简单,但接口设计和实现都还是有不少复杂度的。
hash_strmap 也可以实现这个功能,但是这样会在 string pool 中留下无法利用的空洞,如果把这个空洞消除,就会出现 0 长度的 string pool item,从而在 node 和 value 数组中会留下无法利用的空洞,如果要真正利用这些空洞,时间复杂度或实现复杂度会大幅增加。这比 gold_hash_map 实现该功能增加的额外复杂度要多得多得多。

Reference

hash_strmap 为什么那么快

gold_hash_map design

gold_hash_map bench mark with google sparse hash

缓存与平行数组在 hash_strmap 和 gold_hash_map 中的应用

gold_hash_map vs google sparse map by google's time_hash_map.cc

分享到:
评论

相关推荐

    hash_map的详解

    ### hash_map详解 #### 0. 为什么需要hash_map? 在软件开发中,经常会遇到需要高效存储和查找键值对(key-value)的情况。例如,在管理人物名称及其相关信息时,我们希望能够快速地添加、查找和更新数据。传统的...

    hash_map的简单应用

    hash_map

    c++中hash_table以及std::map应用案例

    代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...

    linux hash_map

    Linux下的`hash_map`是一种基于哈希表的数据结构,它提供了高效的键值对存储功能。与`map`不同,`hash_map`不使用二叉查找树(如红黑树),而是利用哈希函数来实现快速查找。哈希表通常由数组和散列函数组成,数组的...

    Hash_map 实现源码

    哈希映射(Hash Map)是一种常见的数据结构,它提供了键值对(Key-Value Pair)的快速存储和检索功能。在C++中,STL(Standard Template Library)提供了一个名为`std::unordered_map`的容器,它是基于哈希表实现的...

    C++哈希表使用的好文章-Hash_Map

    C++中的`hash_map`虽然未被正式纳入标准模板库(STL),但在很多STL实现中都有提供。`hash_map`的优势在于其近乎常数时间的平均复杂度,这得益于它对内存的高效利用,即使在大量数据面前,也能保持高效性能。 `map`是...

    Hash值查看以及修改软件(Hash_1.0.4_0523.exe以及HashModifier.exe)

    在IT领域,Hash值是一种广泛使用的数据校验方式,它能够为任何大小的文件生成一个固定长度的唯一标识,这个标识通常称为哈希值或散列值。Hash值查看及修改软件,如"Hash_1.0.4_0523.exe"和"HashModifier.exe",是...

    gen_lex_hash_pc

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

    dense_hash_map:STD的简单替代

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

    TBB并发容器 学习笔记

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

    asp版hmac_sha1加密方式,真正和PHP的hash_hmac加密结果完全一样。支持中文utf-8编码

    HMAC(Hash-based Message Authentication Code)是一种使用密钥的哈希函数,它结合了密钥和消息,通过特定的哈希算法(如 SHA1)生成一个固定长度的摘要。这个摘要可以作为数据的数字签名,用于验证数据的完整性和...

    文件MD5 ...查看 Hash_1.0.4_XiaZaiBa.exe

    查看 Hash_1.0.4_XiaZaiBa.exe”指的是一个用于检查文件MD5哈希值的软件,版本为1.0.4,该软件的可执行文件名为“Hash_1.0.4_XiaZaiBa.exe”。MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,产生...

    key是string的hash_map

    本实例实现了一个hash_map,key是string类型,即可以存储索引是string的数据,希望对大家有帮助

    Hash___Crypto_Detector_v1[1].4 侦壳软件最新的

    Hash___Crypto_Detector_v1[1].4 侦壳软件最新的 可侦出ZProtect,共享吧

    MD5校验Hash_1.0.4

    MD5校验Hash_1.0.4是一个用于验证软件安全性的工具,它主要通过计算文件的MD5哈希值来确保文件的完整性。MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常用...

    解决编译opencv时,遇到ippicv第三方包下载超时的问题。 ippicv_linux_20151201.tgz

    ipp_file=../ippicv_linux_20151201.tgz && ipp_hash=$(md5sum $ipp_file | cut -d" " -f1) && ipp_dir=3rdparty/ippicv/downlo ads/linux-$ipp_hash && mkdir -p $ipp_dir && cp $ipp_file $ipp_dir

    Hash_1.0.4.exe

    Hash_1.0.4.exe检验文件Hash,

    hash.rar_HASH算法_fpga hash_hash_zebra85v_哈希表Verilog

    标题中的“hash.rar_HASH算法_fpga hash_hash_zebra85v_哈希表Verilog”揭示了这个压缩包文件的主要内容,它涉及到哈希(Hash)算法在高速Field-Programmable Gate Array(FPGA)上的实现,以及与Zebra85v硬件平台和...

    HASH_hash_stm32hash_stm32hash表_stm32f407_

    在STM32F407上实现的哈希(Hash)算法是数字签名、数据完整性验证等安全应用中的关键组成部分。哈希算法能够将任意长度的输入数据转化为固定长度的输出,通常称为哈希值或消息摘要。 哈希算法的主要特性包括: 1. *...

    Hash_1.0.4_0523.zip

    标题中的“Hash_1.0.4_0523.zip”是一个压缩包文件,其中包含了名为“Hash_1.0.4_0523.exe”的应用程序,这是一款专注于进行哈希值计算的小工具,特别适用于快速校验文件的完整性。其1.0.4的版本号和0523的日期标记...

Global site tag (gtag.js) - Google Analytics