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};
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)))
});
}

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;
fn iai_benchmark_native() -> <Crc32 as Crc>::Checksum {
Crc32::checksum(black_box(&CHECK_DATA))
fn crc_benchmark_native() -> <crc::Crc32 as Crc>::Checksum {
crc::Crc32::checksum(black_box(&crc::CHECK_DATA))
}
fn iai_benchmark_ffi() -> <Crc32 as Crc>::Checksum {
ffi::Crc32::checksum(black_box(&CHECK_DATA))
fn crc_benchmark_ffi() -> <crc::ffi::Crc32 as Crc>::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
);

View file

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