| #![feature(test)] |
| |
| extern crate test; |
| extern crate rand; |
| |
| use test::{black_box, Bencher}; |
| |
| use rand::{Rng, weak_rng}; |
| use rand::seq::*; |
| |
| #[bench] |
| fn misc_shuffle_100(b: &mut Bencher) { |
| let mut rng = weak_rng(); |
| let x : &mut [usize] = &mut [1; 100]; |
| b.iter(|| { |
| rng.shuffle(x); |
| black_box(&x); |
| }) |
| } |
| |
| #[bench] |
| fn misc_sample_iter_10_of_100(b: &mut Bencher) { |
| let mut rng = weak_rng(); |
| let x : &[usize] = &[1; 100]; |
| b.iter(|| { |
| black_box(sample_iter(&mut rng, x, 10).unwrap_or_else(|e| e)); |
| }) |
| } |
| |
| #[bench] |
| fn misc_sample_slice_10_of_100(b: &mut Bencher) { |
| let mut rng = weak_rng(); |
| let x : &[usize] = &[1; 100]; |
| b.iter(|| { |
| black_box(sample_slice(&mut rng, x, 10)); |
| }) |
| } |
| |
| #[bench] |
| fn misc_sample_slice_ref_10_of_100(b: &mut Bencher) { |
| let mut rng = weak_rng(); |
| let x : &[usize] = &[1; 100]; |
| b.iter(|| { |
| black_box(sample_slice_ref(&mut rng, x, 10)); |
| }) |
| } |
| |
| macro_rules! sample_indices { |
| ($name:ident, $amount:expr, $length:expr) => { |
| #[bench] |
| fn $name(b: &mut Bencher) { |
| let mut rng = weak_rng(); |
| b.iter(|| { |
| black_box(sample_indices(&mut rng, $length, $amount)); |
| }) |
| } |
| } |
| } |
| |
| sample_indices!(misc_sample_indices_10_of_1k, 10, 1000); |
| sample_indices!(misc_sample_indices_50_of_1k, 50, 1000); |
| sample_indices!(misc_sample_indices_100_of_1k, 100, 1000); |