From 1e827d6b8a030eea2bdd49c950fdea4e8b1b4e88 Mon Sep 17 00:00:00 2001 From: cscherr Date: Tue, 22 Jul 2025 11:12:56 +0200 Subject: [PATCH] feat(alg): host benches for hash --- crates/algorithms/benches/crc32bench.rs | 14 +++++++++--- crates/algorithms/benches/crc32bench_iai.rs | 25 ++++++++++++++++----- crates/algorithms/src/hash/mod.rs | 2 ++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/crates/algorithms/benches/crc32bench.rs b/crates/algorithms/benches/crc32bench.rs index de7338e..73adc43 100755 --- a/crates/algorithms/benches/crc32bench.rs +++ b/crates/algorithms/benches/crc32bench.rs @@ -1,12 +1,20 @@ -use algorithms::crc::{CHECK_DATA, Crc, Crc32, ffi}; +use algorithms::crc::{self, Crc}; +use algorithms::hash; use criterion::{Criterion, black_box, criterion_group, criterion_main}; pub fn criterion_benchmark(c: &mut Criterion) { c.bench_function("crc32", |b| { - b.iter(|| Crc32::checksum(black_box(&CHECK_DATA))) + b.iter(|| crc::Crc32::checksum(black_box(&crc::CHECK_DATA))) }); c.bench_function("ffi::crc32", |b| { - b.iter(|| ffi::Crc32::checksum(black_box(&CHECK_DATA))) + b.iter(|| crc::ffi::Crc32::checksum(black_box(&crc::CHECK_DATA))) + }); + + c.bench_function("sha2_256", |b| { + b.iter(|| hash::sha2_256_oneshot(black_box(hash::HASH_EXAMPLE_DATA))) + }); + c.bench_function("ffi::sha2_256", |b| { + b.iter(|| hash::ffi::sha2_256_oneshot(black_box(hash::HASH_EXAMPLE_DATA))) }); } diff --git a/crates/algorithms/benches/crc32bench_iai.rs b/crates/algorithms/benches/crc32bench_iai.rs index 56c6bc3..5c3af16 100755 --- a/crates/algorithms/benches/crc32bench_iai.rs +++ b/crates/algorithms/benches/crc32bench_iai.rs @@ -1,11 +1,24 @@ -use algorithms::crc::{CHECK_DATA, Crc, Crc32, ffi}; +use algorithms::crc::{self, Crc}; +use algorithms::hash; use iai::black_box; -fn iai_benchmark_native() -> ::Checksum { - Crc32::checksum(black_box(&CHECK_DATA)) +fn crc_benchmark_native() -> ::Checksum { + crc::Crc32::checksum(black_box(&crc::CHECK_DATA)) } -fn iai_benchmark_ffi() -> ::Checksum { - ffi::Crc32::checksum(black_box(&CHECK_DATA)) +fn crc_benchmark_ffi() -> ::Checksum { + crc::ffi::Crc32::checksum(black_box(&crc::CHECK_DATA)) } -iai::main!(iai_benchmark_native, iai_benchmark_ffi); +fn hash_benchmark_native() -> hash::Digest256 { + hash::sha2_256_oneshot(hash::HASH_EXAMPLE_DATA).unwrap() +} +fn hash_benchmark_ffi() -> hash::Digest256 { + hash::ffi::sha2_256_oneshot(hash::HASH_EXAMPLE_DATA).unwrap() +} + +iai::main!( + crc_benchmark_native, + crc_benchmark_ffi, + hash_benchmark_native, + hash_benchmark_ffi +); diff --git a/crates/algorithms/src/hash/mod.rs b/crates/algorithms/src/hash/mod.rs index 2647f85..349a7bb 100644 --- a/crates/algorithms/src/hash/mod.rs +++ b/crates/algorithms/src/hash/mod.rs @@ -2,3 +2,5 @@ pub mod ffi; mod sha2; pub use sha2::*; + +pub const HASH_EXAMPLE_DATA: &[u8] = b"lalilolela";