[WIP] DataFusion morselized scan - #9056
Conversation
Merging this PR will degrade performance by 1.18%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | decompress[u64, (4000, 1024)] |
71.8 µs | 87.3 µs | -17.81% |
| ❌ | Simulation | allocate_drop_arrow[0] |
402.7 ns | 456.9 ns | -11.86% |
| ⚡ | WallTime | dict_canonicalize_gt_u8_avx2[16000000] |
9.1 ms | 7.7 ms | +18.05% |
| ⚡ | WallTime | mul_u32_nonnull_avx512 |
6.2 µs | 5.6 µs | +11.51% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing adamg/df-morsler (82be146) with adamg/remove-map-fn-limit (850f3a5)2
Footnotes
-
218 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
adamg/remove-map-fn-limit(b8f98ff) during the generation of this report, so dc6f208 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 (20)
Powered by Polar Signals Cloud |
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.009x ➖, 0↑ 0↓)
datafusion / parquet (1.007x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.058x ➖, 1↑ 5↓)
duckdb / parquet (0.991x ➖, 0↑ 0↓)
File Size Changes (2 files changed, -46.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.002x ➖, 3↑ 8↓)
datafusion / parquet (1.003x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.991x ➖, 4↑ 4↓)
duckdb / parquet (0.993x ➖, 6↑ 2↓)
File Size Changes (25 files changed, -43.5% overall, 0↑ 25↓)
Totals:
|
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 1.132x ❌ How to read Verdict and Engines
datafusion / vortex-file-compressed (1.132x ❌, 0↑ 4↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.044x ➖, 1↑ 5↓)
datafusion / parquet (1.006x ➖, 2↑ 1↓)
duckdb / vortex-file-compressed (0.993x ➖, 0↑ 1↓)
duckdb / parquet (0.999x ➖, 0↑ 0↓)
File Size Changes (9 files changed, -43.9% overall, 0↑ 9↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.027x ➖, 6↑ 5↓)
datafusion / parquet (1.010x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.020x ➖, 0↑ 0↓)
duckdb / parquet (0.991x ➖, 2↑ 1↓)
File Size Changes (9 files changed, -44.0% overall, 0↑ 9↓)
Totals:
|
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.023x ➖, 2↑ 3↓)
duckdb / parquet (1.004x ➖, 0↑ 0↓)
File Size Changes (2 files changed, -32.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.909x ➖, 0↑ 1↓)
datafusion / parquet (1.080x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.980x ➖, 0↑ 0↓)
duckdb / parquet (1.046x ➖, 1↑ 1↓)
|
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (medium confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.411x ❌, 1↑ 9↓)
datafusion / parquet (1.002x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.007x ➖, 0↑ 0↓)
duckdb / parquet (0.976x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -42.8% overall, 49↑ 152↓)
Totals:
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.364x ❌, 0↑ 33↓)
datafusion / parquet (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.014x ➖, 1↑ 4↓)
duckdb / parquet (1.001x ➖, 0↑ 0↓)
File Size Changes (101 files changed, -39.2% overall, 0↑ 101↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.057x ➖, 0↑ 1↓)
datafusion / parquet (1.093x ➖, 1↑ 4↓)
duckdb / vortex-file-compressed (1.046x ➖, 0↑ 1↓)
duckdb / parquet (1.024x ➖, 0↑ 0↓)
|
030ed74 to
784050a
Compare
904bb83 to
394447f
Compare
394447f to
9181b1e
Compare
9181b1e to
4e5f945
Compare
|
This PR has been marked as stale because it has been open for 14 days with no activity. Please comment or remove the stale label if you wish to keep it active, otherwise it will be closed in 7 days |
|
This PR was closed because it has been inactive for 7 days since being marked as stale. |
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
The Morselizer carried a copy of the natural-split helpers from the opener it replaced, which predated the precomputed-assignment form on the base branch. Port that forward: cache a NaturalSplits (row boundaries plus each split's assignment byte) instead of raw ranges, and translate a byte range with two binary searches instead of scanning every split. The async OnceCell cache the Morselizer introduced is kept. Compute the boundaries after binding the scan's projection and filter, then reuse them for byte-to-row partition alignment and scan preparation. The shared cache keeps partitions on the same boundaries and avoids repeated layout walks. Signed-off-by: Adam Gutglick <adam@spiraldb.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
4e5f945 to
82be146
Compare
Rationale for this change
What changes are included in this PR?
What APIs are changed? Are there any user-facing changes?