//! This file benchmarks the `sm` function. use criterion::{black_box, criterion_group, criterion_main, Criterion}; use rand::{ distributions::{Distribution, Uniform}, thread_rng, }; #[allow(unused_imports)] use sort::{sm, smi}; fn bench_10(c: &mut Criterion) { let mut rng = thread_rng(); let input = { let uniform = Uniform::new(-100.0f32, 100.0f32); uniform.sample_iter(&mut rng).take(10).collect::>() }; assert_eq!(input.len(), 10); c.bench_function("smi", |b| { b.iter(|| { let mut count = 0; black_box(smi(input.as_slice(), &mut count)) }) }); } fn bench_20(c: &mut Criterion) { let mut rng = thread_rng(); let input = { let uniform = Uniform::new(-100.0f32, 100.0f32); uniform.sample_iter(&mut rng).take(20).collect::>() }; assert_eq!(input.len(), 20); c.bench_function("smi", |b| { b.iter(|| { let mut count = 0; black_box(smi(input.as_slice(), &mut count)) }) }); } fn bench_40(c: &mut Criterion) { let mut rng = thread_rng(); let input = { let uniform = Uniform::new(-100.0f32, 100.0f32); uniform.sample_iter(&mut rng).take(40).collect::>() }; assert_eq!(input.len(), 40); c.bench_function("smi", |b| { b.iter(|| { let mut count = 0; black_box(smi(input.as_slice(), &mut count)) }) }); } fn bench_80(c: &mut Criterion) { let mut rng = thread_rng(); let input = { let uniform = Uniform::new(-100.0f32, 100.0f32); uniform.sample_iter(&mut rng).take(80).collect::>() }; assert_eq!(input.len(), 80); c.bench_function("smi", |b| { b.iter(|| { let mut count = 0; black_box(smi(input.as_slice(), &mut count)) }) }); } fn bench_160(c: &mut Criterion) { let mut rng = thread_rng(); let input = { let uniform = Uniform::new(-100.0f32, 100.0f32); uniform.sample_iter(&mut rng).take(160).collect::>() }; assert_eq!(input.len(), 160); c.bench_function("smi", |b| { b.iter(|| { let mut count = 0; black_box(smi(input.as_slice(), &mut count)) }) }); } criterion_group!(benches, bench_10, bench_20, bench_40, bench_80, bench_160); criterion_main!(benches);