use commonware_cryptography::{Hasher, Sha256}; use commonware_parallel::Sequential; use commonware_utils::test_rng; use criterion::{Criterion, criterion_group}; use rand::Rng; use std::hint::black_box; fn bench_hash_pair(c: &mut Criterion) { let mut sampler = test_rng(); let mut messages = [[0u8; 72]; 2]; for message in &mut messages { sampler.fill_bytes(message); } for (shape, parts) in [ ( "bmt", messages .each_ref() .map(|message| vec![&message[..32], &message[32..64]]), ), ( "mmr", messages .each_ref() .map(|message| vec![&message[..8], &message[8..40], &message[40..]]), ), ] { c.bench_function(&format!("{}/shape={shape}", module_path!()), |b| { b.iter(|| Sha256::hash_pair(black_box(&parts[0]), black_box(&parts[1]), &Sequential)); }); } } criterion_group!(benches, bench_hash_pair);