Skip to content

Commit 8b8cb1c

Browse files
committed
implement benchmark
Timer precision: 41 ns listview_rebuild fastest │ slowest │ median │ mean │ samples │ iters ╰─ rebuild_naive 109.5 µs │ 192.2 µs │ 121.1 µs │ 122 µs │ 100 │ 100 Signed-off-by: Andrew Duffy <[email protected]>
1 parent 3594454 commit 8b8cb1c

File tree

4 files changed

+42
-2
lines changed

4 files changed

+42
-2
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

encodings/zstd/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,11 @@ vortex-vector = { workspace = true }
3030
zstd = { workspace = true }
3131

3232
[dev-dependencies]
33+
divan = { workspace = true }
3334
rstest = { workspace = true }
3435
vortex-array = { workspace = true, features = ["test-harness"] }
36+
37+
[[bench]]
38+
name = "listview_rebuild"
39+
path = "benches/listiew_rebuild.rs"
40+
harness = false
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3+
4+
use divan::Bencher;
5+
use vortex_array::IntoArray;
6+
use vortex_array::arrays::{ListViewArray, ListViewRebuildMode, VarBinViewArray};
7+
use vortex_array::validity::Validity;
8+
use vortex_buffer::Buffer;
9+
use vortex_zstd::ZstdArray;
10+
11+
#[divan::bench]
12+
fn rebuild_naive(bencher: Bencher) {
13+
let dudes = VarBinViewArray::from_iter_str(["Washington", "Adams", "Jefferson", "Madison"])
14+
.into_array();
15+
let dudes = ZstdArray::from_array(dudes, 9, 1024).unwrap().into_array();
16+
17+
let offsets = std::iter::repeat_n(0u32, 1024)
18+
.collect::<Buffer<u32>>()
19+
.into_array();
20+
let sizes = [0u64, 1, 2, 3, 4]
21+
.into_iter()
22+
.cycle()
23+
.take(1024)
24+
.collect::<Buffer<u64>>()
25+
.into_array();
26+
27+
let list_view = ListViewArray::new(dudes, offsets, sizes, Validity::NonNullable);
28+
29+
bencher.bench_local(|| list_view.rebuild(ListViewRebuildMode::MakeZeroCopyToList))
30+
}
31+
32+
fn main() {
33+
divan::main()
34+
}

vortex-array/src/arrays/listview/rebuild.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use vortex_error::VortexExpect;
88
use vortex_scalar::Scalar;
99

1010
use crate::arrays::{ChunkedArray, ListViewArray};
11-
use crate::builders::ArrayBuilder;
1211
use crate::vtable::ValidityHelper;
1312
use crate::{Array, IntoArray, ToCanonical, compute};
1413

@@ -92,7 +91,7 @@ impl ListViewArray {
9291
// slicing with them.
9392
let elements_canonical = self.elements().to_canonical().into_array();
9493
let offsets_canonical = self.offsets().to_primitive();
95-
let sizes_canonical = self.offsets().to_primitive();
94+
let sizes_canonical = self.sizes().to_primitive();
9695

9796
let offsets_canonical = offsets_canonical.as_slice::<O>();
9897
let sizes_canonical = sizes_canonical.as_slice::<S>();

0 commit comments

Comments
 (0)