Skip to content

Commit ffff7ea

Browse files
committed
fix bench
1 parent da47c23 commit ffff7ea

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

crates/primitives/benches/integer_list.rs

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use criterion::{black_box, criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion};
2-
use rand::Rng;
2+
use rand::prelude::*;
33

44
pub fn new_pre_sorted(c: &mut Criterion) {
55
let mut group = c.benchmark_group("new_pre_sorted");
@@ -32,32 +32,50 @@ pub fn rank_select(c: &mut Criterion) {
3232
assert_eq!(integers_u64.len(), 2000);
3333

3434
group.bench_function(BenchmarkId::new("Elias-Fano", delta), |b| {
35-
let list = elias_fano::IntegerList::new_pre_sorted(black_box(&integers_usize)).0;
3635
b.iter_batched(
37-
|| list.clone(),
38-
|list| {
36+
|| {
37+
let (index, element) =
38+
integers_usize.iter().enumerate().choose(&mut thread_rng()).unwrap();
39+
(
40+
elias_fano::IntegerList::new_pre_sorted(black_box(&integers_usize)).0,
41+
index,
42+
*element,
43+
)
44+
},
45+
|(list, index, element)| {
3946
let list = list.enable_rank();
40-
list.rank(black_box(10));
41-
list.select(black_box(10));
47+
list.rank(element);
48+
list.select(index);
4249
},
4350
BatchSize::PerIteration,
4451
);
4552
});
4653

4754
group.bench_function(BenchmarkId::new("Roaring Bitmaps", delta), |b| {
48-
let list = reth_primitives::IntegerList::new_pre_sorted(black_box(&integers_u64));
49-
b.iter(|| {
50-
list.rank(black_box(10));
51-
list.select(black_box(10));
52-
});
55+
b.iter_batched(
56+
|| {
57+
let (index, element) =
58+
integers_u64.iter().enumerate().choose(&mut thread_rng()).unwrap();
59+
(
60+
reth_primitives::IntegerList::new_pre_sorted(black_box(&integers_u64)),
61+
index as u64,
62+
*element,
63+
)
64+
},
65+
|(list, index, element)| {
66+
list.rank(element);
67+
list.select(index);
68+
},
69+
BatchSize::PerIteration,
70+
);
5371
});
5472
}
5573
}
5674

5775
fn generate_integers(n: usize, delta: usize) -> Vec<usize> {
5876
(0..n).fold(Vec::new(), |mut vec, _| {
5977
vec.push(vec.last().map_or(0, |last| {
60-
last + rand::thread_rng().gen_range(delta - delta / 2..=delta + delta / 2)
78+
last + thread_rng().gen_range(delta - delta / 2..=delta + delta / 2)
6179
}));
6280
vec
6381
})

0 commit comments

Comments
 (0)