mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-26 17:03:43 +02:00
78 lines
1.8 KiB
Rust
78 lines
1.8 KiB
Rust
use criterion::{criterion_group, criterion_main, Criterion};
|
|
use iblt::IBLT;
|
|
|
|
const CAPACITY: usize = 4096;
|
|
type IBLT32 = IBLT<[u8; 32], CAPACITY, 3>;
|
|
type IBLT16 = IBLT<[u8; 16], CAPACITY, 3>;
|
|
type IBLT8 = IBLT<[u8; 8], CAPACITY, 3>;
|
|
|
|
pub fn criterion_benchmark(c: &mut Criterion) {
|
|
let mut orig = IBLT32::new();
|
|
let mut new = IBLT32::new();
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 32];
|
|
v.fill_with(rand::random);
|
|
orig.insert(&v);
|
|
}
|
|
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 32];
|
|
v.fill_with(rand::random);
|
|
new.insert(&v);
|
|
}
|
|
|
|
c.bench_function("merge 32", |b| {
|
|
b.iter(|| {
|
|
let mut new2 = new.clone();
|
|
orig.subtract(&new);
|
|
new2.subtract(&orig);
|
|
})
|
|
});
|
|
|
|
let mut orig = IBLT16::new();
|
|
let mut new = IBLT16::new();
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 16];
|
|
v.fill_with(rand::random);
|
|
orig.insert(&v);
|
|
}
|
|
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 16];
|
|
v.fill_with(rand::random);
|
|
new.insert(&v);
|
|
}
|
|
|
|
c.bench_function("merge 16", |b| {
|
|
b.iter(|| {
|
|
let mut new2 = new.clone();
|
|
orig.subtract(&new);
|
|
new2.subtract(&orig);
|
|
})
|
|
});
|
|
|
|
let mut orig = IBLT8::new();
|
|
let mut new = IBLT8::new();
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 8];
|
|
v.fill_with(rand::random);
|
|
orig.insert(&v);
|
|
}
|
|
|
|
for _ in 0..CAPACITY {
|
|
let mut v = [0u8; 8];
|
|
v.fill_with(rand::random);
|
|
new.insert(&v);
|
|
}
|
|
|
|
c.bench_function("merge 8", |b| {
|
|
b.iter(|| {
|
|
let mut new2 = new.clone();
|
|
orig.subtract(&new);
|
|
new2.subtract(&orig);
|
|
})
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|