Skip to content

Comments

perf(layout): add empty-range fast paths in chunked reader#6513

Merged
joseph-isaacs merged 3 commits intovortex-data:developfrom
caicancai:perf/chunked-reader-empty-range-fastpath
Feb 20, 2026
Merged

perf(layout): add empty-range fast paths in chunked reader#6513
joseph-isaacs merged 3 commits intovortex-data:developfrom
caicancai:perf/chunked-reader-empty-range-fastpath

Conversation

@caicancai
Copy link
Contributor

@caicancai caicancai commented Feb 14, 2026

This PR short-circuits empty row_range in ChunkedReader across split/pruning/filter/projection paths. It improves boundary-case performance in scenarios where planning/splitting or upstream pruning produces empty work units (e.g. split boundaries, highly selective filters), by avoiding unnecessary chunk iteration, async task setup, and result collection.
Behavior for non-empty ranges is unchanged.

@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Feb 17, 2026
@joseph-isaacs joseph-isaacs added action/benchmark Trigger full benchmarks to run on this PR changelog/performance A performance improvement and removed action/benchmark Trigger full benchmarks to run on this PR labels Feb 18, 2026
@caicancai
Copy link
Contributor Author

@joseph-isaacs Excuse me, may I ask if there's anything wrong with this PR, or if I should close it? I haven't seen any comments, so I'm unsure what to do next.

@joseph-isaacs joseph-isaacs added action/benchmark Trigger full benchmarks to run on this PR and removed action/benchmark Trigger full benchmarks to run on this PR labels Feb 20, 2026
@joseph-isaacs
Copy link
Contributor

joseph-isaacs commented Feb 20, 2026

Lets me run the benchmarks and we can see.

OOI what workload did you see this being a problem.

@caicancai
Copy link
Contributor Author

Lets me run the benchmarks and we can see.

OOI what workload did you see this being a problem.

Good question — I didn’t hit a specific production workload regression. This change is mainly a defensive fast-path for valid empty ranges that can appear after split/planning boundaries or highly selective pruning/filtering. The goal is to avoid unnecessary chunk iteration/future setup in those boundary cases and make empty-input behavior explicit across pruning/filter/projection paths. Happy to add a small benchmark/counter if we want to quantify how often this path is hit.

@joseph-isaacs joseph-isaacs merged commit 270f454 into vortex-data:develop Feb 20, 2026
50 of 51 checks passed
@joseph-isaacs
Copy link
Contributor

Thanks for your contribution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action/benchmark Trigger full benchmarks to run on this PR changelog/performance A performance improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants