]> git.proxmox.com Git - rustc.git/blob - src/vendor/arrayvec/benches/extend.rs
New upstream version 1.25.0+dfsg1
[rustc.git] / src / vendor / arrayvec / benches / extend.rs
1
2 extern crate arrayvec;
3 #[macro_use] extern crate bencher;
4
5 use arrayvec::ArrayVec;
6
7 use bencher::Bencher;
8
9 fn extend_with_constant(b: &mut Bencher) {
10 let mut v = ArrayVec::<[u8; 512]>::new();
11 let cap = v.capacity();
12 b.iter(|| {
13 v.clear();
14 v.extend((0..cap).map(|_| 1));
15 v[0]
16 });
17 b.bytes = v.capacity() as u64;
18 }
19
20 fn extend_with_range(b: &mut Bencher) {
21 let mut v = ArrayVec::<[u8; 512]>::new();
22 let cap = v.capacity();
23 b.iter(|| {
24 v.clear();
25 v.extend((0..cap).map(|x| x as _));
26 v[0]
27 });
28 b.bytes = v.capacity() as u64;
29 }
30
31 fn extend_with_slice(b: &mut Bencher) {
32 let mut v = ArrayVec::<[u8; 512]>::new();
33 let data = [1; 512];
34 b.iter(|| {
35 v.clear();
36 v.extend(data.iter().cloned());
37 v[0]
38 });
39 b.bytes = v.capacity() as u64;
40 }
41
42 benchmark_group!(benches, extend_with_constant, extend_with_range, extend_with_slice);
43 benchmark_main!(benches);