Repository navigation
Plan V2 random access from known row selections - #10625
Conversation
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will regress 1 benchmark
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | take[routing/grouped_chunks/primitive/nonnull/chunks=32/indices=1000] |
385 µs | 429.4 µs | -10.34% |
| ⚡ | Simulation | chunked_opt_bool_canonical_into[(1000, 10)] |
65.4 µs | 55.1 µs | +18.6% |
| ⚡ | WallTime | bitpack_blocked_compress_avx512 |
5.6 µs | 4.8 µs | +17.19% |
| ⚡ | WallTime | deferred_bool_avx512[i64, PerRowPerRow] |
4.1 µs | 3.7 µs | +11.28% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/v2-selection-planning (60b2d43) with develop (2ebe999)2
Footnotes
-
12 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
-
No successful run was found on
develop(5e365e6) during the generation of this report, so 2ebe999 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
Polar Signals Profiling ResultsLatest Run
Previous Runs (4)
Powered by Polar Signals Cloud |
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Benchmarks: Compression 📖Commits: PR vortex / vortex-file-compressed / ns (0.999x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.998x ➖, 0↑ 0↓)
vortex / parquet / ns (1.002x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
vortex / arrow-ipc / ns (0.994x ➖, 0↑ 0↓)
vortex / arrow-ipc / bytes (1.000x ➖, 0↑ 0↓)
|
Benchmarks: Random Access 📖Commits: PR How to read Verdict and Engines
vortex / arrow-ipc / ns (1.048x ➖, 1↑ 2↓)
random-access / vortex-file-compressed / ns (0.929x ➖, 7↑ 1↓)
random-access / parquet / ns (1.020x ➖, 0↑ 1↓)
random-access / lance / ns (1.004x ➖, 0↑ 0↓)
|
Use the historical layout-reader cache and outer Canonical materialization for both V1 and V2. Keep nested values lazy so the existing CI series compares equivalent work. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Drop the VORTEX_BENCH_SCAN=v1 switch and the V1-only layout-reader cache. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161zMAb6XtH1LGJ52oLn9GG
Restore the develop format list and measurement names. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161zMAb6XtH1LGJ52oLn9GG
tpchgen-cli 4.0.0 removed the --format and --parquet-compression flags. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161zMAb6XtH1LGJ52oLn9GG
9ed1dc0 to
ce73df6
Compare
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161zMAb6XtH1LGJ52oLn9GG
The tpchgen-cli 4.x fix lands separately in #10630. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161zMAb6XtH1LGJ52oLn9GG
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
|
Rust tests (windows-x64) failed on This PR has no changes in I don't know of an existing fix for it. I'm re-running the failed job once. If it fails again, the test needs a fix on Generated by Claude Code |
Resolve conflicts with #10625: it removed the V2 layout-support check, so ScanCache no longer caches one. Take develop's V2 benchmark take and reopen its file handles with the layout reader cache, so they share a ScanCache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014bhE34DXnMWjLtHgHpDUzX Signed-off-by: Claude <noreply@anthropic.com>
V2 random access resolves known row selections before allocating projection planners. It skips empty chunks, trims selected spans, and avoids masks and filtering for contiguous selections. A selection-bound physical plan limits segment discovery to reachable children; unchanged masks retain their derived indices across fields.
Whole dictionary dependencies retain their original plans and per-scan sharing. Removing the eager whole-file compatibility walk keeps unused layout children lazy; unsupported plans fail when reached. List layouts remain unsupported. The pipeline driver, compiler, and generic Planner trait are unchanged.