Skip to content

Commit b91c52a

Browse files
committed
rename, update benches
1 parent 40bc027 commit b91c52a

File tree

2 files changed

+57
-53
lines changed

2 files changed

+57
-53
lines changed

fastfield_codecs/benches/bench.rs

+41-31
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ extern crate test;
44

55
#[cfg(test)]
66
mod tests {
7-
use std::iter;
7+
use std::ops::RangeInclusive;
88
use std::sync::Arc;
99

1010
use common::OwnedBytes;
@@ -71,29 +71,24 @@ mod tests {
7171
});
7272
}
7373

74-
fn get_exp_data() -> Vec<u64> {
74+
const FIFTY_PERCENT_RANGE: RangeInclusive<u64> = 1..=50;
75+
const SINGLE_ITEM: u64 = 90;
76+
const SINGLE_ITEM_RANGE: RangeInclusive<u64> = 90..=90;
77+
const ONE_PERCENT_ITEM_RANGE: RangeInclusive<u64> = 49..=49;
78+
fn get_data_50percent_item() -> Vec<u128> {
79+
let mut rng = StdRng::from_seed([1u8; 32]);
80+
7581
let mut data = vec![];
76-
for i in 0..100 {
77-
let num = i * i;
78-
data.extend(iter::repeat(i as u64).take(num));
82+
for _ in 0..300_000 {
83+
let val = rng.gen_range(1..=100);
84+
data.push(val);
7985
}
80-
data.shuffle(&mut StdRng::from_seed([1u8; 32]));
81-
82-
assert_eq!(data.len(), 328350);
86+
data.push(SINGLE_ITEM);
8387

84-
// lengt = 328350
88+
data.shuffle(&mut rng);
89+
let data = data.iter().map(|el| *el as u128).collect::<Vec<_>>();
8590
data
8691
}
87-
88-
fn get_data_50percent_item() -> (u128, u128, Vec<u128>) {
89-
let mut permutation = get_exp_data();
90-
let major_item = 20;
91-
let minor_item = 10;
92-
permutation.extend(iter::repeat(major_item).take(permutation.len()));
93-
permutation.shuffle(&mut StdRng::from_seed([1u8; 32]));
94-
let permutation = permutation.iter().map(|el| *el as u128).collect::<Vec<_>>();
95-
(major_item as u128, minor_item as u128, permutation)
96-
}
9792
fn get_u128_column_random() -> Arc<dyn Column<u128>> {
9893
let permutation = generate_random();
9994
let permutation = permutation.iter().map(|el| *el as u128).collect::<Vec<_>>();
@@ -111,15 +106,31 @@ mod tests {
111106
// U64 RANGE START
112107
#[bench]
113108
fn bench_intfastfield_getrange_u64_50percent_hit(b: &mut Bencher) {
114-
let (major_item, _minor_item, data) = get_data_50percent_item();
115-
let major_item = major_item as u64;
109+
let data = get_data_50percent_item();
110+
let data = data.iter().map(|el| *el as u64).collect::<Vec<_>>();
111+
let column: Arc<dyn Column<u64>> = serialize_and_load(&data);
112+
113+
b.iter(|| {
114+
let mut positions = Vec::new();
115+
column.get_docids_for_value_range(
116+
FIFTY_PERCENT_RANGE,
117+
0..data.len() as u32,
118+
&mut positions,
119+
);
120+
positions
121+
});
122+
}
123+
124+
#[bench]
125+
fn bench_intfastfield_getrange_u64_1percent_hit(b: &mut Bencher) {
126+
let data = get_data_50percent_item();
116127
let data = data.iter().map(|el| *el as u64).collect::<Vec<_>>();
117128
let column: Arc<dyn Column<u64>> = serialize_and_load(&data);
118129

119130
b.iter(|| {
120131
let mut positions = Vec::new();
121132
column.get_docids_for_value_range(
122-
major_item..=major_item,
133+
ONE_PERCENT_ITEM_RANGE,
123134
0..data.len() as u32,
124135
&mut positions,
125136
);
@@ -129,15 +140,14 @@ mod tests {
129140

130141
#[bench]
131142
fn bench_intfastfield_getrange_u64_single_hit(b: &mut Bencher) {
132-
let (_major_item, minor_item, data) = get_data_50percent_item();
133-
let minor_item = minor_item as u64;
143+
let data = get_data_50percent_item();
134144
let data = data.iter().map(|el| *el as u64).collect::<Vec<_>>();
135145
let column: Arc<dyn Column<u64>> = serialize_and_load(&data);
136146

137147
b.iter(|| {
138148
let mut positions = Vec::new();
139149
column.get_docids_for_value_range(
140-
minor_item..=minor_item,
150+
SINGLE_ITEM_RANGE,
141151
0..data.len() as u32,
142152
&mut positions,
143153
);
@@ -147,7 +157,7 @@ mod tests {
147157

148158
#[bench]
149159
fn bench_intfastfield_getrange_u64_hit_all(b: &mut Bencher) {
150-
let (_major_item, _minor_item, data) = get_data_50percent_item();
160+
let data = get_data_50percent_item();
151161
let data = data.iter().map(|el| *el as u64).collect::<Vec<_>>();
152162
let column: Arc<dyn Column<u64>> = serialize_and_load(&data);
153163

@@ -162,13 +172,13 @@ mod tests {
162172
// U128 RANGE START
163173
#[bench]
164174
fn bench_intfastfield_getrange_u128_50percent_hit(b: &mut Bencher) {
165-
let (major_item, _minor_item, data) = get_data_50percent_item();
175+
let data = get_data_50percent_item();
166176
let column = get_u128_column_from_data(&data);
167177

168178
b.iter(|| {
169179
let mut positions = Vec::new();
170180
column.get_docids_for_value_range(
171-
major_item..=major_item,
181+
*FIFTY_PERCENT_RANGE.start() as u128..=*FIFTY_PERCENT_RANGE.end() as u128,
172182
0..data.len() as u32,
173183
&mut positions,
174184
);
@@ -178,13 +188,13 @@ mod tests {
178188

179189
#[bench]
180190
fn bench_intfastfield_getrange_u128_single_hit(b: &mut Bencher) {
181-
let (_major_item, minor_item, data) = get_data_50percent_item();
191+
let data = get_data_50percent_item();
182192
let column = get_u128_column_from_data(&data);
183193

184194
b.iter(|| {
185195
let mut positions = Vec::new();
186196
column.get_docids_for_value_range(
187-
minor_item..=minor_item,
197+
*SINGLE_ITEM_RANGE.start() as u128..=*SINGLE_ITEM_RANGE.end() as u128,
188198
0..data.len() as u32,
189199
&mut positions,
190200
);
@@ -194,7 +204,7 @@ mod tests {
194204

195205
#[bench]
196206
fn bench_intfastfield_getrange_u128_hit_all(b: &mut Bencher) {
197-
let (_major_item, _minor_item, data) = get_data_50percent_item();
207+
let data = get_data_50percent_item();
198208
let column = get_u128_column_from_data(&data);
199209

200210
b.iter(|| {

src/query/range_query/range_query_u64_fastfield.rs

+16-22
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,27 @@ impl Weight for FastFieldRangeWeight {
3636
let field_type = reader.schema().get_field_entry(self.field).field_type();
3737
match field_type.fastfield_cardinality().unwrap() {
3838
Cardinality::SingleValue => {
39-
let ip_addr_fast_field = reader.fast_fields().u64_lenient(self.field)?;
39+
let fast_field = reader.fast_fields().u64_lenient(self.field)?;
4040
let value_range = bound_to_value_range(
4141
&self.left_bound,
4242
&self.right_bound,
43-
ip_addr_fast_field.min_value(),
44-
ip_addr_fast_field.max_value(),
45-
);
46-
let docset = RangeDocSet::new(
47-
value_range,
48-
FastFieldCardinality::SingleValue(ip_addr_fast_field),
43+
fast_field.min_value(),
44+
fast_field.max_value(),
4945
);
46+
let docset =
47+
RangeDocSet::new(value_range, FastFieldCardinality::SingleValue(fast_field));
5048
Ok(Box::new(ConstScorer::new(docset, boost)))
5149
}
5250
Cardinality::MultiValues => {
53-
let ip_addr_fast_field = reader.fast_fields().u64s_lenient(self.field)?;
51+
let fast_field = reader.fast_fields().u64s_lenient(self.field)?;
5452
let value_range = bound_to_value_range(
5553
&self.left_bound,
5654
&self.right_bound,
57-
ip_addr_fast_field.min_value(),
58-
ip_addr_fast_field.max_value(),
59-
);
60-
let docset = RangeDocSet::new(
61-
value_range,
62-
FastFieldCardinality::MultiValue(ip_addr_fast_field),
55+
fast_field.min_value(),
56+
fast_field.max_value(),
6357
);
58+
let docset =
59+
RangeDocSet::new(value_range, FastFieldCardinality::MultiValue(fast_field));
6460
Ok(Box::new(ConstScorer::new(docset, boost)))
6561
}
6662
}
@@ -131,15 +127,13 @@ mod tests {
131127
pub fn doc_from_id_1(id: u64) -> Doc {
132128
let id = id * 1000;
133129
Doc {
134-
// ip != id
135130
id_name: id.to_string(),
136131
id,
137132
}
138133
}
139134
fn doc_from_id_2(id: u64) -> Doc {
140135
let id = id * 1000;
141136
Doc {
142-
// ip != id
143137
id_name: (id - 1).to_string(),
144138
id,
145139
}
@@ -148,19 +142,19 @@ mod tests {
148142
proptest! {
149143
#![proptest_config(ProptestConfig::with_cases(10))]
150144
#[test]
151-
fn test_ip_range_for_docs_prop(ops in proptest::collection::vec(operation_strategy(), 1..1000)) {
145+
fn test_range_for_docs_prop(ops in proptest::collection::vec(operation_strategy(), 1..1000)) {
152146
assert!(test_id_range_for_docs(ops).is_ok());
153147
}
154148
}
155149

156150
#[test]
157-
fn ip_range_regression1_test() {
151+
fn range_regression1_test() {
158152
let ops = vec![doc_from_id_1(0)];
159153
assert!(test_id_range_for_docs(ops).is_ok());
160154
}
161155

162156
#[test]
163-
fn ip_range_regression2_test() {
157+
fn range_regression2_test() {
164158
let ops = vec![
165159
doc_from_id_1(52),
166160
doc_from_id_1(63),
@@ -172,13 +166,13 @@ mod tests {
172166
}
173167

174168
#[test]
175-
fn ip_range_regression3_test() {
169+
fn range_regression3_test() {
176170
let ops = vec![doc_from_id_1(1), doc_from_id_1(2), doc_from_id_1(3)];
177171
assert!(test_id_range_for_docs(ops).is_ok());
178172
}
179173

180174
#[test]
181-
fn ip_range_regression4_test() {
175+
fn range_regression4_test() {
182176
let ops = vec![doc_from_id_2(100)];
183177
assert!(test_id_range_for_docs(ops).is_ok());
184178
}
@@ -294,7 +288,7 @@ mod tests {
294288
);
295289
assert_eq!(get_num_hits(query_from_text(&query)), expected_num_hits);
296290

297-
// Intersection search on multivalue ip field
291+
// Intersection search on multivalue id field
298292
let id_filter = sample_docs[0].id_name.to_string();
299293
let query = format!(
300294
"{} AND id_name:{}",

0 commit comments

Comments
 (0)