Repository navigation
Conversation
sunchao
force-pushed
the
codex/byte-view-interleave-benchmarks
branch
from
October 2, 2026 23:22
219ea68 to
09aba9f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Benchmark coverage for #7184 and the discussion on #11279; does not close either issue.
Rationale for this change
The existing interleave benchmarks do not isolate the cost of compacting byte views after selection. Reviewing an owned-copy operation also needs controls for repeated source ranges and for sparse selections from arrays with many backing buffers.
This benchmark-only companion to #11279 adds the existing
interleaveandinterleavefollowed bygc()paths first, as requested by the contributor guide. It changes no kernel implementation and makes no performance improvement claim.What changes are included in this PR?
Add 42 deterministic workloads to
arrow/benches/interleave_kernels.rs: four sources of 8,192 rows, selections of 512 or 8,192 rows, and string lengths of 13-20, 20-60, or 100-400 bytes. Layouts cover unique selections, seeded random selections with replacement, fragmented buffers, repeated indices, shared source ranges, and sliced nullable arrays with inline values.Six cases within that total keep the source rows and selected values fixed while varying the total number of source buffers from 4 to 4,096 to 32,768, selecting either 3 or 32 rows. Input construction runs outside the measured loop. Both operations return
ArrayRef. A shared fixture module lets the proposed compact implementation use identical inputs in #11279.The byte-view group defaults to 20 samples, 100 ms warmup, and 300 ms measurement per case. It uses a separate Criterion configuration so the pre-existing benchmarks retain their defaults, and explicit command-line timing options can still override the byte-view settings.
Are these changes tested?
On head
0b317f8a56949f4872bfdf4826e779ce5ff9aaf1, based on705e6405b56cc01efb1c267203d240d0d85804ab, with Rust 1.99.0 and the unchanged repository lockfile:-D warningspassed.Are there any user-facing changes?
No. Benchmark coverage only.
AI assistance: Codex generated the fixtures and benchmark additions, which were source-reviewed and compiled locally.