Skip to content

Commit e3922f2

Browse files
authored
fix: benchmark black box handling (#5558)
Signed-off-by: Alexander Droste <[email protected]>
1 parent 563dc61 commit e3922f2

File tree

5 files changed

+54
-83
lines changed

5 files changed

+54
-83
lines changed

vortex-array/benches/scalar_subtract.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ fn scalar_subtract(bencher: Bencher) {
3535
let chunked = ChunkedArray::from_iter([data1, data2]).into_array();
3636

3737
bencher.with_inputs(|| &chunked).bench_refs(|chunked| {
38-
let array = vortex_array::compute::sub_scalar(*chunked, to_subtract.into()).unwrap();
39-
divan::black_box(array);
38+
vortex_array::compute::sub_scalar(*chunked, to_subtract.into()).unwrap()
4039
});
4140
}

vortex-array/benches/take_struct.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ fn take_struct_simple(bencher: Bencher) {
4848

4949
bencher
5050
.with_inputs(|| (&struct_array, &indices_array))
51-
.bench_refs(|(array, indices)| {
52-
divan::black_box(take(array.as_ref(), indices.as_ref()).unwrap());
53-
});
51+
.bench_refs(|(array, indices)| take(array.as_ref(), indices.as_ref()).unwrap());
5452
}
5553

5654
#[divan::bench(args = [8])]
@@ -81,9 +79,7 @@ fn take_struct_wide(bencher: Bencher, width: usize) {
8179

8280
bencher
8381
.with_inputs(|| (&struct_array, &indices_array))
84-
.bench_refs(|(array, indices)| {
85-
divan::black_box(take(array.as_ref(), indices.as_ref()).unwrap());
86-
});
82+
.bench_refs(|(array, indices)| take(array.as_ref(), indices.as_ref()).unwrap());
8783
}
8884

8985
#[divan::bench]
@@ -111,7 +107,5 @@ fn take_struct_sequential_indices(bencher: Bencher) {
111107

112108
bencher
113109
.with_inputs(|| (&struct_array, &indices_array))
114-
.bench_refs(|(array, indices)| {
115-
divan::black_box(take(array.as_ref(), indices.as_ref()).unwrap());
116-
});
110+
.bench_refs(|(array, indices)| take(array.as_ref(), indices.as_ref()).unwrap());
117111
}

vortex-buffer/benches/vortex_bitbuffer.rs

Lines changed: 46 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -37,45 +37,43 @@ fn from_iter<B: FromIterator<bool>>(n: usize) {
3737
#[divan::bench(args = INPUT_SIZE)]
3838
fn append_vortex_buffer(bencher: Bencher, length: usize) {
3939
bencher
40-
.with_inputs(|| BitBufferMut::with_capacity(length))
41-
.bench_refs(|buffer| {
42-
for idx in 0..length {
43-
buffer.append(divan::black_box(idx % 2 == 0));
40+
.with_inputs(|| (BitBufferMut::with_capacity(length), length))
41+
.bench_refs(|(buffer, length)| {
42+
for idx in 0..*length {
43+
buffer.append(idx % 2 == 0);
4444
}
4545
});
4646
}
4747

4848
#[divan::bench(args = INPUT_SIZE)]
4949
fn append_arrow_buffer(bencher: Bencher, length: usize) {
5050
bencher
51-
.with_inputs(|| Arrow(BooleanBufferBuilder::new(length)))
52-
.bench_refs(|buffer| {
53-
for idx in 0..length {
54-
buffer.0.append(divan::black_box(idx % 2 == 0));
51+
.with_inputs(|| (Arrow(BooleanBufferBuilder::new(length)), length))
52+
.bench_refs(|(buffer, length)| {
53+
for idx in 0..*length {
54+
buffer.0.append(idx % 2 == 0);
5555
}
5656
});
5757
}
5858

5959
#[divan::bench(args = INPUT_SIZE)]
6060
fn append_n_vortex_buffer(bencher: Bencher, length: usize) {
6161
bencher
62-
.with_inputs(|| BitBufferMut::with_capacity(length))
63-
.bench_refs(|buffer| {
62+
.with_inputs(|| (BitBufferMut::with_capacity(length), length, true))
63+
.bench_refs(|(buffer, length, boolean)| {
6464
for _ in 0..100 {
65-
buffer.append_n(divan::black_box(true), divan::black_box(length / 100));
65+
buffer.append_n(*boolean, *length / 100);
6666
}
6767
});
6868
}
6969

7070
#[divan::bench(args = INPUT_SIZE)]
7171
fn append_n_arrow_buffer(bencher: Bencher, length: usize) {
7272
bencher
73-
.with_inputs(|| Arrow(BooleanBufferBuilder::new(length)))
74-
.bench_refs(|buffer| {
73+
.with_inputs(|| (Arrow(BooleanBufferBuilder::new(length)), length, true))
74+
.bench_refs(|(buffer, length, boolean)| {
7575
for _ in 0..100 {
76-
buffer
77-
.0
78-
.append_n(divan::black_box(length / 100), divan::black_box(true));
76+
buffer.0.append_n(*length / 100, *boolean);
7977
}
8078
});
8179
}
@@ -90,7 +88,7 @@ fn append_buffer_vortex_buffer(bencher: Bencher, length: usize) {
9088
})
9189
.bench_refs(|(source, dest)| {
9290
for _ in 0..100 {
93-
dest.append_buffer(divan::black_box(source));
91+
dest.append_buffer(source);
9492
}
9593
});
9694
}
@@ -107,7 +105,7 @@ fn append_buffer_arrow_buffer(bencher: Bencher, length: usize) {
107105
})
108106
.bench_refs(|(source, dest)| {
109107
for _ in 0..100 {
110-
for value in divan::black_box(&source.0).iter() {
108+
for value in source.0.iter() {
111109
dest.0.append(value);
112110
}
113111
}
@@ -141,104 +139,92 @@ fn slice_vortex_buffer(bencher: Bencher, length: usize) {
141139
.with_inputs(|| (&buffer, length / 2))
142140
.bench_refs(|(buffer, mid)| {
143141
let mid = *mid;
144-
divan::black_box(buffer.slice(mid / 2..mid + mid / 2));
142+
buffer.slice(mid / 2..mid + mid / 2)
145143
});
146144
}
147145

148146
#[divan::bench(args = INPUT_SIZE)]
149147
fn slice_arrow_buffer(bencher: Bencher, length: usize) {
150148
let buffer = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 2 == 0)));
151-
bencher.with_inputs(|| &buffer).bench_refs(|buffer| {
152-
let mid = length / 2;
153-
divan::black_box(buffer.0.slice(mid / 2, mid / 2));
154-
});
149+
bencher
150+
.with_inputs(|| (&buffer, length / 2))
151+
.bench_refs(|(buffer, mid)| {
152+
let mid = *mid;
153+
buffer.0.slice(mid / 2, mid / 2)
154+
});
155155
}
156156

157157
#[divan::bench(args = INPUT_SIZE)]
158158
fn true_count_vortex_buffer(bencher: Bencher, length: usize) {
159159
let buffer = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));
160-
bencher.with_inputs(|| &buffer).bench_refs(|buffer| {
161-
divan::black_box(buffer.true_count());
162-
})
160+
bencher
161+
.with_inputs(|| &buffer)
162+
.bench_refs(|buffer| buffer.true_count())
163163
}
164164

165165
#[divan::bench(args = INPUT_SIZE)]
166166
fn true_count_arrow_buffer(bencher: Bencher, length: usize) {
167167
let buffer = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 2 == 0)));
168-
bencher.with_inputs(|| &buffer).bench_refs(|buffer| {
169-
divan::black_box(buffer.0.count_set_bits());
170-
});
168+
bencher
169+
.with_inputs(|| &buffer)
170+
.bench_refs(|buffer| buffer.0.count_set_bits());
171171
}
172172

173173
#[divan::bench(args = INPUT_SIZE)]
174174
fn bitwise_and_vortex_buffer(bencher: Bencher, length: usize) {
175+
let a = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));
176+
let b = BitBuffer::from_iter((0..length).map(|i| i % 3 == 0));
175177
bencher
176-
.with_inputs(|| {
177-
let a = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));
178-
let b = BitBuffer::from_iter((0..length).map(|i| i % 3 == 0));
179-
(a, b)
180-
})
181-
.bench_values(|(a, b)| {
182-
divan::black_box(&a & &b);
183-
});
178+
.with_inputs(|| (&a, &b))
179+
.bench_values(|(a, b)| a & b);
184180
}
185181

