Prototype separate pruning, filter, and projection scan splits - #9661
Prototype separate pruning, filter, and projection scan splits#9661mhk197 wants to merge 2 commits into
Conversation
Signed-off-by: "Matt Katz" <mhkatz97@gmail.com>
Signed-off-by: Matt Katz <mhkatz97@gmail.com>
Merging this PR will regress 8 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | cached_indices_i32[0.01] |
37.6 µs | 51.5 µs | -26.98% |
| ❌ | Simulation | random_i256[0.01] |
44.9 µs | 56.1 µs | -19.87% |
| ❌ | Simulation | cached_indices_i32[0.1] |
54.9 µs | 66.6 µs | -17.6% |
| ❌ | Simulation | random_i16[0.95] |
66.1 µs | 77.6 µs | -14.78% |
| ❌ | WallTime | mul_u32_nonnull_avx512 |
5.6 µs | 6.4 µs | -12.68% |
| ❌ | WallTime | mul_i8_nonnull_avx2 |
11.2 µs | 12.9 µs | -12.63% |
| ❌ | Simulation | cached_indices_i128[0.1] |
68.3 µs | 77.8 µs | -12.21% |
| ❌ | Simulation | cold_misaligned[(16, 64)] |
347.6 µs | 392.4 µs | -11.42% |
| ⚡ | Simulation | patterns_i128[Contiguous] |
141.6 µs | 35.1 µs | ×4 |
| ⚡ | Simulation | random_i64[0.8] |
217.2 µs | 118.1 µs | +83.94% |
| ⚡ | Simulation | random_i128[0.8] |
267 µs | 171.6 µs | +55.61% |
| ⚡ | Simulation | patterns_i128[Runs] |
149 µs | 107.6 µs | +38.42% |
| ⚡ | Simulation | random_i256[0.8] |
368 µs | 273.5 µs | +34.55% |
| ⚡ | Simulation | random_i256[0.5] |
232.8 µs | 192.7 µs | +20.82% |
| ⚡ | WallTime | arrow_checked_add_u32_avx2[16384] |
21.3 µs | 17.7 µs | +20.32% |
| ⚡ | Simulation | random_i16[0.5] |
68.8 µs | 57.8 µs | +19.13% |
| ⚡ | Simulation | patterns_i128[Random] |
172.4 µs | 145.4 µs | +18.52% |
| ⚡ | Simulation | random_i128[0.5] |
172 µs | 146.1 µs | +17.74% |
| ⚡ | Simulation | random_i8[0.95] |
58.1 µs | 51 µs | +14.1% |
| ⚡ | Simulation | random_i64[0.5] |
130.8 µs | 116.3 µs | +12.45% |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing mk/filter-projection-splits-prototype (4182f55) with develop (59a056d)3
Footnotes
-
106 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. ↩
-
4 benchmarks were run, but are now archived. If they were deleted in another branch, consider rebasing to remove them from the report. Instead if they were added back, click here to restore them. ↩
-
No successful run was found on
develop(d0a59fe) during the generation of this report, so 59a056d 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
Powered by Polar Signals Cloud |
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Commits: PR datafusion / vortex-file-compressed / ns (1.022x ➖, 1↑ 1↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.997x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.005x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed / ns (1.003x ➖, 1↑ 0↓)
duckdb / parquet / ns (1.001x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.995x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.996x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.025x ➖, 1↑ 3↓)
duckdb / parquet / ns (1.002x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.938x ➖, 1↑ 0↓)
datafusion / parquet / ns (0.980x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.060x ➖, 0↑ 3↓)
duckdb / parquet / ns (0.973x ➖, 0↑ 0↓)
File Size Changes (100 files changed, -0.0% overall, 48↑ 52↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.995x ➖, 1↑ 0↓)
datafusion / parquet / ns (0.998x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed / ns (1.005x ➖, 0↑ 3↓)
duckdb / parquet / ns (1.002x ➖, 1↑ 5↓)
No file size changes detected. |
Benchmarks: TPC-H SF=10 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.013x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.002x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.999x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.979x ➖, 1↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.799x ➖, 2↑ 0↓)
datafusion / parquet / ns (0.667x ✅, 4↑ 0↓)
duckdb / vortex-file-compressed / ns (0.749x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.990x ➖, 0↑ 0↓)
|
Benchmarks: Statistical and Population Genetics 📖Commits: PR How to read Verdict and Engines
duckdb / vortex-file-compressed / ns (1.030x ➖, 1↑ 3↓)
duckdb / parquet / ns (1.004x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.006x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.003x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.985x ➖, 1↑ 1↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.818x ➖, 4↑ 0↓)
datafusion / parquet / ns (0.886x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed / ns (0.914x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.914x ➖, 1↑ 0↓)
|
Summary
VORTEX_EXPERIMENTAL_SEPARATE_SCAN_SPLITS=1Results
The synthetic skew benchmark was 26–37% faster and reduced segment requests from 512 to 268.
PolarSignals with the experimental list layout on local NVMe showed neutral wall time but a better I/O shape:
The request and byte reductions do not currently translate into a meaningful local PolarSignals speedup. This remains a draft while evaluating whether the scheduling complexity is justified, particularly for remote object storage.
Validation
cargo +nightly fmt --allcargo nextest run -p vortex-layout— 248 passedcargo clippy -p vortex-layout --all-targets --all-featuresgit diff --checkBenchmark configuration
VORTEX_EXPERIMENTAL_SEPARATE_SCAN_SPLITS=1VORTEX_EXPERIMENTAL_LIST_LAYOUT=1