diff --git a/benches/transpose.rs b/benches/transpose.rs index 3779887..08ba8bf 100644 --- a/benches/transpose.rs +++ b/benches/transpose.rs @@ -1,23 +1,34 @@ use divan::Bencher; use std::hint::black_box; -use fastlanes::Transpose; +use fastlanes::{FastLanes, Transpose}; fn main() { divan::main(); } -#[divan::bench] -fn transpose_u16(bencher: Bencher) { - let mut values: [u16; 1024] = [0; 1024]; - for i in 0..1024 { - values[i] = (i % u16::MAX as usize) as u16; - } +fn values>() -> [T; 1024] { + core::array::from_fn(|i| T::try_from(i % 256).ok().unwrap_or_else(T::zero)) +} + +#[divan::bench(types = [u8, u16, u32, u64])] +fn transpose>(bencher: Bencher) { + let values = values::(); + let mut output = [T::zero(); 1024]; + + bencher.bench_local(|| { + T::transpose(black_box(&values), &mut output); + black_box(&output); + }); +} - let mut transposed = [0; 1024]; +#[divan::bench(types = [u8, u16, u32, u64])] +fn untranspose>(bencher: Bencher) { + let values = values::(); + let mut output = [T::zero(); 1024]; bencher.bench_local(|| { - Transpose::transpose(black_box(&values), &mut transposed); - black_box(&transposed); + T::untranspose(black_box(&values), &mut output); + black_box(&output); }); }