Skip to content

Commit 18242bf

Browse files
committed
chore: benchmark hygene
Signed-off-by: Alexander Droste <[email protected]>
1 parent c241f59 commit 18242bf

File tree

20 files changed

+113
-122
lines changed

20 files changed

+113
-122
lines changed

encodings/alp/benches/alp_compress.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ fn decompress_alp<T: ALPFloat + NativePType>(bencher: Bencher, args: (usize, f64
105105
fn compress_rd<T: ALPRDFloat>(bencher: Bencher, n: usize) {
106106
let primitive = PrimitiveArray::new(buffer![T::from(1.23).unwrap(); n], Validity::NonNullable);
107107
let encoder = RDEncoder::new(&[T::from(1.23).unwrap()]);
108-
bencher.bench(|| encoder.encode(&primitive));
108+
109+
bencher
110+
.with_inputs(|| &primitive)
111+
.bench_refs(|primitive| encoder.encode(primitive))
109112
}
110113

111114
#[divan::bench(types = [f32, f64], args = [10_000, 100_000])]
@@ -115,6 +118,6 @@ fn decompress_rd<T: ALPRDFloat>(bencher: Bencher, n: usize) {
115118
let encoded = encoder.encode(&primitive);
116119

117120
bencher
118-
.with_inputs(move || encoded.clone())
119-
.bench_values(|encoded| encoded.to_canonical());
121+
.with_inputs(|| &encoded)
122+
.bench_refs(|encoded| encoded.to_canonical());
120123
}

encodings/fastlanes/benches/pipeline_bitpacking_compare_scalar.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ pub fn eval<T: NativePType + Into<Scalar>>(bencher: Bencher, fraction_kept: f64)
7272

7373
bencher
7474
// Be sure to reconstruct the mask to avoid cached set_indices
75-
.with_inputs(|| (Mask::from_buffer(mask.clone()), array.clone()))
76-
.bench_refs(|(mask, array)| {
75+
.with_inputs(|| (&array, Mask::from_buffer(mask.clone())))
76+
.bench_refs(|(array, mask)| {
7777
// We run the filter first, then compare.
7878
let array = filter(array.as_ref(), mask).unwrap();
7979
expr.evaluate(&array).unwrap().to_canonical()

encodings/fsst/benches/chunked_dict_fsst_builder.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn chunked_dict_fsst_canonical_into(
4343
) {
4444
let chunk = make_dict_fsst_chunks::<u16>(len, unique_values, chunk_count);
4545

46-
bencher.with_inputs(|| chunk.clone()).bench_values(|chunk| {
46+
bencher.with_inputs(|| &chunk).bench_refs(|chunk| {
4747
let mut builder = builder_with_capacity(chunk.dtype(), len * chunk_count);
4848
chunk.append_to_builder(builder.as_mut());
4949
builder.finish()
@@ -58,6 +58,6 @@ fn chunked_dict_fsst_into_canonical(
5858
let chunk = make_dict_fsst_chunks::<u16>(len, unique_values, chunk_count);
5959

6060
bencher
61-
.with_inputs(|| chunk.clone())
62-
.bench_values(|chunk| chunk.to_canonical())
61+
.with_inputs(|| &chunk)
62+
.bench_refs(|chunk| chunk.to_canonical())
6363
}

encodings/fsst/benches/fsst_compress.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ fn decompress_fsst(bencher: Bencher, (string_count, avg_len, unique_chars): (usi
5757
let encoded = fsst_compress(array, &compressor);
5858

5959
bencher
60-
.with_inputs(|| encoded.clone())
61-
.bench_values(|encoded| encoded.to_canonical())
60+
.with_inputs(|| &encoded)
61+
.bench_refs(|encoded| encoded.to_canonical())
6262
}
6363

6464
#[divan::bench(args = BENCH_ARGS)]
@@ -75,7 +75,7 @@ fn pushdown_compare(bencher: Bencher, (string_count, avg_len, unique_chars): (us
7575
let constant = ConstantArray::new(Scalar::from(&b"const"[..]), array.len());
7676

7777
bencher
78-
.with_inputs(|| (fsst_array.clone(), constant.clone()))
78+
.with_inputs(|| (&fsst_array, &constant))
7979
.bench_refs(|(fsst_array, constant)| {
8080
compare(fsst_array.as_ref(), constant.as_ref(), Operator::Eq).unwrap();
8181
})
@@ -92,7 +92,7 @@ fn canonicalize_compare(
9292
let constant = ConstantArray::new(Scalar::from(&b"const"[..]), array.len());
9393

9494
bencher
95-
.with_inputs(|| (fsst_array.clone(), constant.clone()))
95+
.with_inputs(|| (&fsst_array, &constant))
9696
.bench_refs(|(fsst_array, constant)| {
9797
compare(
9898
fsst_array.to_canonical().as_ref(),
@@ -123,7 +123,7 @@ fn chunked_canonicalize_into(
123123
) {
124124
let array = generate_chunked_test_data(chunk_size, string_count, avg_len, unique_chars);
125125

126-
bencher.with_inputs(|| array.clone()).bench_values(|array| {
126+
bencher.with_inputs(|| &array).bench_refs(|array| {
127127
let mut builder =
128128
VarBinViewBuilder::with_capacity(DType::Binary(Nullability::NonNullable), array.len());
129129
array.append_to_builder(&mut builder);
@@ -139,8 +139,8 @@ fn chunked_into_canonical(
139139
let array = generate_chunked_test_data(chunk_size, string_count, avg_len, unique_chars);
140140

141141
bencher
142-
.with_inputs(|| array.clone())
143-
.bench_values(|array| array.to_canonical());
142+
.with_inputs(|| &array)
143+
.bench_refs(|array| array.to_canonical());
144144
}
145145

146146
/// Helper function to generate random string data.

encodings/pco/benches/pco.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ pub fn pco_pipeline(bencher: Bencher, (size, selectivity): (usize, f64)) {
5454
.collect::<BitBuffer>();
5555

5656
bencher
57-
.with_inputs(|| (Mask::from_buffer(mask.clone()), pco_array.clone()))
58-
.bench_refs(|(mask, pco_array)| pco_array.execute_with_selection(mask).unwrap());
57+
// Be sure to reconstruct the mask to avoid cached set_indices
58+
.with_inputs(|| (&pco_array, Mask::from_buffer(mask.clone())))
59+
.bench_refs(|(pco_array, mask)| pco_array.execute_with_selection(mask).unwrap());
5960
}
6061

6162
#[divan::bench(args = [
@@ -87,6 +88,7 @@ pub fn pco_canonical(bencher: Bencher, (size, selectivity): (usize, f64)) {
8788
.collect::<BitBuffer>();
8889

8990
bencher
90-
.with_inputs(|| (Mask::from_buffer(mask.clone()), pco_array.clone()))
91-
.bench_refs(|(mask, pco_array)| filter(pco_array.to_canonical().as_ref(), mask).unwrap());
91+
// Be sure to reconstruct the mask to avoid cached set_indices
92+
.with_inputs(|| (&pco_array, Mask::from_buffer(mask.clone())))
93+
.bench_refs(|(pco_array, mask)| filter(pco_array.to_canonical().as_ref(), mask).unwrap());
9294
}

encodings/runend/benches/run_end_compress.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ fn compress(bencher: Bencher, (length, run_step): (usize, usize)) {
5353
);
5454

5555
bencher
56-
.with_inputs(|| values.clone())
56+
.with_inputs(|| &values)
5757
.bench_refs(|values| runend_encode(values));
5858
}
5959

@@ -71,10 +71,11 @@ fn decompress<T: IntegerPType>(bencher: Bencher, (length, run_step): (usize, usi
7171
.into_array();
7272

7373
let run_end_array = RunEndArray::new(ends, values);
74+
let array = run_end_array.to_array();
7475

7576
bencher
76-
.with_inputs(|| run_end_array.to_array())
77-
.bench_values(|array| array.to_canonical());
77+
.with_inputs(|| &array)
78+
.bench_refs(|array| array.to_canonical());
7879
}
7980

8081
#[divan::bench(args = BENCH_ARGS)]
@@ -90,9 +91,11 @@ fn take_indices(bencher: Bencher, (length, run_step): (usize, usize)) {
9091

9192
let source_array = PrimitiveArray::from_iter(0..(length as i32)).into_array();
9293
let (ends, values) = runend_encode(&values);
93-
let runend_array = RunEndArray::try_new(ends.into_array(), values).unwrap();
94+
let runend_array = RunEndArray::try_new(ends.into_array(), values)
95+
.unwrap()
96+
.to_array();
9497

9598
bencher
96-
.with_inputs(|| (source_array.clone(), runend_array.to_array()))
97-
.bench_refs(|(array, indices)| take(array, indices).unwrap());
99+
.with_inputs(|| (&source_array, &runend_array))
100+
.bench_refs(|(array, indices)| take(array.as_ref(), indices.as_ref()).unwrap());
98101
}

encodings/runend/benches/run_end_null_count.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ fn null_count_run_end(bencher: Bencher, (n, run_step, valid_density): (usize, us
5252
let array = fixture(n, run_step, valid_density).into_array();
5353

5454
bencher
55-
.with_inputs(|| array.clone())
55+
.with_inputs(|| &array)
5656
.bench_refs(|array| array.invalid_count());
5757
}
5858

encodings/zstd/benches/listview_rebuild.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ fn rebuild_naive(bencher: Bencher) {
3030

3131
let list_view = ListViewArray::new(dudes, offsets, sizes, Validity::NonNullable);
3232

33-
bencher.bench_local(|| list_view.rebuild(ListViewRebuildMode::MakeZeroCopyToList))
33+
bencher
34+
.with_inputs(|| &list_view)
35+
.bench_refs(|list_view| list_view.rebuild(ListViewRebuildMode::MakeZeroCopyToList))
3436
}
3537

3638
fn main() {

vortex-array/benches/chunk_array_builder.rs

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const BENCH_ARGS: &[(usize, usize)] = &[
3030
fn chunked_bool_canonical_into(bencher: Bencher, (len, chunk_count): (usize, usize)) {
3131
let chunk = make_bool_chunks(len, chunk_count);
3232

33-
bencher.with_inputs(|| chunk.clone()).bench_values(|chunk| {
33+
bencher.with_inputs(|| &chunk).bench_refs(|chunk| {
3434
let mut builder = builder_with_capacity(chunk.dtype(), len * chunk_count);
3535
chunk.append_to_builder(builder.as_mut());
3636
builder.finish()
@@ -41,9 +41,9 @@ fn chunked_bool_canonical_into(bencher: Bencher, (len, chunk_count): (usize, usi
4141
fn chunked_opt_bool_canonical_into(bencher: Bencher, (len, chunk_count): (usize, usize)) {
4242
let chunk = make_opt_bool_chunks(len, chunk_count);
4343

44-
bencher.with_inputs(|| chunk.clone()).bench_values(|chunk| {
44+
bencher.with_inputs(|| &chunk).bench_refs(|chunk| {
4545
let mut builder = builder_with_capacity(chunk.dtype(), len * chunk_count);
46-
chunk.clone().append_to_builder(builder.as_mut());
46+
chunk.append_to_builder(builder.as_mut());
4747
builder.finish()
4848
})
4949
}
@@ -53,67 +53,63 @@ fn chunked_bool_into_canonical(bencher: Bencher, (len, chunk_count): (usize, usi
5353
let chunk = make_bool_chunks(len, chunk_count);
5454

5555
bencher
56-
.with_inputs(|| chunk.clone())
57-
.bench_values(|chunk| chunk.to_canonical())
56+
.with_inputs(|| &chunk)
57+
.bench_refs(|chunk| chunk.to_canonical())
5858
}
5959

6060
#[divan::bench(args = BENCH_ARGS)]
6161
fn chunked_opt_bool_into_canonical(bencher: Bencher, (len, chunk_count): (usize, usize)) {
6262
let chunk = make_opt_bool_chunks(len, chunk_count);
6363

6464
bencher
65-
.with_inputs(|| chunk.clone())
66-
.bench_values(|chunk| chunk.to_canonical())
65+
.with_inputs(|| &chunk)
66+
.bench_refs(|chunk| chunk.to_canonical())
6767
}
6868

6969
#[divan::bench(args = BENCH_ARGS)]
7070
fn chunked_varbinview_canonical_into(bencher: Bencher, (len, chunk_count): (usize, usize)) {
7171
let chunks = make_string_chunks(false, len, chunk_count);
7272

73-
bencher
74-
.with_inputs(|| chunks.clone())
75-
.bench_values(|chunk| {
76-
let mut builder = VarBinViewBuilder::with_capacity(
77-
DType::Utf8(chunk.dtype().nullability()),
78-
len * chunk_count,
79-
);
80-
chunk.append_to_builder(&mut builder);
81-
builder.finish()
82-
})
73+
bencher.with_inputs(|| &chunks).bench_refs(|chunk| {
74+
let mut builder = VarBinViewBuilder::with_capacity(
75+
DType::Utf8(chunk.dtype().nullability()),
76+
len * chunk_count,
77+
);
78+
chunk.append_to_builder(&mut builder);
79+
builder.finish()
80+
})
8381
}
8482

8583
#[divan::bench(args = BENCH_ARGS)]
8684
fn chunked_varbinview_into_canonical(bencher: Bencher, (len, chunk_count): (usize, usize)) {
8785
let chunks = make_string_chunks(false, len, chunk_count);
8886

8987
bencher
90-
.with_inputs(|| chunks.clone())
91-
.bench_values(|chunk| chunk.to_canonical())
88+
.with_inputs(|| &chunks)
89+
.bench_refs(|chunk| chunk.to_canonical())
9290
}
9391

9492
#[divan::bench(args = BENCH_ARGS)]
9593
fn chunked_varbinview_opt_canonical_into(bencher: Bencher, (len, chunk_count): (usize, usize)) {
9694
let chunks = make_string_chunks(true, len, chunk_count);
9795

98-
bencher
99-
.with_inputs(|| chunks.clone())
100-
.bench_values(|chunk| {
101-
let mut builder = VarBinViewBuilder::with_capacity(
102-
DType::Utf8(chunk.dtype().nullability()),
103-
len * chunk_count,
104-
);
105-
chunk.append_to_builder(&mut builder);
106-
builder.finish()
107-
})
96+
bencher.with_inputs(|| &chunks).bench_refs(|chunk| {
97+
let mut builder = VarBinViewBuilder::with_capacity(
98+
DType::Utf8(chunk.dtype().nullability()),
99+
len * chunk_count,
100+
);
101+
chunk.append_to_builder(&mut builder);
102+
builder.finish()
103+
})
108104
}
109105

110106
#[divan::bench(args = BENCH_ARGS)]
111107
fn chunked_varbinview_opt_into_canonical(bencher: Bencher, (len, chunk_count): (usize, usize)) {
112108
let chunks = make_string_chunks(true, len, chunk_count);
113109

114110
bencher
115-
.with_inputs(|| chunks.clone())
116-
.bench_values(|chunk| chunk.to_canonical())
111+
.with_inputs(|| &chunks)
112+
.bench_refs(|chunk| chunk.to_canonical())
117113
}
118114

119115
fn make_opt_bool_chunks(len: usize, chunk_count: usize) -> ArrayRef {

vortex-array/benches/chunked_dict_builder.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn chunked_dict_primitive_canonical_into<T: NativePType>(
3333
{
3434
let chunk = gen_dict_primitive_chunks::<T, u16>(len, unique_values, chunk_count);
3535

36-
bencher.with_inputs(|| chunk.clone()).bench_values(|chunk| {
36+
bencher.with_inputs(|| &chunk).bench_refs(|chunk| {
3737
let mut builder = builder_with_capacity(chunk.dtype(), len * chunk_count);
3838
chunk.append_to_builder(builder.as_mut());
3939
builder.finish()
@@ -50,6 +50,6 @@ fn chunked_dict_primitive_into_canonical<T: NativePType>(
5050
let chunk = gen_dict_primitive_chunks::<T, u16>(len, unique_values, chunk_count);
5151

5252
bencher
53-
.with_inputs(|| chunk.clone())
54-
.bench_values(|chunk| chunk.to_canonical())
53+
.with_inputs(|| &chunk)
54+
.bench_refs(|chunk| chunk.to_canonical())
5555
}

0 commit comments

Comments
 (0)