2 个版本
使用旧的 Rust 2015
0.2.1 | 2018 年 10 月 12 日 |
---|---|
0.2.0 | 2018 年 10 月 12 日 |
#1095 在 并发
在 2 crates 中使用
500KB
1K SLoC
concache
本 crate 提供了两种快速、并发、共享哈希表的实现。
两种实现都提供了无锁的版本,使用 无锁链表桶。内存通过使用 crossbeam::epoch
或手动 静默状态基础回收 实现安全地销毁和回收。有关详细信息,请参阅 crossbeam
和 manual
模块文档。
两种实现都不支持表大小调整,但由于链式实现,地图永远不会填满;相反,随着地图中键的增加,性能将降低。
本 crate 是 Aditya Saligrama 和 Andrew Shen 在撰写 Rust 并发故事的实用分析 时编写的,这是他们 2018 年为 MIT PRIMES 的项目。
性能
我们对 concache 与受 读写锁保护的标准 Rust HashMap
以及与 chashmap(一个提供“基于桶级多读锁的并发哈希表”的 crate)进行了基准测试。基准测试在具有 Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz CPU 的 40 核机器上使用 benchmark/ 目录中的二进制文件运行。
基准测试在紧密循环中运行了多个读取和写入线程,每个线程分别对地图中的随机键进行读取或写入。下面提供了均匀和偏斜分布的结果。基准测试测量了随着读取者和写入者数量的增加,每秒读取和写入的平均次数。
初步结果表明,在竞争条件下,concache
的性能良好。