]> git.proxmox.com Git - rustc.git/blame - src/vendor/fixedbitset/benches/benches.rs
New upstream version 1.31.0+dfsg1
[rustc.git] / src / vendor / fixedbitset / benches / benches.rs
CommitLineData
83c7162d
XL
1#![feature(test)]
2
3extern crate test;
4extern crate fixedbitset;
5use test::Bencher;
6use fixedbitset::{FixedBitSet};
7use std::mem::size_of;
8
9#[inline]
10fn iter_ones_using_contains<F: FnMut(usize)>(fb: &FixedBitSet, f: &mut F) {
11 for bit in 0 .. fb.len() {
12 if fb.contains(bit) {
13 f(bit);
14 }
15 }
16}
17
18#[inline]
19fn iter_ones_using_slice_directly<F: FnMut(usize)>(fb: &FixedBitSet, f: &mut F) {
20 for (block_idx, &block) in fb.as_slice().iter().enumerate() {
21 let mut bit_pos = block_idx * size_of::<u32>() * 8;
22 let mut block: u32 = block;
23
24 while block != 0 {
25 if (block & 1) == 1 {
26 f(bit_pos);
27 }
28 block = block >> 1;
29 bit_pos += 1;
30 }
31 }
32}
33
34#[bench]
35fn bench_iter_ones_using_contains_all_zeros(b: &mut Bencher) {
36 const N: usize = 1_000_000;
37 let fb = FixedBitSet::with_capacity(N);
38
39 b.iter(|| {
40 let mut count = 0;
41 iter_ones_using_contains(&fb, &mut |_bit| count += 1);
42 count
43 });
44}
45
46#[bench]
47fn bench_iter_ones_using_contains_all_ones(b: &mut Bencher) {
48 const N: usize = 1_000_000;
49 let mut fb = FixedBitSet::with_capacity(N);
50 fb.insert_range(..);
51
52 b.iter(|| {
53 let mut count = 0;
54 iter_ones_using_contains(&fb, &mut |_bit| count += 1);
55 count
56 });
57}
58
59#[bench]
60fn bench_iter_ones_using_slice_directly_all_zero(b: &mut Bencher) {
61 const N: usize = 1_000_000;
62 let fb = FixedBitSet::with_capacity(N);
63
64 b.iter(|| {
65 let mut count = 0;
66 iter_ones_using_slice_directly(&fb, &mut |_bit| count += 1);
67 count
68 });
69}
70
71#[bench]
72fn bench_iter_ones_using_slice_directly_all_ones(b: &mut Bencher) {
73 const N: usize = 1_000_000;
74 let mut fb = FixedBitSet::with_capacity(N);
75 fb.insert_range(..);
76
77 b.iter(|| {
78 let mut count = 0;
79 iter_ones_using_slice_directly(&fb, &mut |_bit| count += 1);
80 count
81 });
82}
83
84#[bench]
85fn bench_iter_ones_all_zeros(b: &mut Bencher) {
86 const N: usize = 1_000_000;
87 let fb = FixedBitSet::with_capacity(N);
88
89 b.iter(|| {
90 let mut count = 0;
91 for _ in fb.ones() {
92 count += 1;
93 }
94 count
95 });
96}
97
98#[bench]
99fn bench_iter_ones_all_ones(b: &mut Bencher) {
100 const N: usize = 1_000_000;
101 let mut fb = FixedBitSet::with_capacity(N);
102 fb.insert_range(..);
103
104 b.iter(|| {
105 let mut count = 0;
106 for _ in fb.ones() {
107 count += 1;
108 }
109 count
110 });
111}
112
113#[bench]
114fn bench_insert_range(b: &mut Bencher) {
115 const N: usize = 1_000_000;
116 let mut fb = FixedBitSet::with_capacity(N);
117
118 b.iter(|| {
119 fb.insert_range(..)
120 });
121}
122
123#[bench]
124fn bench_insert_range_using_loop(b: &mut Bencher) {
125 const N: usize = 1_000_000;
126 let mut fb = FixedBitSet::with_capacity(N);
127
128 b.iter(|| {
129 for i in 0..N {
130 fb.insert(i);
131 }
132 });
133}