16 个版本
0.2.18 | 2022 年 12 月 21 日 |
---|---|
0.2.16 | 2022 年 10 月 17 日 |
0.2.15 | 2022 年 9 月 26 日 |
0.2.12 | 2022 年 4 月 18 日 |
0.2.3 | 2022 年 2 月 16 日 |
#325 在 并发 中排名
每月 158 下载量
125KB
3K SLoC
Congee
Congee 是 ART-OLC 并发自适应基数树 的 Rust 实现。它实现了具有适当 SIMD 支持的乐观锁耦合。
它只支持(并且针对 8 字节键进行优化);由于这种特殊化,congee 具有出色的性能 -- 基本操作比大多数哈希表更快,范围扫描快一个数量级。
代码已通过 {地址|泄露} 污染器 以及 libfuzzer 进行广泛测试。
为什么选择 Congee?
- 快速性能,比大多数哈希表都快。
- 并发,超可扩展,在 32 个核心上达到 150Mop/s。
- 超低内存消耗。哈希表通常具有指数级桶大小增长,这通常导致低负载因子。ART 更节省空间。
为什么不是 Congee?
- 不适用于任意键大小。此库只支持 8 字节键。
设计原则
Congee 致力于成为构建数据库系统的一个简单且可靠的 原语。
示例
use congee::Art;
let art = Art::default();
let guard = art.pin(); // enter an epoch
art.insert(0, 42, &guard); // insert a value
let val = art.get(&0, &guard).unwrap(); // read the value
assert_eq!(val, 42);
let mut scan_buffer = vec![(0, 0); 8];
let scan_result = art.range(&0, &10, &mut scan_buffer, &guard); // scan values
assert_eq!(scan_result, 1);
assert_eq!(scan_buffer[0], (0, 42));
依赖项
~215–500KB