]> git.proxmox.com Git - rustc.git/blame - vendor/arrayvec/benches/extend.rs
New upstream version 1.46.0~beta.2+dfsg1
[rustc.git] / vendor / arrayvec / benches / extend.rs
CommitLineData
2c00a5a8
XL
1
2extern crate arrayvec;
3#[macro_use] extern crate bencher;
4
f035d41b
XL
5use std::io::Write;
6
2c00a5a8
XL
7use arrayvec::ArrayVec;
8
9use bencher::Bencher;
f035d41b 10use bencher::black_box;
2c00a5a8
XL
11
12fn extend_with_constant(b: &mut Bencher) {
13 let mut v = ArrayVec::<[u8; 512]>::new();
14 let cap = v.capacity();
15 b.iter(|| {
16 v.clear();
f035d41b
XL
17 let constant = black_box(1);
18 v.extend((0..cap).map(move |_| constant));
19 v[511]
2c00a5a8
XL
20 });
21 b.bytes = v.capacity() as u64;
22}
23
24fn extend_with_range(b: &mut Bencher) {
25 let mut v = ArrayVec::<[u8; 512]>::new();
26 let cap = v.capacity();
27 b.iter(|| {
28 v.clear();
f035d41b
XL
29 let range = 0..cap;
30 v.extend(range.map(|x| black_box(x as _)));
31 v[511]
2c00a5a8
XL
32 });
33 b.bytes = v.capacity() as u64;
34}
35
36fn extend_with_slice(b: &mut Bencher) {
37 let mut v = ArrayVec::<[u8; 512]>::new();
38 let data = [1; 512];
39 b.iter(|| {
40 v.clear();
f035d41b
XL
41 let iter = data.iter().map(|&x| x);
42 v.extend(iter);
43 v[511]
44 });
45 b.bytes = v.capacity() as u64;
46}
47
48fn extend_with_write(b: &mut Bencher) {
49 let mut v = ArrayVec::<[u8; 512]>::new();
50 let data = [1; 512];
51 b.iter(|| {
52 v.clear();
53 v.write(&data[..]).ok();
54 v[511]
2c00a5a8
XL
55 });
56 b.bytes = v.capacity() as u64;
57}
58
f035d41b
XL
59fn extend_from_slice(b: &mut Bencher) {
60 let mut v = ArrayVec::<[u8; 512]>::new();
61 let data = [1; 512];
62 b.iter(|| {
63 v.clear();
64 v.try_extend_from_slice(&data).ok();
65 v[511]
66 });
67 b.bytes = v.capacity() as u64;
68}
69
70benchmark_group!(benches,
71 extend_with_constant,
72 extend_with_range,
73 extend_with_slice,
74 extend_with_write,
75 extend_from_slice
76);
77
2c00a5a8 78benchmark_main!(benches);