#[macro_use]
extern crate pew;
extern crate rand;
use pew::Benchmark;
use rand::{thread_rng, Rng};
use std::vec::Vec;
fn get_vec(n: u64) -> Vec<u64> {
let mut rng = thread_rng();
let mut vec = Vec::new();
for _ in 0..n {
vec.push(rng.gen::<u64>());
}
return vec;
}
fn bm_vector_iterate(state: &mut pew::State<Vec<u64>>) {
let vec = state.get_input();
let n = vec.len() as u64;
for i in 0..n {
pew::do_not_optimize(i);
}
}
fn bm_vector_delete(state: &mut pew::State<Vec<u64>>) {
let mut vec = state.get_input();
let n = vec.len() as u64;
for _ in 0..n {
pew::do_not_optimize(vec.pop());
}
}
fn main() {
Benchmark::with_name("example2")
.with_range(1 << 10, 1 << 20, 4)
.with_generator(get_vec)
.with_bench(pew_bench!(bm_vector_iterate))
.with_bench(pew_bench!(bm_vector_delete))
.run();
}