use diol::prelude::*; fn main() -> std::io::Result<()> { let mut bench = Bench::new(BenchConfig::from_args()?); bench.register_many( list![slice_times_two, slice_times_two_autovec], [4, 8, 16, 128, 1024].map(PlotArg), ); bench.run()?; Ok(()) } fn slice_times_two(bencher: Bencher, PlotArg(len): PlotArg) { let mut v = vec![0.0_f64; len]; bencher.bench(|| { for x in &mut v { *x *= 2.0; } black_box(&mut v); }); } fn slice_times_two_autovec(bencher: Bencher, PlotArg(len): PlotArg) { let mut v = vec![0.0_f64; len]; let arch = pulp::Arch::new(); bencher.bench(|| { arch.dispatch( #[inline(always)] || { for x in &mut v { *x *= 2.0; } }, ); black_box(&mut v); }); }