diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-04-23 14:11:14 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-04-23 14:11:14 +0200 |
| commit | 3f31e03159406b238f6ded01903cbdbc1b3b499a (patch) | |
| tree | 979a93eda22b4e80087921547000b30aa53a6e37 /benches | |
| download | leona-3f31e03159406b238f6ded01903cbdbc1b3b499a.tar.gz leona-3f31e03159406b238f6ded01903cbdbc1b3b499a.tar.bz2 leona-3f31e03159406b238f6ded01903cbdbc1b3b499a.zip | |
initial commit
Diffstat (limited to 'benches')
| -rw-r--r-- | benches/leona.rs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/benches/leona.rs b/benches/leona.rs new file mode 100644 index 0000000..fe6329e --- /dev/null +++ b/benches/leona.rs @@ -0,0 +1,54 @@ +use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main}; + +use leona::{KeyedHash, Lioness, ZeroIv}; + +use aes::Aes256; +use blake2::Blake2sMac256; +use chacha20::ChaCha20; +use ctr::Ctr32BE; +use hmac::Hmac; +use sha2::Sha256; +use typenum::U32; + +use cipher::stream::StreamCipher; +use crypto_common::{KeyInit, KeySizeUser}; +use digest::{FixedOutput, Update}; +use hybrid_array::Array; +use typenum::{IsLessOrEqual, True, U64}; +use zerocopy::FromZeros; + +fn inner<S, H>(c: &mut Criterion, name_cipher: &str, name_hash: &str) +where + S: KeySizeUser<KeySize = H::OutputSize> + KeyInit + StreamCipher, + H: KeySizeUser + KeyInit + FixedOutput + Update, + S::KeySize: IsLessOrEqual<U64, Output = True>, + H::KeySize: IsLessOrEqual<U64, Output = True>, + Array<u8, S::KeySize>: FromZeros, +{ + const KB: usize = 1024; + + let mut group = c.benchmark_group(format!("{name_cipher}/{name_hash}")); + let cipher = Lioness::<S, H>::new_dynamic(b""); + + for size in [KB, 2 * KB, 4 * KB, 8 * KB, 16 * KB] { + let mut buf = vec![0u8; size]; + + group.throughput(Throughput::Bytes(size as u64)); + + group.bench_function(BenchmarkId::new("encrypt", size), |b| { + b.iter(|| cipher.encrypt(&mut buf)); + }); + } +} + +fn bench(c: &mut Criterion) { + inner::<ZeroIv<ChaCha20>, Blake2sMac256>(c, "chacha20", "blake2s256"); + inner::<ZeroIv<ChaCha20>, KeyedHash<U32, Sha256>>(c, "chacha20", "sha256"); + inner::<ZeroIv<ChaCha20>, Hmac<Sha256>>(c, "chacha20", "sha256-hmac"); + inner::<ZeroIv<Ctr32BE<Aes256>>, Blake2sMac256>(c, "aes256", "blake2s256"); + inner::<ZeroIv<Ctr32BE<Aes256>>, KeyedHash<U32, Sha256>>(c, "aes256", "sha256"); + inner::<ZeroIv<Ctr32BE<Aes256>>, Hmac<Sha256>>(c, "aes256", "sha256-hmac"); +} + +criterion_group!(benches, bench); +criterion_main!(benches); |
