Repository navigation
Stream selected V2 chunk planners from one file planner - #10628
joseph-isaacs wants to merge 4 commits into
Conversation
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
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>
Walk selections lazily and emit chunk planners through a bounded queue so chunk planning and execution overlap the file's selection traversal. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will regress 3 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | starts_with_avx2[8, VarBin] |
40.4 µs | 46.6 µs | -13.3% |
| ❌ | Simulation | take[routing/grouped_chunks/primitive/nonnull/chunks=32/indices=1000] |
385 µs | 428.5 µs | -10.16% |
| ❌ | WallTime | words_gather_dispatch_avx512[65536] |
915 ns | 1,017 ns | -10.03% |
| ⚡ |
Simulation | test_scan_filter[int] |
3.4 ms | 2.8 ms | +22.83% |
| ⚡ ℹ️ | Simulation | test_scan_filter_to_arrow_array[int_float] |
4.1 ms | 3.5 ms | +15.77% |
| ⚡ | WallTime | bitpack_blocked_compress_avx2 |
7.6 µs | 6.7 µs | +13.46% |
| ⚡ ℹ️ | Simulation | test_repeated_scan_filter[int_float] |
3.8 ms | 3.4 ms | +12.23% |
| ⚡ ℹ️ | Simulation | test_repeated_scan_filter[int] |
2.7 ms | 2.4 ms | +11.17% |
| ⚡ ℹ️ | Simulation | test_scan_filter_to_arrow_array[int] |
2.8 ms | 2.5 ms | +11.07% |
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-file-planner (d5187c9) with develop (9be4ef1)
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. ↩
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: Compression 📖Commits: PR vortex / vortex-file-compressed / ns (0.997x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.998x ➖, 0↑ 0↓)
vortex / parquet / ns (1.000x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
vortex / arrow-ipc / ns (0.997x ➖, 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.066x ➖, 1↑ 5↓)
random-access / vortex-file-compressed / ns (0.918x ➖, 7↑ 1↓)
random-access / parquet / ns (0.997x ➖, 0↑ 0↓)
random-access / lance / ns (1.010x ➖, 0↑ 0↓)
|
Summary
V2 currently finishes walking the selection and allocating the selected chunk planners before workers can start. A single file planner now emits child planners incrementally through a bounded queue, allowing other tasks to plan, read, and evaluate earlier chunks while the producer continues scanning.
This is a separate draft against
develop, including the selection-aware planning changes from #10625. It preserves that draft and provides an alternative to #10621.Changes
Plannertrait, and list layouts unchanged.Canonicalmaterialization, with nested values remaining lazy. V1 and V2 use matching settings;VORTEX_BENCH_SCAN=v1selects the baseline.Validation and performance
Local sequential measurements covered 36 cases across standard/compact formats, cached/reopen scans, and the default datasets:
These aggregate results do not establish parity in every case. Standard cached taxi uniform access remains 14.9% slower than V1 (3.773 ms versus 3.283 ms); the legacy standard cached case remains 22.9% slower. The pre-change taxi result was 3.866 ms.
Reproduce each V1/V2 run with the same binary and dataset cache:
Repeat with
VORTEX_BENCH_SCAN=v1and a separate output file. Normal CI and the random-access/compression benchmark workflows are being requested for this draft.