Skip to content

Commit b4cdd2d

Browse files
committed
Revert "Actually, fuck the benchmark"
This reverts commit f66ee6c.
1 parent 32793c1 commit b4cdd2d

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ optional = true
2323
[features]
2424
std = []
2525

26+
[dev-dependencies]
27+
criterion = "0.3"
28+
29+
[[bench]]
30+
name = "from_iterator"
31+
harness = false
32+
path = "benches/from_iterator.rs"
33+
2634
[workspace]
2735
members = [
2836
"enumflags_derive",

benches/from_iterator.rs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
use criterion::{black_box, criterion_group, criterion_main, Criterion};
2+
use enumflags2::{bitflags, BitFlags};
3+
4+
#[bitflags]
5+
#[repr(u16)]
6+
#[derive(Clone, Copy)]
7+
pub enum Test {
8+
Flag1 = 1 << 0,
9+
Flag2 = 1 << 1,
10+
Flag3 = 1 << 2,
11+
Flag4 = 1 << 3,
12+
Flag5 = 1 << 4,
13+
Flag6 = 1 << 5,
14+
Flag7 = 1 << 6,
15+
Flag8 = 1 << 7,
16+
Flag9 = 1 << 8,
17+
Flag10 = 1 << 9,
18+
Flag11 = 1 << 10,
19+
}
20+
21+
pub fn iterators(c: &mut Criterion) {
22+
let v = vec![Test::Flag3, Test::Flag7, Test::Flag5, Test::Flag11];
23+
24+
let v2 = vec![Test::Flag10, Test::Flag3, Test::Flag1, Test::Flag4];
25+
26+
c.bench_function("simple iterator collect", |b| {
27+
b.iter(|| black_box(&v).iter().copied().collect::<BitFlags<_>>())
28+
});
29+
30+
c.bench_function("chained iterator collect", |b| {
31+
b.iter(|| {
32+
black_box(&v)
33+
.iter()
34+
.chain(black_box(&v2).iter())
35+
.copied()
36+
.collect::<BitFlags<_>>()
37+
})
38+
});
39+
40+
c.bench_function("simple iterator extend", |b| {
41+
b.iter(|| {
42+
let mut flags = BitFlags::empty();
43+
flags.extend(black_box(&v).iter().copied());
44+
flags
45+
})
46+
});
47+
48+
c.bench_function("chained iterator extend", |b| {
49+
b.iter(|| {
50+
let mut flags = BitFlags::empty();
51+
flags.extend(black_box(&v).iter().chain(black_box(&v2).iter()).copied());
52+
flags
53+
})
54+
});
55+
}
56+
57+
criterion_group!(benches, iterators);
58+
criterion_main!(benches);

0 commit comments

Comments
 (0)