mirror of
https://github.com/loro-dev/loro.git
synced 2025-01-23 05:24:51 +00:00
26753f0d4d
* fix: better jitter
27 lines
834 B
Rust
27 lines
834 B
Rust
use fractional_index::FractionalIndex;
|
|
|
|
fn find_common_prefix(a: &[u8], b: &[u8]) -> usize {
|
|
a.iter().zip(b.iter()).take_while(|(a, b)| a == b).count()
|
|
}
|
|
|
|
fn main() {
|
|
// jitter
|
|
let mut rng = rand::thread_rng();
|
|
let mut size = 0;
|
|
let mut compress_size = 0;
|
|
for jitter in 0..3 {
|
|
let mut n = FractionalIndex::jitter_default(&mut rng, jitter);
|
|
for _ in 0..10000 {
|
|
let new = FractionalIndex::new_before_jitter(&n, &mut rng, jitter);
|
|
assert!(new < n);
|
|
size += new.as_bytes().len();
|
|
compress_size +=
|
|
new.as_bytes().len() - find_common_prefix(new.as_bytes(), n.as_bytes()) + 1;
|
|
n = new;
|
|
}
|
|
println!(
|
|
"size = {} compress {} with jitter {}",
|
|
size, compress_size, jitter
|
|
);
|
|
}
|
|
}
|