186182
#[divan::bench(args = INPUT_SIZE)]
187183
fn bitwise_and_arrow_buffer(bencher: Bencher, length: usize) {
188184
let a = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 2 == 0)));
189185
let b = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 3 == 0)));
190-
bencher.with_inputs(|| (&a, &b)).bench_refs(|(a, b)| {
191-
divan::black_box(&a.0 & &b.0);
192-
});
186+
bencher
187+
.with_inputs(|| (&a, &b))
188+
.bench_refs(|(a, b)| &a.0 & &b.0);
193189
}
194190

195191
#[divan::bench(args = INPUT_SIZE)]
196192
fn bitwise_or_vortex_buffer(bencher: Bencher, length: usize) {
193+
let a = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));
194+
let b = BitBuffer::from_iter((0..length).map(|i| i % 3 == 0));
197195
bencher
198-
.with_inputs(|| {
199-
let a = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));
200-
let b = BitBuffer::from_iter((0..length).map(|i| i % 3 == 0));
201-
(a, b)
202-
})
203-
.bench_values(|(a, b)| {
204-
divan::black_box(&a | &b);
205-
});
196+
.with_inputs(|| (&a, &b))
197+
.bench_values(|(a, b)| a | b);
206198
}
207199

208200
#[divan::bench(args = INPUT_SIZE)]
209201
fn bitwise_or_arrow_buffer(bencher: Bencher, length: usize) {
210202
let a = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 2 == 0)));
211203
let b = Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 3 == 0)));
212-
bencher.with_inputs(|| (&a, &b)).bench_refs(|(a, b)| {
213-
divan::black_box(&a.0 | &b.0);
214-
});
204+
bencher
205+
.with_inputs(|| (&a, &b))
206+
.bench_refs(|(a, b)| &a.0 | &b.0);
215207
}
216208

