#![feature(test)] extern crate test; extern crate rand; extern crate indexing; use test::Bencher; use rand::{Rng, SeedableRng}; use rand::rngs::StdRng; use indexing::algorithms::*; fn test_data_max(n: usize, max: i32) -> Vec { let mut rng = StdRng::from_seed([0; 32]); let mut v = Vec::new(); for _ in 0..n { v.push(rng.gen_range(0, max)); } v } const ZIPLEN: usize = 256; #[cfg(feature="experimental_pointer_ranges")] #[bench] fn zip_1(bench: &mut Bencher) { let xs = test_data_max(ZIPLEN, 21); let ys = test_data_max(ZIPLEN, 21); bench.iter(|| { zip_dot_i32(&xs, &ys) }); } #[cfg(feature="experimental_pointer_ranges")] #[bench] fn zip_2(bench: &mut Bencher) { let xs = test_data_max(ZIPLEN, 21); let ys = test_data_max(ZIPLEN, 21); bench.iter(|| { zip_dot_i32_prange(&xs, &ys) }); } #[cfg(feature="experimental_pointer_ranges")] #[bench] fn copy_1(bench: &mut Bencher) { let xs = test_data_max(ZIPLEN, 21); let mut ys = test_data_max(ZIPLEN, 21); bench.iter(|| { copy(&xs, &mut ys) }); } #[cfg(feature="experimental_pointer_ranges")] #[bench] fn copy_2(bench: &mut Bencher) { let xs = test_data_max(ZIPLEN, 21); let mut ys = test_data_max(ZIPLEN, 21); bench.iter(|| { copy_prange(&xs, &mut ys) }); }