// Copyright 2019 Developers of the Rand project. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(test)] extern crate test; use test::Bencher; use rand::Rng; use rand::distributions::WeightedIndex; #[bench] fn weighted_index_creation(b: &mut Bencher) { let mut rng = rand::thread_rng(); let weights = [1u32, 2, 4, 0, 5, 1, 7, 1, 2, 3, 4, 5, 6, 7]; b.iter(|| { let distr = WeightedIndex::new(weights.to_vec()).unwrap(); rng.sample(distr) }) } #[bench] fn weighted_index_modification(b: &mut Bencher) { let mut rng = rand::thread_rng(); let weights = [1u32, 2, 3, 0, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7]; let mut distr = WeightedIndex::new(weights.to_vec()).unwrap(); b.iter(|| { distr.update_weights(&[(2, &4), (5, &1)]).unwrap(); rng.sample(&distr) }) }