10个版本

0.4.4 2024年3月17日
0.4.3 2023年2月6日
0.4.2 2023年1月21日
0.3.1 2023年1月3日
0.1.0 2020年1月5日

网络编程类别中排名第360

每月下载量31
2个Crate中使用(通过confitul

MIT许可证

38KB
392

VClock

VClock是用Rust实现的一种向量时钟。

它提供了分布式系统中事件的偏序关系。实际上,它实现了在维护每个键修改整数计数的哈希映射上的Rust偏序特质

VClock icon

状态

据我所知,这尚未在实际生产中使用,因此唯一的安全网是单元测试。项目有一个合理的测试框架,因此它应该“可以”使用。再次提醒,免责声明,自行承担风险。

Build Status Crates.io Gitlab License

用法

use vclock::VClock64;

let c1 = VClock64::new("a");      // c1 is now a:0
let mut c2 = VClock64::new("b");  // c2 is now b:0
c2.incr(&"a");                    // c1 is now a:1, b:0
assert!(c1 < c2, "c1 should be a child of c2");

包有两个可选特性

  • serde 用于启用(反)序列化Serde支持
  • bigint 用于启用大整数支持并拥有“无限”向量时钟

基准测试

来自一个随机的CI作业

running 15 tests
test tests::bench_vclock64_int_cmp_10     ... bench:         383 ns/iter (+/- 12)
test tests::bench_vclock64_int_cmp_100    ... bench:       2,889 ns/iter (+/- 78)
test tests::bench_vclock64_int_cmp_1000   ... bench:      26,221 ns/iter (+/- 384)
test tests::bench_vclock64_int_cmp_10000  ... bench:     276,902 ns/iter (+/- 3,855)
test tests::bench_vclock64_int_incr       ... bench:          35 ns/iter (+/- 2)
test tests::bench_vclock64_str_cmp_10     ... bench:         346 ns/iter (+/- 8)
test tests::bench_vclock64_str_cmp_100    ... bench:       3,104 ns/iter (+/- 87)
test tests::bench_vclock64_str_cmp_1000   ... bench:      36,570 ns/iter (+/- 2,054)
test tests::bench_vclock64_str_cmp_10000  ... bench:     663,951 ns/iter (+/- 52,968)
test tests::bench_vclock64_str_incr       ... bench:          53 ns/iter (+/- 10)
test tests::bench_vclockbig_str_cmp_10    ... bench:         548 ns/iter (+/- 11)
test tests::bench_vclockbig_str_cmp_100   ... bench:       3,945 ns/iter (+/- 96)
test tests::bench_vclockbig_str_cmp_1000  ... bench:      37,310 ns/iter (+/- 3,270)
test tests::bench_vclockbig_str_cmp_10000 ... bench:     688,678 ns/iter (+/- 157,335)
test tests::bench_vclockbig_str_incr      ... bench:         113 ns/iter (+/- 4)
test result: ok. 0 passed; 0 failed; 0 ignored; 15 measured; 0 filtered out; finished in 11.35s

这不是经过彻底、密集基准测试的结果,但我们可以至少推断出一个显著的差异,即向量时钟的长度。它们的长度随着大小增加而线性增长。

要运行基准测试

cd bench
rustup default nightly
cargo bench

链接

许可证

VClock遵循MIT许可证。

依赖关系

~0–275KB