From af8b746fc40cbe65b5741f469bd655e63b648890 Mon Sep 17 00:00:00 2001 From: bluss Date: Sun, 8 Oct 2017 17:27:24 +0200 Subject: [PATCH] FEAT: Add benchmarks for .extend() --- Cargo.toml | 5 +++++ benches/extend.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 benches/extend.rs diff --git a/Cargo.toml b/Cargo.toml index 6597a97..5f3100f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,11 @@ version = "1.0" [dev-dependencies] matches = { version = "0.1" } +bencher = "0.1.4" + +[[bench]] +name = "extend" +harness = false [features] default = ["std"] diff --git a/benches/extend.rs b/benches/extend.rs new file mode 100644 index 0000000..d380a7e --- /dev/null +++ b/benches/extend.rs @@ -0,0 +1,43 @@ + +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);