10个版本
0.4.3 | 2024年3月17日 |
---|---|
0.4.2 | 2023年10月2日 |
0.4.1 | 2023年2月6日 |
0.4.0 | 2023年1月21日 |
0.1.1 | 2022年12月31日 |
#261 在 算法
每月下载量 26
用于 2 个crate(通过 confitul)
74KB
793 行
CKey
CKey 是一个实验性的一致性哈希键库,使用 Rust 实现。
查看关于 一致性哈希的理论。这个库可以用作实现 Chord 环的砖块。它提供256位键,并提供一些助手来添加、比较并了解它们在环上的位置。内部,键存储在4个64位无符号整数中。
状态
目前这是一个玩具项目,显然 不适用于生产环境。
用法
use ckey::CKey;
let k1 = CKey::rand();
let k2 = k1.next();
let k3 = k2 + 10u8;
assert!(k2.inside(k1, k3));
let k4 = CKey::from(1000u16);
assert_eq!("0.015258789", format!("{}", k4));
基准测试
来自一个随机的CI作业
running 6 tests
test tests::bench_bytes ... bench: 28 ns/iter (+/- 0)
test tests::bench_display ... bench: 204 ns/iter (+/- 3)
test tests::bench_from_f64 ... bench: 10 ns/iter (+/- 0)
test tests::bench_incr ... bench: 2 ns/iter (+/- 0)
test tests::bench_inside ... bench: 10 ns/iter (+/- 1)
test tests::bench_serial ... bench: 468 ns/iter (+/- 106)
test result: ok. 0 passed; 0 failed; 0 ignored; 6 measured; 0 filtered out; finished in 6.37s
这不是广泛的、彻底的基准测试的结果,只是开发历史中某个时刻的随机快照。
TL;DR 相对较快,但比标准整数操作慢。
实现尝试优化操作的速度,如 incr
或 inside
,这些操作在现实世界程序中通常被重复很多次。另一方面,键的创建和序列化成本较高。
要运行基准测试
cd bench
rustup default nightly
cargo bench
链接
许可证
Ckey遵循 MIT 许可证。
依赖项
~0.7–1.6MB
~35K SLoC