Skip to content

Commit 75955c5

Browse files
committed
TEST: Tweak extend benchmarks, add write benchmark
.write() is explicitly memcpy, so it's nice to compare with.
1 parent d84cb37 commit 75955c5

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

benches/extend.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
extern crate arrayvec;
33
#[macro_use] extern crate bencher;
44

5+
use std::io::Write;
6+
57
use arrayvec::ArrayVec;
68

79
use bencher::Bencher;
@@ -23,7 +25,7 @@ fn extend_with_range(b: &mut Bencher) {
2325
let cap = v.capacity();
2426
b.iter(|| {
2527
v.clear();
26-
v.extend((0..cap).map(|x| x as _));
28+
v.extend((0..black_box(cap)).map(|x| x as _));
2729
v[0]
2830
});
2931
b.bytes = v.capacity() as u64;
@@ -34,11 +36,23 @@ fn extend_with_slice(b: &mut Bencher) {
3436
let data = [1; 512];
3537
b.iter(|| {
3638
v.clear();
37-
v.extend(black_box(data.iter()).cloned());
39+
v.extend(data.iter().cloned());
40+
v[0]
41+
});
42+
b.bytes = v.capacity() as u64;
43+
}
44+
45+
fn extend_with_write(b: &mut Bencher) {
46+
let mut v = ArrayVec::<[u8; 512]>::new();
47+
let data = [1; 512];
48+
b.iter(|| {
49+
v.clear();
50+
v.write(&black_box(&data)[..]).ok();
3851
v[0]
3952
});
4053
b.bytes = v.capacity() as u64;
4154
}
4255

43-
benchmark_group!(benches, extend_with_constant, extend_with_range, extend_with_slice);
56+
benchmark_group!(benches, extend_with_constant, extend_with_range,
57+
extend_with_slice, extend_with_write);
4458
benchmark_main!(benches);

0 commit comments

Comments
 (0)