Run SQL benchmarks with plan v2 (full stack vs develop) - #9342
Run SQL benchmarks with plan v2 (full stack vs develop)#9342joseph-isaacs wants to merge 13 commits into
Conversation
Polar Signals Profiling ResultsLatest Run
Previous Runs (30)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 1.019x ➖ datafusion / vortex-file-compressed / ns (1.019x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: String Encoding 📖vortex / vortex-file-compressed / ms (1.010x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / % (1.000x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.076x ➖, 0↑ 6↓)
datafusion / vortex-compact / ns (1.050x ➖, 1↑ 4↓)
datafusion / parquet / ns (0.977x ➖, 2↑ 0↓)
duckdb / vortex-file-compressed / ns (0.962x ➖, 2↑ 0↓)
duckdb / vortex-compact / ns (0.992x ➖, 0↑ 1↓)
duckdb / parquet / ns (1.002x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.275x ❌, 0↑ 4↓)
datafusion / vortex-compact / ns (1.038x ➖, 0↑ 1↓)
datafusion / parquet / ns (1.008x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.953x ➖, 1↑ 0↓)
duckdb / vortex-compact / ns (0.954x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.983x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.040x ➖, 0↑ 2↓)
datafusion / vortex-compact / ns (1.125x ❌, 1↑ 5↓)
datafusion / parquet / ns (1.041x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed / ns (1.002x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.987x ➖, 1↑ 1↓)
duckdb / parquet / ns (0.993x ➖, 0↑ 0↓)
File Size Changes (200 files changed, -0.0% overall, 98↑ 102↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.059x ➖, 0↑ 16↓)
datafusion / vortex-compact / ns (1.017x ➖, 2↑ 7↓)
datafusion / parquet / ns (0.993x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed / ns (0.994x ➖, 5↑ 3↓)
duckdb / vortex-compact / ns (0.999x ➖, 1↑ 5↓)
duckdb / parquet / ns (0.994x ➖, 6↑ 2↓)
No file size changes detected. |
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed / ns (1.041x ➖, 2↑ 4↓)
duckdb / vortex-compact / ns (1.119x ❌, 0↑ 5↓)
duckdb / parquet / ns (1.005x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.036x ➖, 3↑ 7↓)
datafusion / vortex-compact / ns (1.119x ❌, 2↑ 16↓)
datafusion / parquet / ns (1.004x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.016x ➖, 1↑ 3↓)
duckdb / vortex-compact / ns (1.008x ➖, 2↑ 3↓)
duckdb / parquet / ns (1.002x ➖, 2↑ 0↓)
No file size changes detected. |
Benchmarks: Appian on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-compact / ns (1.019x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.001x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.992x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.998x ➖, 0↑ 0↓)
File Size Changes (10 files changed, -63.8% overall, 0↑ 10↓)
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 / ns (1.277x ➖, 0↑ 10↓)
datafusion / vortex-compact / ns (1.055x ➖, 2↑ 3↓)
datafusion / parquet / ns (1.062x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed / ns (0.931x ➖, 1↑ 0↓)
duckdb / vortex-compact / ns (0.942x ➖, 1↑ 1↓)
duckdb / parquet / ns (1.010x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.190x ❌, 0↑ 16↓)
datafusion / vortex-compact / ns (1.119x ❌, 1↑ 12↓)
datafusion / parquet / ns (0.992x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.986x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.991x ➖, 0↑ 1↓)
duckdb / parquet / ns (1.002x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Random Access 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
random-access / vortex-file-compressed / ns (1.021x ➖, 0↑ 0↓)
random-access / parquet / ns (1.006x ➖, 0↑ 0↓)
random-access / lance / ns (1.005x ➖, 0↑ 0↓)
|
Benchmarks: Compression 📖vortex / vortex-file-compressed / ns (0.997x ➖, 0↑ 1↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (1.000x ➖, 0↑ 1↓)
vortex / parquet / ns (0.997x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.079x ➖, 0↑ 2↓)
datafusion / vortex-compact / ns (0.829x ➖, 3↑ 0↓)
datafusion / parquet / ns (1.341x ❌, 0↑ 6↓)
duckdb / vortex-file-compressed / ns (0.924x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.983x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.296x ➖, 1↑ 2↓)
|
Benchmarks: TPC-H SF=10 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-compact / ns (1.334x ❌, 0↑ 14↓)
datafusion / parquet / ns (1.123x ➖, 0↑ 5↓)
duckdb / vortex-compact / ns (1.009x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.977x ➖, 0↑ 0↓)
|
Merging this PR will regress 2 benchmarks
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Translate each partition's byte range to the row range whose natural splits it owns, mirroring the LayoutReader path, so plan-v2 scans no longer require repartitioning to be disabled. Benchmarks can now run against the same DataFusion configuration as the stored baseline. Log the plan-v2 scan path once per process so benchmark and CI logs record which scan path produced their timings. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MjXw22CLhx6NgA8mxjJCmQ
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MjXw22CLhx6NgA8mxjJCmQ
f2c5c38 to
daa0791
Compare
Rationale for this change
#9341 targets
ji/vx-plan-perf, so it sits mid-stack and the PR benchmark dispatch—which listens forpull_requestlabel events on PRs intodevelop—does not run for it. This draft carries the complete Plan V2 stack directly on currentdevelopso CI can benchmark it against the current baseline.This is the benchmarking-only sibling of #9341 and includes the final COUNT(*) fix from #9365.
What is included?
The branch contains 13 commits:
VORTEX_USE_PLAN_V2=1DataFusion path and CI benchmark settingVORTEX_PLAN_V2_FILTER_MODEThe COUNT(*) change replaces the earlier benchmark-branch workaround. A root-independent expression now reduces through
RowIdxto its child, allowing field pruning to produce a childlessPack. Split planning preserves that pack's row-count endpoint, so the scan returns the correct number of rows without requesting any struct-field segments.Rebase verification
developatca7f626124User-facing behavior
No stable API changes.
LayoutReaderremains the default whenVORTEX_USE_PLAN_V2is unset; Plan V2 remains opt-in and experimental.Checks
cargo +nightly fmt --all -- --checkyamllint --strict -c .yamllint.yaml .github/workflows/sql-bench-matrix.ymlcargo test -p vortex-layout -p vortex-scan-v2 -p vortex-datafusioncargo clippy -p vortex-layout -p vortex-scan-v2 -p vortex-datafusion --all-targets --all-features -- -D warningsgit diff --check origin/develop...HEAD