led/sub_crates/backend/benches/hash.rs
2022-08-24 18:45:36 -07:00

121 lines
2.9 KiB
Rust

use backend::hash::LedHash256;
use criterion::{criterion_group, criterion_main, Criterion, Throughput};
//----
fn hash_10b(c: &mut Criterion) {
let size = 10;
let mut group = c.benchmark_group("hash_10b");
let data: Vec<u8> = b"abcdefghijklmnopqrstuvwxyz"
.iter()
.copied()
.cycle()
.take(size)
.collect();
group.throughput(Throughput::Bytes(size as u64));
group.bench_function("led256", |bench| {
bench.iter(|| {
let mut hash = LedHash256::new();
hash.update(&data);
hash.finish();
})
});
group.bench_function("blake3", |bench| {
bench.iter(|| {
let mut hash = blake3::Hasher::new();
hash.update(&data);
hash.finalize();
})
});
}
fn hash_1kb(c: &mut Criterion) {
let size = 1000;
let mut group = c.benchmark_group("hash_1kb");
let data: Vec<u8> = b"abcdefghijklmnopqrstuvwxyz"
.iter()
.copied()
.cycle()
.take(size)
.collect();
group.throughput(Throughput::Bytes(size as u64));
group.bench_function("led256", |bench| {
bench.iter(|| {
let mut hash = LedHash256::new();
hash.update(&data);
hash.finish();
})
});
group.bench_function("blake3", |bench| {
bench.iter(|| {
let mut hash = blake3::Hasher::new();
hash.update(&data);
hash.finalize();
})
});
}
fn hash_100kb(c: &mut Criterion) {
let size = 100_000;
let mut group = c.benchmark_group("hash_100kb");
let data: Vec<u8> = b"abcdefghijklmnopqrstuvwxyz"
.iter()
.copied()
.cycle()
.take(size)
.collect();
group.throughput(Throughput::Bytes(size as u64));
group.bench_function("led256_1k_chunk", |bench| {
bench.iter(|| {
let mut hash = LedHash256::new();
for chunk in data.chunks(1000) {
hash.update(chunk);
}
hash.finish();
})
});
group.bench_function("led256_10k_chunk", |bench| {
bench.iter(|| {
let mut hash = LedHash256::new();
for chunk in data.chunks(10000) {
hash.update(chunk);
}
hash.finish();
})
});
group.bench_function("blake3_1k_chunk", |bench| {
bench.iter(|| {
let mut hash = blake3::Hasher::new();
for chunk in data.chunks(1000) {
hash.update(chunk);
}
hash.finalize();
})
});
group.bench_function("blake3_10k_chunk", |bench| {
bench.iter(|| {
let mut hash = blake3::Hasher::new();
for chunk in data.chunks(10000) {
hash.update(chunk);
}
hash.finalize();
})
});
}
//----
criterion_group!(benches, hash_10b, hash_1kb, hash_100kb);
criterion_main!(benches);