use crate::{traits::*, HeapRb}; use test::{black_box, Bencher}; const RB_SIZE: usize = 1024; #[bench] fn push_iter_x1000(b: &mut Bencher) { let buf = HeapRb::::new(RB_SIZE); let (mut prod, mut cons) = buf.split(); prod.push_slice(&[0; RB_SIZE / 2]); cons.skip(RB_SIZE / 2); b.iter(|| { prod.push_iter(0..1000); black_box(cons.as_slices()); unsafe { cons.advance_read_index(1000) }; }); } #[bench] fn pop_iter_x1000(b: &mut Bencher) { let buf = HeapRb::::new(RB_SIZE); let (mut prod, mut cons) = buf.split(); prod.push_slice(&[0; RB_SIZE / 2]); cons.skip(RB_SIZE / 2); prod.push_slice(&[1; 1000]); b.iter(|| { for x in cons.pop_iter() { black_box(x); } unsafe { prod.advance_write_index(1000) }; }); }