Skip to content

Commit 38d1e05

Browse files
committed
simpler
Signed-off-by: Robert Kruszewski <github@robertk.io>
1 parent b6712cf commit 38d1e05

2 files changed

Lines changed: 8 additions & 48 deletions

File tree

vortex-buffer/benches/vortex_bitbuffer.rs

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,7 @@ impl FromIterator<bool> for Arrow<BooleanBuffer> {
2525
}
2626

2727
const INPUT_SIZE: &[usize] = &[128, 1024, 2048, 16_384, 65_536];
28-
const TRUE_COUNT_INPUT_SIZE: &[usize] = &[128, 1024, 16_384, 65_536, 1_048_576];
29-
const TRUE_COUNT_SLICE_CASES: &[(usize, usize)] = &[
30-
(128, 1),
31-
(128, 7),
32-
(1_024, 1),
33-
(1_024, 7),
34-
(16_384, 1),
35-
(16_384, 7),
36-
(65_536, 1),
37-
(65_536, 7),
38-
(1_048_576, 1),
39-
(1_048_576, 7),
40-
];
28+
const TRUE_COUNT_INPUT_SIZE: &[usize] = &[128, 1024, 16_384, 65_536];
4129

4230
#[inline]
4331
fn true_count_pattern(i: usize) -> bool {
@@ -194,28 +182,6 @@ fn true_count_arrow_buffer(bencher: Bencher, length: usize) {
194182
.bench_refs(|buffer| buffer.0.count_set_bits());
195183
}
196184

197-
#[divan::bench(args = TRUE_COUNT_SLICE_CASES)]
198-
fn true_count_vortex_buffer_sliced(bencher: Bencher, (length, offset): (usize, usize)) {
199-
let buffer = BitBuffer::from_iter((0..length + offset).map(true_count_pattern));
200-
let sliced = buffer.slice(offset..offset + length);
201-
202-
bencher
203-
.with_inputs(|| &sliced)
204-
.bench_refs(|buffer| buffer.true_count())
205-
}
206-
207-
#[divan::bench(args = TRUE_COUNT_SLICE_CASES)]
208-
fn true_count_arrow_buffer_sliced(bencher: Bencher, (length, offset): (usize, usize)) {
209-
let buffer = Arrow(BooleanBuffer::from_iter(
210-
(0..length + offset).map(true_count_pattern),
211-
));
212-
let sliced = Arrow(buffer.0.slice(offset, length));
213-
214-
bencher
215-
.with_inputs(|| &sliced)
216-
.bench_refs(|buffer| buffer.0.count_set_bits());
217-
}
218-
219185
#[divan::bench(args = INPUT_SIZE)]
220186
fn bitwise_and_vortex_buffer(bencher: Bencher, length: usize) {
221187
let a = BitBuffer::from_iter((0..length).map(|i| i % 2 == 0));

vortex-buffer/src/bit/buf.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,11 @@ impl BitBuffer {
360360

361361
#[inline]
362362
fn true_count_impl(bytes: &[u8], offset: usize, len: usize) -> usize {
363-
let Some((head, middle, tail)) = byte_aligned_region(bytes, offset, len) else {
363+
if bytes.is_empty() {
364364
return 0;
365-
};
365+
}
366+
367+
let (head, middle, tail) = byte_aligned_region(bytes, offset, len);
366368

367369
let mut count = head.map_or(0, |v| v.count_ones() as usize);
368370

@@ -374,15 +376,7 @@ fn true_count_impl(bytes: &[u8], offset: usize, len: usize) -> usize {
374376
}
375377

376378
#[inline]
377-
fn byte_aligned_region(
378-
bytes: &[u8],
379-
offset: usize,
380-
len: usize,
381-
) -> Option<(Option<u8>, &[u8], Option<u8>)> {
382-
if len == 0 {
383-
return None;
384-
}
385-
379+
fn byte_aligned_region(bytes: &[u8], offset: usize, len: usize) -> (Option<u8>, &[u8], Option<u8>) {
386380
let start_byte = offset / 8;
387381
let start_bit = offset % 8;
388382
let end_bit = offset + len;
@@ -408,7 +402,7 @@ fn byte_aligned_region(
408402
let tail_len = len - consumed;
409403
let tail = (tail_len != 0).then(|| mask_partial_byte(bytes[middle_end], 0, tail_len));
410404

411-
Some((head, middle, tail))
405+
(head, middle, tail)
412406
}
413407

414408
#[inline]
@@ -428,7 +422,7 @@ fn mask_partial_byte(byte: u8, bit_offset: usize, bit_len: usize) -> u8 {
428422

429423
#[inline]
430424
fn count_aligned_bytes(bytes: &[u8]) -> usize {
431-
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
425+
#[cfg(target_arch = "x86_64")]
432426
{
433427
if bytes.len() >= 64
434428
&& is_x86_feature_detected!("avx512f")

0 commit comments

Comments
 (0)