Scalar functions pushdown to Duckdb#8303
Conversation
95fb3e5 to
dea4636
Compare
Merging this PR will improve performance by 31.65%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | Simulation | chunked_bool_canonical_into[(1000, 10)] |
35.4 µs | 21.2 µs | +67.59% |
| ⚡ | Simulation | chunked_varbinview_into_canonical[(1000, 10)] |
212.9 µs | 176.7 µs | +20.53% |
| ⚡ | Simulation | chunked_varbinview_canonical_into[(100, 100)] |
307.9 µs | 272.5 µs | +12.97% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing myrrc/scalar-fn-pushdown (5de61f0) with develop (50bee6e)
Footnotes
-
10 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. ↩
dea4636 to
2a987d9
Compare
Polar Signals Profiling ResultsLatest Run
Previous Runs (3)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.981x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (0.981x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.001x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.012x ➖, 0↑ 0↓)
datafusion / parquet (1.012x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.975x ➖, 1↑ 0↓)
duckdb / vortex-compact (1.002x ➖, 0↑ 0↓)
duckdb / parquet (1.004x ➖, 0↑ 0↓)
File Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.004x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.001x ➖, 0↑ 0↓)
datafusion / parquet (0.989x ➖, 0↑ 0↓)
datafusion / arrow (0.994x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (0.999x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.990x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 2↑ 1↓)
duckdb / duckdb (1.002x ➖, 0↑ 0↓)
File Size Changes (9 files changed, -0.1% overall, 5↑ 4↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.114x ❌, 0↑ 65↓)
datafusion / vortex-compact (1.037x ➖, 1↑ 5↓)
datafusion / parquet (1.093x ➖, 0↑ 41↓)
duckdb / vortex-file-compressed (1.061x ➖, 1↑ 21↓)
duckdb / vortex-compact (1.047x ➖, 0↑ 18↓)
duckdb / parquet (1.021x ➖, 1↑ 3↓)
duckdb / duckdb (1.025x ➖, 1↑ 3↓)
File Size Changes (7 files changed, +0.0% overall, 6↑ 1↓)
Totals:
|
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.737x ➖, 5↑ 0↓)
datafusion / vortex-compact (0.989x ➖, 0↑ 0↓)
datafusion / parquet (0.809x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.865x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.984x ➖, 0↑ 0↓)
duckdb / parquet (0.925x ➖, 0↑ 0↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (0.980x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.998x ➖, 0↑ 0↓)
duckdb / parquet (0.973x ➖, 0↑ 0↓)
File Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.037x ➖, 0↑ 4↓)
datafusion / parquet (0.999x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.021x ➖, 1↑ 6↓)
duckdb / parquet (1.004x ➖, 0↑ 0↓)
duckdb / duckdb (0.996x ➖, 0↑ 0↓)
File Size Changes (106 files changed, -0.0% overall, 43↑ 63↓)
Totals:
|
Benchmarks: Random AccessVortex (geomean): 0.940x ➖ How to read Verdict and Engines
unknown / unknown (0.974x ➖, 6↑ 3↓)
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.962x ➖, 8↑ 0↓)
datafusion / vortex-compact (1.087x ➖, 0↑ 6↓)
datafusion / parquet (1.038x ➖, 0↑ 0↓)
datafusion / arrow (1.016x ➖, 2↑ 2↓)
duckdb / vortex-file-compressed (0.948x ➖, 10↑ 0↓)
duckdb / vortex-compact (1.065x ➖, 0↑ 1↓)
duckdb / parquet (1.007x ➖, 0↑ 0↓)
duckdb / duckdb (0.999x ➖, 1↑ 0↓)
File Size Changes (27 files changed, -0.0% overall, 12↑ 15↓)
Totals:
|
Benchmarks: Appian on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.035x ➖, 0↑ 0↓)
datafusion / parquet (1.017x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.017x ➖, 0↑ 0↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
duckdb / duckdb (1.009x ➖, 0↑ 0↓)
File Size Changes (4 files changed, -0.0% overall, 0↑ 4↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.814x ➖, 4↑ 1↓)
datafusion / vortex-compact (0.916x ➖, 3↑ 2↓)
datafusion / parquet (0.892x ➖, 3↑ 0↓)
duckdb / vortex-file-compressed (1.066x ➖, 0↑ 3↓)
duckdb / vortex-compact (1.043x ➖, 0↑ 0↓)
duckdb / parquet (0.936x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.971x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.220x ➖, 0↑ 6↓)
datafusion / parquet (0.750x ➖, 8↑ 1↓)
duckdb / vortex-file-compressed (1.113x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.078x ➖, 0↑ 2↓)
duckdb / parquet (1.167x ➖, 0↑ 3↓)
|
Benchmarks: CompressionVortex (geomean): 1.004x ➖ How to read Verdict and Engines
unknown / unknown (0.980x ➖, 8↑ 2↓)
|
f218dcf to
9099587
Compare
|
Local run shows 2x speedup for clickbench 27 (arm, 250->140ms), CI run shows a slowdown, so something wrong is going on. On a local x86 box the speedup is 680ms -> 345 ms . |
9099587 to
1201b5c
Compare
1201b5c to
ad554af
Compare
5367e50 to
5de61f0
Compare
5de61f0 to
d1bde20
Compare
Depends on #8371 and #8341