217209
#[divan::bench(args = INPUT_SIZE)]
218210
fn bitwise_not_vortex_buffer(bencher: Bencher, length: usize) {
219211
bencher
220212
.with_inputs(|| BitBuffer::from_iter((0..length).map(|i| i % 2 == 0)))
221-
.bench_values(|buffer| {
222-
divan::black_box(!&buffer);
223-
});
213+
.bench_values(|buffer| !&buffer);
224214
}
225215

226216
#[divan::bench(args = INPUT_SIZE)]
227217
fn bitwise_not_vortex_buffer_mut(bencher: Bencher, length: usize) {
228218
bencher
229219
.with_inputs(|| BitBufferMut::from_iter((0..length).map(|i| i % 2 == 0)))
230-
.bench_values(|buffer| {
231-
divan::black_box(!buffer);
232-
});
220+
.bench_values(|buffer| !buffer);
233221
}
234222

235223
#[divan::bench(args = INPUT_SIZE)]
236224
fn bitwise_not_arrow_buffer(bencher: Bencher, length: usize) {
237225
bencher
238226
.with_inputs(|| Arrow(BooleanBuffer::from_iter((0..length).map(|i| i % 2 == 0))))
239-
.bench_values(|buffer| {
240-
divan::black_box(!&buffer.0);
241-
});
227+
.bench_values(|buffer| !&buffer.0);
242228
}
243229

244230
#[divan::bench(args = INPUT_SIZE)]

vortex-buffer/benches/vortex_buffer.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,10 @@ fn push_arrow_buffer(bencher: Bencher, length: i32) {
123123
#[divan::bench(types = [u8, u16, u32, u64], args = INPUT_SIZE_USIZE)]
124124
fn push_n_vortex_buffer<T: PrimInt>(bencher: Bencher, length: usize) {
125125
bencher
126-
.with_inputs(|| BufferMut::<T>::with_capacity(length))
127-
.bench_refs(|buffer| {
126+
.with_inputs(|| (BufferMut::<T>::with_capacity(length), length, T::one()))
127+
.bench_refs(|(buffer, length, one)| {
128128
for _ in 0..100 {
129-
unsafe {
130-
buffer.push_n_unchecked(
131-
divan::black_box(T::one()),
132-
divan::black_box(length / 100),
133-
)
134-
};
129+
unsafe { buffer.push_n_unchecked(*one, *length / 100) };
135130
}
136131
});
137132
}

vortex-compute/benches/expand_buffer.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,5 @@ fn expand_buffer<T: Copy + Default + From<u8> + Send + 'static>(
7070
let buffer = create_test_buffer::<T>(true_count);
7171
(buffer, mask)
7272
})
73-
.bench_refs(|(buffer, mask)| {
74-
let result = buffer.expand(mask);
75-
divan::black_box(result);
76-
});
73+
.bench_refs(|(buffer, mask)| buffer.expand(mask));
7774
}

0 commit comments

Comments
 (0)