extern crate arrayvec; #[macro_use] extern crate bencher; use arrayvec::ArrayVec; use bencher::Bencher; fn extend_with_constant(b: &mut Bencher) { let mut v = ArrayVec::<[u8; 512]>::new(); let cap = v.capacity(); b.iter(|| { v.clear(); v.extend((0..cap).map(|_| 1)); v[0] }); b.bytes = v.capacity() as u64; } fn extend_with_range(b: &mut Bencher) { let mut v = ArrayVec::<[u8; 512]>::new(); let cap = v.capacity(); b.iter(|| { v.clear(); v.extend((0..cap).map(|x| x as _)); v[0] }); b.bytes = v.capacity() as u64; } fn extend_with_slice(b: &mut Bencher) { let mut v = ArrayVec::<[u8; 512]>::new(); let data = [1; 512]; b.iter(|| { v.clear(); v.extend(data.iter().cloned()); v[0] }); b.bytes = v.capacity() as u64; } benchmark_group!(benches, extend_with_constant, extend_with_range, extend_with_slice); benchmark_main!(benches);