| use std::{collections::VecDeque, time::Instant}; |
| |
| const VECDEQUE_LEN: i32 = 100000; |
| const WARMUP_N: usize = 100; |
| const BENCH_N: usize = 1000; |
| |
| fn main() { |
| let a: VecDeque<i32> = (0..VECDEQUE_LEN).collect(); |
| let b: VecDeque<i32> = (0..VECDEQUE_LEN).collect(); |
| |
| for _ in 0..WARMUP_N { |
| let mut c = a.clone(); |
| let mut d = b.clone(); |
| c.append(&mut d); |
| } |
| |
| let mut durations = Vec::with_capacity(BENCH_N); |
| |
| for _ in 0..BENCH_N { |
| let mut c = a.clone(); |
| let mut d = b.clone(); |
| let before = Instant::now(); |
| c.append(&mut d); |
| let after = Instant::now(); |
| durations.push(after.duration_since(before)); |
| } |
| |
| let l = durations.len(); |
| durations.sort(); |
| |
| assert!(BENCH_N % 2 == 0); |
| let median = (durations[(l / 2) - 1] + durations[l / 2]) / 2; |
| println!( |
| "\ncustom-bench vec_deque_append {:?} ns/iter\n", |
| median.as_nanos() |
| ); |
| } |