2 个版本

使用旧的 Rust 2015

0.2.1 2018 年 10 月 12 日
0.2.0 2018 年 10 月 12 日

#1095并发


2 crates 中使用

MIT/Apache

500KB
1K SLoC

concache

Crates.io Documentation Build Status

本 crate 提供了两种快速、并发、共享哈希表的实现。

两种实现都提供了无锁的版本,使用 无锁链表桶。内存通过使用 crossbeam::epoch 或手动 静默状态基础回收 实现安全地销毁和回收。有关详细信息,请参阅 crossbeammanual 模块文档。

两种实现都不支持表大小调整,但由于链式实现,地图永远不会填满;相反,随着地图中键的增加,性能将降低。

本 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 的性能良好。

Read throughput Write throughput

依赖关系