3 个版本 (破坏性更新)
0.3.0 | 2021年9月18日 |
---|---|
0.2.0 | 2021年3月10日 |
0.1.0 | 2021年3月8日 |
#1020 in 数据库接口
每月下载量 27 次
345KB
2.5K SLoC
并发哈希表
包实现并发哈希表。
引用自 维基百科
如果所有版本都可以访问但只能修改最新版本,则数据结构是 部分持久化 的。如果每个版本都可以访问和修改,则数据结构是 完全持久化 的。如果还有一个合并操作可以从两个先前版本创建新版本,则该数据结构称为 汇聚持久化 的。非持久化结构称为 临时 数据结构。
此哈希表的实现不能严格归类为上述任何一种定义。它支持并发写入,在底层使用原子加载、存储和 Cas 操作,但不 提供 事务操作或迭代操作的时点快照。
如果需要时点快照,请参考 ppom 包,该包实现有序映射,具有多读者并发和序列化写入。
- Map 实例中的每个条目都对应一个 {键,值} 对。
- 泛型于
key-type
和value-type
。 - 泛型于应用程序定义的哈希的哈希构建器。
- API - 使用键的 set()、get()、remove()。
- 使用所有权模型和借用语义来确保安全性。
- 实现自定义基于周期的垃圾回收来处理写入并发和内存优化。
- 没有持久性保证。
- 线程安全,适用于并发写入和并发读取。
有关详细信息,请参阅 rustdoc。
性能
机器:Gen-1 Thread-ripper 16/32 核心和 64GB RAM。所有测量都使用 cmap 的 U32Hasher 32 位键和 64 位值和 10 百万数据集。
在有 16 个并发线程的情况下,cmap 可以执行 ~12 百万次 get 操作。
有用的链接
贡献
依赖项
约 1.7–2.7MB
约 54K SLoC