Skip to content

Commit af8b746

Browse files
committed
FEAT: Add benchmarks for .extend()
1 parent d89699f commit af8b746

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ version = "1.0"
3030

3131
[dev-dependencies]
3232
matches = { version = "0.1" }
33+
bencher = "0.1.4"
34+
35+
[[bench]]
36+
name = "extend"
37+
harness = false
3338

3439
[features]
3540
default = ["std"]

benches/extend.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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);

0 commit comments

Comments
 (0)