feat(alg): host benches for hash

This commit is contained in:
cscherr 2025-07-22 11:12:56 +02:00
parent e78dc4a628
commit 1e827d6b8a
Signed by: cscherrNT
GPG key ID: 8E2B45BC51A27EA7
3 changed files with 32 additions and 9 deletions

View file

@ -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}; use criterion::{Criterion, black_box, criterion_group, criterion_main};
pub fn criterion_benchmark(c: &mut Criterion) { pub fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("crc32", |b| { 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| { 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)))
}); });
} }

View file

@ -1,11 +1,24 @@
use algorithms::crc::{CHECK_DATA, Crc, Crc32, ffi}; use algorithms::crc::{self, Crc};
use algorithms::hash;
use iai::black_box; use iai::black_box;
fn iai_benchmark_native() -> <Crc32 as Crc>::Checksum { fn crc_benchmark_native() -> <crc::Crc32 as Crc>::Checksum {
Crc32::checksum(black_box(&CHECK_DATA)) crc::Crc32::checksum(black_box(&crc::CHECK_DATA))
} }
fn iai_benchmark_ffi() -> <Crc32 as Crc>::Checksum { fn crc_benchmark_ffi() -> <crc::ffi::Crc32 as Crc>::Checksum {
ffi::Crc32::checksum(black_box(&CHECK_DATA)) 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
);

View file

@ -2,3 +2,5 @@ pub mod ffi;
mod sha2; mod sha2;
pub use sha2::*; pub use sha2::*;
pub const HASH_EXAMPLE_DATA: &[u8] = b"lalilolela";