Skip to content

Commit adcbff1

Browse files
committed
Benchmark the Iterator implementation
1 parent 7514c8f commit adcbff1

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

benchmarks/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ criterion = "0.3"
1414
name = "from_iterator"
1515
harness = false
1616
path = "from_iterator.rs"
17+
18+
[[bench]]
19+
name = "iterator"
20+
harness = false
21+
path = "iterator.rs"

benchmarks/iterator.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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, Debug)]
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+
Flag12 = 1 << 11,
20+
}
21+
22+
pub fn iterators(c: &mut Criterion) {
23+
let v1 = BitFlags::<Test>::from_bits(0x003).unwrap();
24+
let v2 = BitFlags::<Test>::from_bits(0x691).unwrap();
25+
let v3 = BitFlags::<Test>::from_bits(0xfed).unwrap();
26+
27+
c.bench_function("iterate (2/12)", |b| {
28+
b.iter(|| black_box(&v1).iter().collect::<Vec<_>>())
29+
});
30+
31+
c.bench_function("iterate (5/12)", |b| {
32+
b.iter(|| black_box(&v2).iter().collect::<Vec<_>>())
33+
});
34+
35+
c.bench_function("iterate (10/12)", |b| {
36+
b.iter(|| black_box(&v3).iter().collect::<Vec<_>>())
37+
});
38+
}
39+
40+
criterion_group!(benches, iterators);
41+
criterion_main!(benches);
42+

0 commit comments

Comments
 (0)