diff options
author | Daniel Schadt <kingdread@gmx.de> | 2025-09-04 21:47:55 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2025-09-04 21:47:55 +0200 |
commit | 4b83bfcad25c8d8e36fe210a76faa5797f9c5aaf (patch) | |
tree | 7d7045099a4e977e467a4e28581f620219746474 /benches/primitives.rs | |
parent | 7d8c9ab2be2e72038692a96b10427ab6ed914259 (diff) | |
download | zears-4b83bfcad25c8d8e36fe210a76faa5797f9c5aaf.tar.gz zears-4b83bfcad25c8d8e36fe210a76faa5797f9c5aaf.tar.bz2 zears-4b83bfcad25c8d8e36fe210a76faa5797f9c5aaf.zip |
add benchmarks for primitives
Diffstat (limited to 'benches/primitives.rs')
-rw-r--r-- | benches/primitives.rs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/benches/primitives.rs b/benches/primitives.rs new file mode 100644 index 0000000..09f926a --- /dev/null +++ b/benches/primitives.rs @@ -0,0 +1,60 @@ +use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main}; + +use zears::{Aez, primitives}; + +fn bench(c: &mut Criterion) { + let mut group = c.benchmark_group("primitives"); + + const KB: usize = 1024; + let aez = Aez::new(&[0u8; 48]); + + for size in [0, 16, 32, 64, KB].into_iter() { + group.throughput(Throughput::Bytes(size as u64)); + + group.bench_function(BenchmarkId::new("aez_hash", size), |b| { + let tweak = vec![0u8; size]; + b.iter(|| primitives::aez_hash(&aez, [&tweak])) + }); + + // Make sure we also hit the path for tweaks that are not exactly block sized + let size = size + 8; + + group.throughput(Throughput::Bytes(size as u64)); + + group.bench_function(BenchmarkId::new("aez_hash", size), |b| { + let tweak = vec![0u8; size]; + b.iter(|| primitives::aez_hash(&aez, [&tweak])) + }); + } + + for size in [KB, 2 * KB, 4 * KB, 8 * KB, 16 * KB].into_iter() { + group.throughput(Throughput::Bytes(size as u64)); + + group.bench_function(BenchmarkId::new("aez_prf", size), |b| { + let mut buffer = vec![0u8; size]; + let tweak: [&[u8]; 0] = []; + b.iter(|| primitives::aez_prf(&aez, tweak, &mut buffer)) + }); + + group.bench_function(BenchmarkId::new("encipher", size), |b| { + let mut buffer = vec![0u8; size]; + let tweak: [&[u8]; 0] = []; + b.iter(|| primitives::encipher(&aez, tweak, &mut buffer)) + }); + + group.bench_function(BenchmarkId::new("decipher", size), |b| { + let mut buffer = vec![0u8; size]; + let tweak: [&[u8]; 0] = []; + b.iter(|| primitives::decipher(&aez, tweak, &mut buffer)) + }); + } + + group.finish(); + + c.bench_function("primitives/e", |b| { + b.iter(|| primitives::e(1, 1, &aez, [0; 16])) + }); +} + +criterion_group!(benches, bench); +criterion_main!(benches); |