Skip to content

Compare primitive values through the shared RowFn executor - #10676

Draft
connortsui20 wants to merge 2 commits into
ct/row-fn-cleanup/fused-executionfrom
ct/row-fn-cleanup/primitive-compare
Draft

connortsui20 wants to merge 2 commits into
ct/row-fn-cleanup/fused-executionfrom
ct/row-fn-cleanup/primitive-compare

Conversation

@connortsui20

@connortsui20 connortsui20 commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Tracking Issue: #9128

Summary

Moves primitive comparisons onto the shared RowFn executor from #10675, so comparison code only selects the predicate while the framework handles decoding, constants, validity, and Boolean output.

Changes

Preserves the public Binary identity and floating-point total ordering. Uses borrowed operands and dtypes, and moves a constant left operand to the right with the swapped operator. Adds coverage for all six swapped operators across a bitmap boundary and keeps the existing comparison benchmarks.

Based on #10675, rebased onto develop at a5f574e69bbf9010029f0e62ca59d56cd0c4aa6e. Keeps the wide-type, sliced-input, bitmap-boundary, NaN, and signed-zero tests added upstream in #10843.

Performance

Still draft. Earlier EC2 runs showed gains on some configurations and regressions on others. They measured an earlier accumulated stack, not this layer in isolation or the current head.

The baseline now includes #10843's private NEON packing optimization. This migration replaces that private kernel with RowFn execution, so its performance must be compared with the improved baseline. The old packing gains cannot be credited to this PR.

Historical EC2 accumulated-stack measurements

Ratios are the median of 21 paired candidate/baseline elapsed-time ratios. Below 1 is faster. This compares the earlier complete migration, M0 ddf8a16df6b7d7c20cfd860e5f23438d97ca4238, with D 0291778db36809f77ce0219bf9850506d3cba3b6. That baseline predates #10843. The array-pair cases use all-valid nullable inputs. The addition case is an arithmetic control whose algorithm was unchanged.

Workload C7g NEON C6a AVX2 C7i AVX2 build C7i AVX-512 build
f32 array-pair Gte, 8,192 rows 1.014 1.040 0.873 1.036
i64 array-pair Gte, 8,192 rows 0.900 1.139 0.929 0.943
Nullable i64 add, 32,768 rows 1.002 1.123 1.154 1.004

For example, the old stack took about 10% less time for the ARM i64 comparison, but about 14% more for the same case on AVX2-only C6a. C6a nullable i64 addition took about 12% more time. These whole-executable measurements do not establish that the comparison algorithm caused movement in arithmetic controls.

In the four-label matrix, D ran before M0 in 11 blocks and after it in ten. The experimental one-pass decoder variants are excluded from this table.

EC2 C7g (Neoverse V1), C6a (EPYC 7R13), and C7i (Xeon Platinum 8488C). Rust 1.99.1 / LLVM 23.1.1, bench profile with 16 CGUs and no LTO, MiMalloc, CPU 2 pinned. The same 455-case public-path microbenchmark suite ran serially across hosts, with 21 paired blocks, 10 ms per case, A/A calibration, and a separate control executable. These are microbenchmarks, not query results. C7i can dispatch to AVX-512 at runtime even in its AVX2 build.

Saved evidence is in the local investigation archive row-fn-evaluation-20261026: manifest.json, *-matrix-*-medians.csv, *-matrix-*-summary.json, and results/<host>/results/matrix-*.json.

Confirmed independent packing gains, now in develop via #10843

The ARM-only private-kernel change reduced long array-pair cohort time on Graviton3 as follows. Each cohort contains 32 cases, including partially valid inputs and lengths around 16K.

Cohort Confirmation elapsed-time ratio Paired 95% interval Time reduction
i64 0.846 0.843 to 0.856 15.4%
u64 0.860 0.858 to 0.864 14.0%
f64 0.882 0.880 to 0.886 11.8%

Baseline a59294e35e7109fac894a7a38a68f42db0c3c967, candidate f018aaeef739145e1bc50079a441c5d9fd53404a. The cohort uses a geometric mean of case ratios within each block, then the median across blocks. Two 21-block sessions used complementary AB/BA orders, the same full 455-case suite, and 1,000 single-iteration samples per case. The initial fixed-order source comparisons were discarded. The AVX2 builds had identical .text bytes, so no x86 speedup was attributed to this change. See #10843 for the harness and full methodology.

These gains required neither this PR nor #10675.

Prior validation at e843b51408: 963 accumulated scalar-function tests and all-target, all-feature Clippy with warnings denied passed. This rebase was reviewed from source, including the kernel conflict and upstream test coverage. Tests, builds, and benchmarks have not been rerun on the rebased head.

@codspeed

codspeed Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 3.85%

4 warnings

⚠️ Walltime results may be unreliable

Some benchmarks used the Walltime instrument outside CodSpeed Macro Runners, which can make the results inconsistent.

Learn more about Macro Runners

See affected benchmarks

⚠️ Unable to measure the execution of 1 benchmark

This benchmark measured no execution time, so its result is not comparable and counts as unchanged. This usually happens when the compiler removes the code under test.

Prevent compiler optimizations

See affected benchmarks

⚠️ 2 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

⚠️ Base and head ran on different runner types

Some benchmarks with significant performance changes were compared across different runner types, so the changes might not come from the code. Run base and head on the same runner type, or use CodSpeed Macro Runners for more stable results.

Learn more about Macro Runners

Open the report in CodSpeed to investigate

⚡ 17 improved benchmarks
❌ 18 regressed benchmarks
✅ 2169 untouched benchmarks
⏩ 370 skipped benchmarks1
🗄️ 30 archived benchmarks run2

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Walltime threshold_neon[64] 2.5 µs 4 µs -36.86%
❌ Walltime filter_neon[64] 1.7 µs 2.4 µs -29.53%
❌ Walltime threshold_neon[80] 3.4 µs 4.7 µs -26.61%
❌ CPU Simulation decode_bool_nullable[10000_2_alternating_mostly_valid] 354.1 µs 469.7 µs -24.61%
❌ CPU Simulation decode_bool_nullable[10000_10_mostly_true_mostly_valid] 86.7 µs 110.3 µs -21.42%
❌ CPU Simulation decode_bool_nullable[10000_10_alternating_mostly_null] 87.2 µs 110.6 µs -21.16%
❌ CPU Simulation bench_compare_varbin[(50000, 2)] 134.6 µs 164.6 µs -18.25%
❌ CPU Simulation bench_compare_varbin[(50000, 64)] 136.2 µs 166.2 µs -18.05%
❌ CPU Simulation decode_bool_nullable[10000_10_alternating_half_valid] 103.8 µs 126.6 µs -18.02%
❌ CPU Simulation decode_bool_nullable[10000_10_mostly_true_half_valid] 106 µs 129 µs -17.82%
❌ CPU Simulation decode_bool_nullable[10000_10_mostly_true_mostly_null] 105.9 µs 128.7 µs -17.67%
❌ CPU Simulation decode_bool_nullable[10000_10_alternating_mostly_valid] 115.6 µs 138.9 µs -16.76%
❌ CPU Simulation bench_compare_sliced_dict_varbinview[(7500, 10000)] 195.8 µs 230 µs -14.87%
❌ Walltime scalar_subtract_neon 10.7 µs 12.4 µs -13.75%
❌ Walltime filter_neon[80] 2.5 µs 2.9 µs -12.72%
❌ CPU Simulation bench_compare_sliced_dict_varbinview[(10000, 10000)] 207.8 µs 236.1 µs -11.99%
❌ CPU Simulation bench_compare_sliced_dict_varbinview[(1000, 10000)] 81 µs 91.7 µs -11.62%
❌ Walltime threshold_avx512[80] 2.5 µs 2.8 µs -10.04%
⚡ Walltime compare_u64_avx2 3.7 µs 2.8 µs +29.29%
⚡ Walltime compare_float_avx2 4.8 µs 3.8 µs +27.12%
... ... ... ... ... ...

ℹ️ 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 ct/row-fn-cleanup/primitive-compare (0bd1d53) with ct/row-fn-cleanup/fused-execution (712ed09)

Open in CodSpeed

Footnotes

  1. 370 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. ↩

  2. 30 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. ↩

@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from dee1a57 to 3a38935 Compare October 22, 2026 14:09
@connortsui20
connortsui20 removed this pull request from stack #10677 October 22, 2026 14:10
@connortsui20
connortsui20 changed the base branch from ct/row-fn-cleanup/fused-execution to ct/row-fn-cleanup/batch-inputs October 22, 2026 14:10
@connortsui20
connortsui20 added this pull request to stack #10695 October 22, 2026 14:11
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from 3a38935 to 33ccf9b Compare October 22, 2026 14:49
@connortsui20 connortsui20 added the changelog/performance A performance improvement label Oct 22, 2026
@connortsui20
connortsui20 removed this pull request from stack #10695 October 22, 2026 15:12
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from 33ccf9b to b837021 Compare October 22, 2026 15:13
@connortsui20
connortsui20 changed the base branch from ct/row-fn-cleanup/batch-inputs to ct/row-fn-cleanup/fused-execution October 22, 2026 15:13
@connortsui20
connortsui20 added this pull request to stack #10697 October 22, 2026 15:13

connortsui20 commented Oct 23, 2026 •

Copy link
Copy Markdown
Member Author

Edit: reopened as a draft. The controlled measurements showed substantial AVX2 gains as well as ARM and AVX-512 regressions. Those results justify holding the PR for further work, but do not establish that the migration has no benefit. The earlier closure treated those two conclusions as equivalent.

#10741 isolates a useful float32 packing policy, and #10742 explores a smaller validity change. Neither replaces every benefit observed in the migration. Both remain independent drafts with their own measurement limits.

#10675 and this PR are being rebased while preserving their dependency. The saved measurements are historical evidence, not validation of the rebased heads.

@connortsui20 connortsui20 reopened this Oct 23, 2026
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from b837021 to 3583fc2 Compare October 23, 2026 17:53
@robert3005
robert3005 force-pushed the ct/row-fn-cleanup/primitive-compare branch from 3583fc2 to 237dfc0 Compare October 26, 2026 00:51
connortsui20 added a commit that referenced this pull request Oct 26, 2026
## Summary

- Tracking Issue: #9128
- Independent validity candidate: #10742

Routes float32 comparisons through the existing word-packing collectors.
This recovers the measured float32 gains from the RowFn comparison
investigation with two private dispatch changes. It is independent of
the comparison migration and fusion work in #10676 and #10675.

## Changes

Adds `F32` to the existing collector selections for array pairs and
array/constant comparisons. Integer collector policies remain unchanged.
The floating-point documentation now accounts for NaN signs and
payloads.

**Draft pending fresh isolated benchmarks on this head.** Saved
measurements show a consistent float32 gain, but also some unrelated ARM
regressions. The later combined packing/validity candidate had an AVX2
regression that has not been attributed to either change individually.

<details>
<summary>Saved benchmark evidence and validation</summary>

The isolated packing snapshot `4c98df49e379853f8e990d9764791b5330511771`
was compared with frozen `develop` at
`a1693389301e446eec41373cb274d98a303d3ca0`. Measurements used Rust
1.99.1 / LLVM 23.1.1, 16 CGUs, no LTO, CPU 2, and 21 balanced paired
blocks on Graviton3 C7g and Sapphire Rapids C7i. This was native wall
time, not CodSpeed simulation.

Across 48 float32 cases at 8,192 and 65,536 rows, covering array pairs,
both constant orientations, equality/ordering, and four validity shapes,
the median block ratios of equally weighted geometric means were:

| Target | Candidate / baseline time | 95% paired bootstrap interval |
| --- | ---: | ---: |
| NEON | 0.611 | 0.610–0.611 |
| AVX2 | 0.632 | 0.630–0.633 |
| AVX-512 | 0.679 | 0.678–0.681 |

Among all 375 probe cases, the isolated snapshot had no flagged
regressions on AVX2 or AVX-512. ARM had four, including roughly 4.7%
slower u64 multiply and 4.6% slower large f64 equality. Those paths do
not use the changed float32 collector, so their movement is not evidence
of extra float32 work, but it still counts against a no-regression
claim.

A separate combined packing/validity candidate at
`8d8ef8151454bbc73e1cd0b236567542a1401cbe`, based on
`d834a11faa79370b4d2e0bbcc73195f451a8a212`, retained the float32 gain
but regressed large nullable u64 add by about 18% on AVX2. Profiling
found a byte-identical retry hot loop with essentially unchanged
instructions per operation and more cycles. The precise
placement-sensitive mechanism remains unresolved. That combined result
does not isolate this PR.

The combined candidate passed 225 RowFn tests and 232 binary-function
tests on that newer base. Separate native probes checked
scalar-reference results and float/encoding/tail edge cases. The changed
file passed the pinned formatter. These are saved checks, not fresh
validation of this individual PR.

This PR is rebased onto `c750fbd80882f78efd6a2703bc0f3e17f1aca9f9`. The
patch is unchanged by the rebase. Tests and benchmarks were not rerun
after it.

</details>

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch 2 times, most recently from 1af8625 to e843b51 Compare October 26, 2026 20:53
@connortsui20 connortsui20 added the action/bench-sql Run SQL benchmarks without Vortex Compact on this PR label Oct 27, 2026
@github-actions github-actions Bot removed the action/bench-sql Run SQL benchmarks without Vortex Compact on this PR label Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Polar Signals Profiling Results

Latest Run

Status Commit Job Attempt Link
🟢 Done e843b51 clickbench-nvme 1 Explore Profiling Data
🟢 Done e843b51 polarsignals 1 Explore Profiling Data
🟢 Done e843b51 fineweb 1 Explore Profiling Data
🟢 Done e843b51 tpch-nvme-10 1 Explore Profiling Data
🟢 Done e843b51 tpch-nvme 1 Explore Profiling Data
🟢 Done e843b51 tpch-s3 1 Explore Profiling Data
🟢 Done e843b51 tpcds-nvme 1 Explore Profiling Data

Powered by Polar Signals Cloud

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: PolarSignals Profiling 📖

Commits: PR e843b514 vs base a59294e3
Vortex (geomean): hot 1.001x ➖ · cold 1.010x ➖


datafusion / vortex-file-compressed / ns (1.001x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
polarsignals_q00/datafusion:vortex-file-compressed 44757462 / 45011382 / -0.6% 87584486 / 88007719 / -0.5% 0.51 / 0.51 / -0.1%
polarsignals_q01/datafusion:vortex-file-compressed 51332063 / 50433898 / +1.8% 113408678 / 108330595 / +4.7% 0.45 / 0.47 / -2.8%
polarsignals_q02/datafusion:vortex-file-compressed 43366871 / 43567031 / -0.5% 87878865 / 84151315 / +4.4% 0.49 / 0.52 / -4.7%
polarsignals_q03/datafusion:vortex-file-compressed 55369332 / 54488600 / +1.6% 112859252 / 109979388 / +2.6% 0.49 / 0.50 / -1.0%
polarsignals_q04/datafusion:vortex-file-compressed 9303700 / 9238203 / +0.7% 45233127 / 41520899 / +8.9% 0.21 / 0.22 / -7.6%
polarsignals_q05/datafusion:vortex-file-compressed 11526764 / 11885060 / -3.0% 47958521 / 44900381 / +6.8% 0.24 / 0.26 / -9.2%
polarsignals_q06/datafusion:vortex-file-compressed 23123270 / 23257970 / -0.6% 59339814 / 56113443 / +5.7% 0.39 / 0.41 / -6.0%
polarsignals_q07/datafusion:vortex-file-compressed 10949884 / 11152574 / -1.8% 46223472 / 50312612 / -8.1% 0.24 / 0.22 / +6.9%
polarsignals_q08/datafusion:vortex-file-compressed 97765876 / 97486556 / +0.3% 157998108 / 161295449 / -2.0% 0.62 / 0.60 / +2.4%
polarsignals_q09/datafusion:vortex-file-compressed 9973668 / 9675708 / +3.1% 44414917 / 49625506 / -10.5% 🟢 0.22 / 0.19 / +15.2%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: FineWeb NVMe 📖

Commits: PR e843b514 vs base a59294e3
Verdict: No clear signal (low confidence)
Attributed Vortex impact: +0.8%
Engines: DataFusion No clear signal (-1.8%, low confidence) · DuckDB No clear signal (+3.3%, low confidence)
Vortex (geomean): hot 1.010x ➖ · cold 1.108x ❌
Parquet (geomean): hot 1.003x ➖ · cold 1.024x ➖
Shifts: Parquet (control) +0.3% · Median polish +0.0%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (0.987x ➖, 1↑ 1↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
fineweb_q00/datafusion:vortex-file-compressed 7034230 / 6904037 / +1.9% 19176200 / 17293393 / +10.9% 🔴 0.37 / 0.40 / -8.1%
fineweb_q01/datafusion:vortex-file-compressed 7136130 / 8055758 / -11.4% 🟢 50196504 / 45881798 / +9.4% 0.14 / 0.18 / -19.0%
fineweb_q02/datafusion:vortex-file-compressed 10233310 / 9256510 / +10.6% 🔴 53747220 / 49871020 / +7.8% 0.19 / 0.19 / +2.6%
fineweb_q03/datafusion:vortex-file-compressed 20568479 / 20307072 / +1.3% 111007698 / 114517256 / -3.1% 0.19 / 0.18 / +4.5%
fineweb_q04/datafusion:vortex-file-compressed 66613412 / 67140125 / -0.8% 153987523 / 153437230 / +0.4% 0.43 / 0.44 / -1.1%
fineweb_q05/datafusion:vortex-file-compressed 67915186 / 67748338 / +0.2% 149026775 / 151452004 / -1.6% 0.46 / 0.45 / +1.9%
fineweb_q06/datafusion:vortex-file-compressed 18880114 / 19558984 / -3.5% 122287796 / 113185998 / +8.0% 0.15 / 0.17 / -10.7%
fineweb_q07/datafusion:vortex-file-compressed 17366951 / 18002360 / -3.5% 113929978 / 108104254 / +5.4% 0.15 / 0.17 / -8.5%
fineweb_q08/datafusion:vortex-file-compressed 9935682 / 10483864 / -5.2% 47014386 / 41646475 / +12.9% 🔴 0.21 / 0.25 / -16.0%
datafusion / parquet / ns (1.005x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
fineweb_q00/datafusion:parquet 9717361 / 9227758 / +5.3% 33597413 / 32498359 / +3.4% 0.29 / 0.28 / +1.9%
fineweb_q01/datafusion:parquet 74308790 / 73634542 / +0.9% 165355458 / 161111286 / +2.6% 0.45 / 0.46 / -1.7%
fineweb_q02/datafusion:parquet 75448336 / 74609638 / +1.1% 160674419 / 165242869 / -2.8% 0.47 / 0.45 / +4.0%
fineweb_q03/datafusion:parquet 74295020 / 75024748 / -1.0% 165145436 / 154449706 / +6.9% 0.45 / 0.49 / -7.4%
fineweb_q04/datafusion:parquet 82465467 / 82266572 / +0.2% 162097432 / 157989736 / +2.6% 0.51 / 0.52 / -2.3%
fineweb_q05/datafusion:parquet 81123955 / 81095445 / +0.0% 162616428 / 160313193 / +1.4% 0.50 / 0.51 / -1.4%
fineweb_q06/datafusion:parquet 75901669 / 76521018 / -0.8% 171255424 / 164018193 / +4.4% 0.44 / 0.47 / -5.0%
fineweb_q07/datafusion:parquet 74357121 / 74077756 / +0.4% 163907799 / 154114778 / +6.4% 0.45 / 0.48 / -5.6%
fineweb_q08/datafusion:parquet 72902770 / 74306141 / -1.9% 164552027 / 161521729 / +1.9% 0.44 / 0.46 / -3.7%
duckdb / vortex-file-compressed / ns (1.035x ➖, 0↑ 1↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
fineweb_q00/duckdb:vortex-file-compressed 2051564 / 2090224 / -1.8% 7314616 / 7045611 / +3.8% 0.28 / 0.30 / -5.5%
fineweb_q01/duckdb:vortex-file-compressed 9502016 / 9090878 / +4.5% 36059547 / 31710357 / +13.7% 🔴 0.26 / 0.29 / -8.1%
fineweb_q02/duckdb:vortex-file-compressed 11087716 / 10615704 / +4.4% 39163205 / 32955117 / +18.8% 🔴 0.28 / 0.32 / -12.1%
fineweb_q03/duckdb:vortex-file-compressed 18947166 / 19230332 / -1.5% 108811182 / 86906208 / +25.2% 🔴 0.17 / 0.22 / -21.3%
fineweb_q04/duckdb:vortex-file-compressed 68529928 / 66169736 / +3.6% 122019479 / 104174712 / +17.1% 🔴 0.56 / 0.64 / -11.6%
fineweb_q05/duckdb:vortex-file-compressed 68588347 / 65690638 / +4.4% 118789941 / 103368719 / +14.9% 🔴 0.58 / 0.64 / -9.1%
fineweb_q06/duckdb:vortex-file-compressed 19692760 / 19034616 / +3.5% 114091474 / 92464232 / +23.4% 🔴 0.17 / 0.21 / -16.2%
fineweb_q07/duckdb:vortex-file-compressed 18346946 / 18128907 / +1.2% 107073717 / 85530471 / +25.2% 🔴 0.17 / 0.21 / -19.2%
fineweb_q08/duckdb:vortex-file-compressed 5758643 / 5063812 / +13.7% 🔴 15183495 / 14046856 / +8.1% 0.38 / 0.36 / +5.2%
duckdb / parquet / ns (1.001x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
fineweb_q00/duckdb:parquet 24246065 / 23684770 / +2.4% 28253604 / 27767369 / +1.8% 0.86 / 0.85 / +0.6%
fineweb_q01/duckdb:parquet 55106152 / 54028828 / +2.0% 81647372 / 77850675 / +4.9% 0.67 / 0.69 / -2.7%
fineweb_q02/duckdb:parquet 60621264 / 60183341 / +0.7% 83533071 / 85107415 / -1.8% 0.73 / 0.71 / +2.6%
fineweb_q03/duckdb:parquet 118389692 / 119768847 / -1.2% 189873193 / 192807099 / -1.5% 0.62 / 0.62 / +0.4%
fineweb_q04/duckdb:parquet 165497496 / 160417964 / +3.2% 223468332 / 211682473 / +5.6% 0.74 / 0.76 / -2.3%
fineweb_q05/duckdb:parquet 159961901 / 163563388 / -2.2% 215792353 / 208122949 / +3.7% 0.74 / 0.79 / -5.7%
fineweb_q06/duckdb:parquet 88596816 / 89951770 / -1.5% 154638321 / 155073730 / -0.3% 0.57 / 0.58 / -1.2%
fineweb_q07/duckdb:parquet 90824726 / 93666274 / -3.0% 153130688 / 148144856 / +3.4% 0.59 / 0.63 / -6.2%
fineweb_q08/duckdb:parquet 29689625 / 29427784 / +0.9% 31551636 / 31237710 / +1.0% 0.94 / 0.94 / -0.1%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=1 on NVME 📖

Commits: PR e843b514 vs base a59294e3
Verdict: No clear signal (low confidence)
Attributed Vortex impact: +0.3%
Engines: DataFusion No clear signal (+0.2%, low confidence) · DuckDB No clear signal (+0.4%, low confidence)
Vortex (geomean): hot 1.003x ➖ · cold 1.029x ➖
Parquet (geomean): hot 1.000x ➖ · cold 1.007x ➖
Shifts: Parquet (control) -0.0% · Median polish +0.1%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (1.002x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:vortex-file-compressed 17472800 / 17239670 / +1.4% 44108398 / 45059292 / -2.1% 0.40 / 0.38 / +3.5%
tpch_q02/datafusion:vortex-file-compressed 17470200 / 18037313 / -3.1% 35397558 / 36095803 / -1.9% 0.49 / 0.50 / -1.2%
tpch_q03/datafusion:vortex-file-compressed 22290732 / 22544089 / -1.1% 50301896 / 47910427 / +5.0% 0.44 / 0.47 / -5.8%
tpch_q04/datafusion:vortex-file-compressed 13289847 / 13473966 / -1.4% 37491428 / 34128448 / +9.9% 0.35 / 0.39 / -10.2%
tpch_q05/datafusion:vortex-file-compressed 39616668 / 39414624 / +0.5% 66670371 / 68809902 / -3.1% 0.59 / 0.57 / +3.7%
tpch_q06/datafusion:vortex-file-compressed 8600713 / 8741713 / -1.6% 31398184 / 28308414 / +10.9% 🔴 0.27 / 0.31 / -11.3%
tpch_q07/datafusion:vortex-file-compressed 54769109 / 55336136 / -1.0% 82401102 / 77554064 / +6.2% 0.66 / 0.71 / -6.8%
tpch_q08/datafusion:vortex-file-compressed 55368415 / 54128283 / +2.3% 83799320 / 80969765 / +3.5% 0.66 / 0.67 / -1.2%
tpch_q09/datafusion:vortex-file-compressed 49252648 / 49446155 / -0.4% 79221855 / 85021416 / -6.8% 0.62 / 0.58 / +6.9%
tpch_q10/datafusion:vortex-file-compressed 20868153 / 20311979 / +2.7% 52507781 / 50836534 / +3.3% 0.40 / 0.40 / -0.5%
tpch_q11/datafusion:vortex-file-compressed 15634677 / 15609040 / +0.2% 35139938 / 33548930 / +4.7% 0.44 / 0.47 / -4.4%
tpch_q12/datafusion:vortex-file-compressed 25527391 / 25182379 / +1.4% 48846659 / 47890662 / +2.0% 0.52 / 0.53 / -0.6%
tpch_q13/datafusion:vortex-file-compressed 20574160 / 20365151 / +1.0% 40681322 / 40087673 / +1.5% 0.51 / 0.51 / -0.4%
tpch_q14/datafusion:vortex-file-compressed 15256018 / 15365403 / -0.7% 40998053 / 38079981 / +7.7% 0.37 / 0.40 / -7.8%
tpch_q15/datafusion:vortex-file-compressed 20927742 / 20817548 / +0.5% 46293756 / 47580259 / -2.7% 0.45 / 0.44 / +3.3%
tpch_q16/datafusion:vortex-file-compressed 18546642 / 18434712 / +0.6% 39823360 / 41119929 / -3.2% 0.47 / 0.45 / +3.9%
tpch_q17/datafusion:vortex-file-compressed 29569699 / 29615727 / -0.2% 61128464 / 58832361 / +3.9% 0.48 / 0.50 / -3.9%
tpch_q18/datafusion:vortex-file-compressed 37732505 / 37631104 / +0.3% 60938195 / 58168557 / +4.8% 0.62 / 0.65 / -4.3%
tpch_q19/datafusion:vortex-file-compressed 18748755 / 18701397 / +0.3% 40141932 / 40410581 / -0.7% 0.47 / 0.46 / +0.9%
tpch_q20/datafusion:vortex-file-compressed 23498228 / 22938405 / +2.4% 47102155 / 46702673 / +0.9% 0.50 / 0.49 / +1.6%
tpch_q21/datafusion:vortex-file-compressed 44094305 / 43192190 / +2.1% 76777461 / 74955652 / +2.4% 0.57 / 0.58 / -0.3%
tpch_q22/datafusion:vortex-file-compressed 11065158 / 11185959 / -1.1% 31483323 / 30048555 / +4.8% 0.35 / 0.37 / -5.6%
datafusion / parquet / ns (1.000x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:parquet 72317276 / 71950523 / +0.5% 89028589 / 90887633 / -2.0% 0.81 / 0.79 / +2.6%
tpch_q02/datafusion:parquet 76412222 / 75918085 / +0.7% 91544771 / 92178163 / -0.7% 0.83 / 0.82 / +1.3%
tpch_q03/datafusion:parquet 83775153 / 84282890 / -0.6% 105783094 / 105895773 / -0.1% 0.79 / 0.80 / -0.5%
tpch_q04/datafusion:parquet 40828453 / 40528730 / +0.7% 57977947 / 58201706 / -0.4% 0.70 / 0.70 / +1.1%
tpch_q05/datafusion:parquet 112727845 / 112712319 / +0.0% 140407892 / 138727521 / +1.2% 0.80 / 0.81 / -1.2%
tpch_q06/datafusion:parquet 32110176 / 31995988 / +0.4% 50197011 / 49869582 / +0.7% 0.64 / 0.64 / -0.3%
tpch_q07/datafusion:parquet 115005094 / 115168669 / -0.1% 140592124 / 141942337 / -1.0% 0.82 / 0.81 / +0.8%
tpch_q08/datafusion:parquet 119764057 / 119953115 / -0.2% 147234298 / 146839207 / +0.3% 0.81 / 0.82 / -0.4%
tpch_q09/datafusion:parquet 140001324 / 141605759 / -1.1% 169735456 / 168125142 / +1.0% 0.82 / 0.84 / -2.1%
tpch_q10/datafusion:parquet 107097893 / 106348206 / +0.7% 134907484 / 131421247 / +2.7% 0.79 / 0.81 / -1.9%
tpch_q11/datafusion:parquet 61799624 / 61561183 / +0.4% 81256596 / 81266688 / -0.0% 0.76 / 0.76 / +0.4%
tpch_q12/datafusion:parquet 65097922 / 65370161 / -0.4% 87557582 / 82652763 / +5.9% 0.74 / 0.79 / -6.0%
tpch_q13/datafusion:parquet 147240770 / 147103482 / +0.1% 168295209 / 167390221 / +0.5% 0.87 / 0.88 / -0.4%
tpch_q14/datafusion:parquet 47893379 / 47782441 / +0.2% 75214126 / 71674810 / +4.9% 0.64 / 0.67 / -4.5%
tpch_q15/datafusion:parquet 74755281 / 75278308 / -0.7% 97845599 / 95006286 / +3.0% 0.76 / 0.79 / -3.6%
tpch_q16/datafusion:parquet 43452327 / 44158917 / -1.6% 62729583 / 60856181 / +3.1% 0.69 / 0.73 / -4.5%
tpch_q17/datafusion:parquet 124296865 / 123815188 / +0.4% 145544012 / 148002549 / -1.7% 0.85 / 0.84 / +2.1%
tpch_q18/datafusion:parquet 123761877 / 123897428 / -0.1% 145260753 / 145742173 / -0.3% 0.85 / 0.85 / +0.2%
tpch_q19/datafusion:parquet 57850662 / 58478981 / -1.1% 82418426 / 84343331 / -2.3% 0.70 / 0.69 / +1.2%
tpch_q20/datafusion:parquet 79667847 / 79914682 / -0.3% 101857041 / 102207993 / -0.3% 0.78 / 0.78 / +0.0%
tpch_q21/datafusion:parquet 116989897 / 116301828 / +0.6% 140272483 / 141991219 / -1.2% 0.83 / 0.82 / +1.8%
tpch_q22/datafusion:parquet 52417392 / 51881357 / +1.0% 69721993 / 67245251 / +3.7% 0.75 / 0.77 / -2.6%
duckdb / vortex-file-compressed / ns (1.004x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:vortex-file-compressed 9485845 / 9288627 / +2.1% 19535298 / 18525566 / +5.5% 0.49 / 0.50 / -3.2%
tpch_q02/duckdb:vortex-file-compressed 15128804 / 15060375 / +0.5% 23889041 / 23266289 / +2.7% 0.63 / 0.65 / -2.2%
tpch_q03/duckdb:vortex-file-compressed 18130698 / 18036145 / +0.5% 33976824 / 32826437 / +3.5% 0.53 / 0.55 / -2.9%
tpch_q04/duckdb:vortex-file-compressed 12288960 / 12024552 / +2.2% 26069463 / 24822028 / +5.0% 0.47 / 0.48 / -2.7%
tpch_q05/duckdb:vortex-file-compressed 19907330 / 20278379 / -1.8% 33146853 / 31349460 / +5.7% 0.60 / 0.65 / -7.2%
tpch_q06/duckdb:vortex-file-compressed 4706774 / 4665711 / +0.9% 14808558 / 13259287 / +11.7% 🔴 0.32 / 0.35 / -9.7%
tpch_q07/duckdb:vortex-file-compressed 23706195 / 23567502 / +0.6% 39540011 / 38379680 / +3.0% 0.60 / 0.61 / -2.4%
tpch_q08/duckdb:vortex-file-compressed 21806242 / 20899596 / +4.3% 36302944 / 35424741 / +2.5% 0.60 / 0.59 / +1.8%
tpch_q09/duckdb:vortex-file-compressed 21093249 / 21016262 / +0.4% 37356890 / 35312089 / +5.8% 0.56 / 0.60 / -5.1%
tpch_q10/duckdb:vortex-file-compressed 26919654 / 27356938 / -1.6% 41437599 / 40767440 / +1.6% 0.65 / 0.67 / -3.2%
tpch_q11/duckdb:vortex-file-compressed 7923381 / 7941835 / -0.2% 16006693 / 14407621 / +11.1% 🔴 0.50 / 0.55 / -10.2%
tpch_q12/duckdb:vortex-file-compressed 13837611 / 13846784 / -0.1% 26571196 / 24999388 / +6.3% 0.52 / 0.55 / -6.0%
tpch_q13/duckdb:vortex-file-compressed 23346718 / 23282642 / +0.3% 32109590 / 32289369 / -0.6% 0.73 / 0.72 / +0.8%
tpch_q14/duckdb:vortex-file-compressed 11397436 / 11632485 / -2.0% 24353166 / 22803078 / +6.8% 0.47 / 0.51 / -8.3%
tpch_q15/duckdb:vortex-file-compressed 8616172 / 8323853 / +3.5% 19862622 / 20059281 / -1.0% 0.43 / 0.41 / +4.5%
tpch_q16/duckdb:vortex-file-compressed 16399350 / 16528401 / -0.8% 23518693 / 23777428 / -1.1% 0.70 / 0.70 / +0.3%
tpch_q17/duckdb:vortex-file-compressed 11829358 / 11786634 / +0.4% 25134044 / 25464267 / -1.3% 0.47 / 0.46 / +1.7%
tpch_q18/duckdb:vortex-file-compressed 23942263 / 23965867 / -0.1% 33083197 / 33579943 / -1.5% 0.72 / 0.71 / +1.4%
tpch_q19/duckdb:vortex-file-compressed 10270137 / 10289408 / -0.2% 22178261 / 21063085 / +5.3% 0.46 / 0.49 / -5.2%
tpch_q20/duckdb:vortex-file-compressed 13826413 / 13719473 / +0.8% 27891902 / 27647948 / +0.9% 0.50 / 0.50 / -0.1%
tpch_q21/duckdb:vortex-file-compressed 36738423 / 36819296 / -0.2% 54937644 / 54144274 / +1.5% 0.67 / 0.68 / -1.7%
tpch_q22/duckdb:vortex-file-compressed 19042211 / 19077361 / -0.2% 29657329 / 27866293 / +6.4% 0.64 / 0.68 / -6.2%
duckdb / parquet / ns (1.000x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:parquet 48158777 / 48137470 / +0.0% 55679536 / 54739333 / +1.7% 0.86 / 0.88 / -1.6%
tpch_q02/duckdb:parquet 48627337 / 48995389 / -0.8% 56699895 / 55747395 / +1.7% 0.86 / 0.88 / -2.4%
tpch_q03/duckdb:parquet 60604088 / 60714197 / -0.2% 70203580 / 69094883 / +1.6% 0.86 / 0.88 / -1.8%
tpch_q04/duckdb:parquet 35004950 / 35145467 / -0.4% 44329831 / 45431191 / -2.4% 0.79 / 0.77 / +2.1%
tpch_q05/duckdb:parquet 67924002 / 67695743 / +0.3% 78074743 / 77753470 / +0.4% 0.87 / 0.87 / -0.1%
tpch_q06/duckdb:parquet 22063111 / 21995349 / +0.3% 27646052 / 27330155 / +1.2% 0.80 / 0.80 / -0.8%
tpch_q07/duckdb:parquet 64341836 / 64583247 / -0.4% 74595109 / 74223822 / +0.5% 0.86 / 0.87 / -0.9%
tpch_q08/duckdb:parquet 76060396 / 76374749 / -0.4% 88335631 / 86969226 / +1.6% 0.86 / 0.88 / -2.0%
tpch_q09/duckdb:parquet 108394943 / 108488747 / -0.1% 121279464 / 120209293 / +0.9% 0.89 / 0.90 / -1.0%
tpch_q10/duckdb:parquet 106364282 / 106747742 / -0.4% 117141417 / 118095944 / -0.8% 0.91 / 0.90 / +0.5%
tpch_q11/duckdb:parquet 29848953 / 29819836 / +0.1% 35451839 / 36212325 / -2.1% 0.84 / 0.82 / +2.2%
tpch_q12/duckdb:parquet 38021383 / 38032666 / -0.0% 45481848 / 44699831 / +1.7% 0.84 / 0.85 / -1.7%
tpch_q13/duckdb:parquet 175674479 / 175074624 / +0.3% 184087404 / 183059597 / +0.6% 0.95 / 0.96 / -0.2%
tpch_q14/duckdb:parquet 42866657 / 42809105 / +0.1% 51625106 / 51425075 / +0.4% 0.83 / 0.83 / -0.3%
tpch_q15/duckdb:parquet 32996768 / 33050488 / -0.2% 42159628 / 41410663 / +1.8% 0.78 / 0.80 / -1.9%
tpch_q16/duckdb:parquet 47988060 / 48141779 / -0.3% 53605651 / 53624496 / -0.0% 0.90 / 0.90 / -0.3%
tpch_q17/duckdb:parquet 48271954 / 48331948 / -0.1% 58764300 / 57681067 / +1.9% 0.82 / 0.84 / -2.0%
tpch_q18/duckdb:parquet 74469549 / 74944199 / -0.6% 82490423 / 81256471 / +1.5% 0.90 / 0.92 / -2.1%
tpch_q19/duckdb:parquet 48976412 / 47712928 / +2.6% 56211283 / 56921653 / -1.2% 0.87 / 0.84 / +3.9%
tpch_q20/duckdb:parquet 63947429 / 63888799 / +0.1% 74892235 / 73955104 / +1.3% 0.85 / 0.86 / -1.2%
tpch_q21/duckdb:parquet 107469735 / 107475083 / -0.0% 117407640 / 117129368 / +0.2% 0.92 / 0.92 / -0.2%
tpch_q22/duckdb:parquet 51151510 / 50916974 / +0.5% 60962358 / 59065604 / +3.2% 0.84 / 0.86 / -2.7%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=10 on NVME 📖

Commits: PR e843b514 vs base a59294e3
Verdict: No clear signal (low confidence)
Attributed Vortex impact: -0.3%
Engines: DataFusion No clear signal (-0.8%, low confidence) · DuckDB No clear signal (+0.1%, low confidence)
Vortex (geomean): hot 0.998x ➖ · cold 1.008x ➖
Parquet (geomean): hot 1.001x ➖ · cold 1.009x ➖
Shifts: Parquet (control) +0.1% · Median polish +0.2%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (0.991x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:vortex-file-compressed 90414208 / 91554008 / -1.2% 143710755 / 143333641 / +0.3% 0.63 / 0.64 / -1.5%
tpch_q02/datafusion:vortex-file-compressed 66970932 / 66863715 / +0.2% 98900012 / 103790004 / -4.7% 0.68 / 0.64 / +5.1%
tpch_q03/datafusion:vortex-file-compressed 66410694 / 66962785 / -0.8% 116966624 / 116377458 / +0.5% 0.57 / 0.58 / -1.3%
tpch_q04/datafusion:vortex-file-compressed 35964298 / 35610710 / +1.0% 72558784 / 72992887 / -0.6% 0.50 / 0.49 / +1.6%
tpch_q05/datafusion:vortex-file-compressed 121615075 / 120996931 / +0.5% 169195994 / 170863121 / -1.0% 0.72 / 0.71 / +1.5%
tpch_q06/datafusion:vortex-file-compressed 11240490 / 11770387 / -4.5% 65070444 / 56578665 / +15.0% 🔴 0.17 / 0.21 / -17.0%
tpch_q07/datafusion:vortex-file-compressed 135154504 / 137218777 / -1.5% 197706213 / 196598076 / +0.6% 0.68 / 0.70 / -2.1%
tpch_q08/datafusion:vortex-file-compressed 145920058 / 147884202 / -1.3% 219386976 / 210572589 / +4.2% 0.67 / 0.70 / -5.3%
tpch_q09/datafusion:vortex-file-compressed 183859538 / 186383331 / -1.4% 265133235 / 253411488 / +4.6% 0.69 / 0.74 / -5.7%
tpch_q10/datafusion:vortex-file-compressed 74748162 / 74199216 / +0.7% 139483277 / 137940013 / +1.1% 0.54 / 0.54 / -0.4%
tpch_q11/datafusion:vortex-file-compressed 44947050 / 45386912 / -1.0% 69071607 / 73364997 / -5.9% 0.65 / 0.62 / +5.2%
tpch_q12/datafusion:vortex-file-compressed 38021363 / 38500650 / -1.2% 79624842 / 81972778 / -2.9% 0.48 / 0.47 / +1.7%
tpch_q13/datafusion:vortex-file-compressed 42930529 / 43154299 / -0.5% 84462702 / 82729721 / +2.1% 0.51 / 0.52 / -2.6%
tpch_q14/datafusion:vortex-file-compressed 22153141 / 22778842 / -2.7% 87487869 / 89771289 / -2.5% 0.25 / 0.25 / -0.2%
tpch_q15/datafusion:vortex-file-compressed 34388550 / 35933488 / -4.3% 90145067 / 93559736 / -3.6% 0.38 / 0.38 / -0.7%
tpch_q16/datafusion:vortex-file-compressed 39792941 / 39947905 / -0.4% 69835854 / 69304049 / +0.8% 0.57 / 0.58 / -1.1%
tpch_q17/datafusion:vortex-file-compressed 177021028 / 178210920 / -0.7% 226810087 / 215744008 / +5.1% 0.78 / 0.83 / -5.5%
tpch_q18/datafusion:vortex-file-compressed 206276904 / 205808056 / +0.2% 273243635 / 273434832 / -0.1% 0.75 / 0.75 / +0.3%
tpch_q19/datafusion:vortex-file-compressed 35899356 / 35391419 / +1.4% 89313236 / 90040944 / -0.8% 0.40 / 0.39 / +2.3%
tpch_q20/datafusion:vortex-file-compressed 63381775 / 64232067 / -1.3% 122602377 / 118079102 / +3.8% 0.52 / 0.54 / -5.0%
tpch_q21/datafusion:vortex-file-compressed 183989983 / 184956196 / -0.5% 235324224 / 238696746 / -1.4% 0.78 / 0.77 / +0.9%
tpch_q22/datafusion:vortex-file-compressed 27777425 / 27657723 / +0.4% 58564403 / 53601430 / +9.3% 0.47 / 0.52 / -8.1%
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:parquet 88678701 / 88204353 / +0.5% 133367509 / 130088911 / +2.5% 0.66 / 0.68 / -1.9%
tpch_q02/datafusion:parquet 175552564 / 174726336 / +0.5% 202470419 / 204625784 / -1.1% 0.87 / 0.85 / +1.5%
tpch_q03/datafusion:parquet 137095733 / 136926488 / +0.1% 190441814 / 186492437 / +2.1% 0.72 / 0.73 / -2.0%
tpch_q04/datafusion:parquet 59551249 / 59059610 / +0.8% 96393635 / 90627947 / +6.4% 0.62 / 0.65 / -5.2%
tpch_q05/datafusion:parquet 169945713 / 170828936 / -0.5% 228265978 / 233350655 / -2.2% 0.74 / 0.73 / +1.7%
tpch_q06/datafusion:parquet 37359806 / 37023580 / +0.9% 80074195 / 79182885 / +1.1% 0.47 / 0.47 / -0.2%
tpch_q07/datafusion:parquet 218027763 / 218646397 / -0.3% 285380220 / 273468464 / +4.4% 0.76 / 0.80 / -4.4%
tpch_q08/datafusion:parquet 221114618 / 221064822 / +0.0% 301037587 / 289056660 / +4.1% 0.73 / 0.76 / -4.0%
tpch_q09/datafusion:parquet 314888602 / 314906664 / -0.0% 391877218 / 382686958 / +2.4% 0.80 / 0.82 / -2.4%
tpch_q10/datafusion:parquet 319640095 / 321799257 / -0.7% 386435559 / 387060543 / -0.2% 0.83 / 0.83 / -0.5%
tpch_q11/datafusion:parquet 126823486 / 126953939 / -0.1% 151015876 / 150534751 / +0.3% 0.84 / 0.84 / -0.4%
tpch_q12/datafusion:parquet 84223242 / 84500730 / -0.3% 127524024 / 124392326 / +2.5% 0.66 / 0.68 / -2.8%
tpch_q13/datafusion:parquet 216233158 / 216952945 / -0.3% 253549088 / 248474997 / +2.0% 0.85 / 0.87 / -2.3%
tpch_q14/datafusion:parquet 84645230 / 86851349 / -2.5% 203778770 / 196086278 / +3.9% 0.42 / 0.44 / -6.2%
tpch_q15/datafusion:parquet 108140479 / 106984016 / +1.1% 166739104 / 156205326 / +6.7% 0.65 / 0.68 / -5.3%
tpch_q16/datafusion:parquet 96998008 / 97797080 / -0.8% 120312468 / 122211019 / -1.6% 0.81 / 0.80 / +0.7%
tpch_q17/datafusion:parquet 213270707 / 212288946 / +0.5% 263916186 / 263160651 / +0.3% 0.81 / 0.81 / +0.2%
tpch_q18/datafusion:parquet 272860169 / 272868516 / -0.0% 309176836 / 309985509 / -0.3% 0.88 / 0.88 / +0.3%
tpch_q19/datafusion:parquet 107927887 / 108496774 / -0.5% 169921101 / 170805911 / -0.5% 0.64 / 0.64 / -0.0%
tpch_q20/datafusion:parquet 188947135 / 189120972 / -0.1% 266785008 / 262204361 / +1.7% 0.71 / 0.72 / -1.8%
tpch_q21/datafusion:parquet 247839842 / 248691727 / -0.3% 312024391 / 314157219 / -0.7% 0.79 / 0.79 / +0.3%
tpch_q22/datafusion:parquet 153591505 / 153846074 / -0.2% 179263984 / 180111894 / -0.5% 0.86 / 0.85 / +0.3%
duckdb / vortex-file-compressed / ns (1.005x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:vortex-file-compressed 33078604 / 33031566 / +0.1% 72842167 / 74102925 / -1.7% 0.45 / 0.45 / +1.9%
tpch_q02/duckdb:vortex-file-compressed 31212697 / 31080180 / +0.4% 43809363 / 44510767 / -1.6% 0.71 / 0.70 / +2.0%
tpch_q03/duckdb:vortex-file-compressed 52897903 / 52893273 / +0.0% 106028753 / 103094425 / +2.8% 0.50 / 0.51 / -2.8%
tpch_q04/duckdb:vortex-file-compressed 51872245 / 51610126 / +0.5% 89238102 / 89607068 / -0.4% 0.58 / 0.58 / +0.9%
tpch_q05/duckdb:vortex-file-compressed 68608616 / 67646100 / +1.4% 107000729 / 109224196 / -2.0% 0.64 / 0.62 / +3.5%
tpch_q06/duckdb:vortex-file-compressed 14419106 / 14391316 / +0.2% 53407473 / 53596583 / -0.4% 0.27 / 0.27 / +0.5%
tpch_q07/duckdb:vortex-file-compressed 55306985 / 54217905 / +2.0% 109735030 / 109846383 / -0.1% 0.50 / 0.49 / +2.1%
tpch_q08/duckdb:vortex-file-compressed 88825699 / 86981848 / +2.1% 130494844 / 132222649 / -1.3% 0.68 / 0.66 / +3.5%
tpch_q09/duckdb:vortex-file-compressed 97401335 / 96740613 / +0.7% 163674682 / 152875231 / +7.1% 0.60 / 0.63 / -6.0%
tpch_q10/duckdb:vortex-file-compressed 87413347 / 87725847 / -0.4% 144252532 / 140730500 / +2.5% 0.61 / 0.62 / -2.8%
tpch_q11/duckdb:vortex-file-compressed 14228712 / 13970042 / +1.9% 25438729 / 25247604 / +0.8% 0.56 / 0.55 / +1.1%
tpch_q12/duckdb:vortex-file-compressed 42909978 / 42817374 / +0.2% 84915234 / 83399590 / +1.8% 0.51 / 0.51 / -1.6%
tpch_q13/duckdb:vortex-file-compressed 67582455 / 67167074 / +0.6% 89339746 / 86520857 / +3.3% 0.76 / 0.78 / -2.6%
tpch_q14/duckdb:vortex-file-compressed 27988897 / 28247358 / -0.9% 71135286 / 72779837 / -2.3% 0.39 / 0.39 / +1.4%
tpch_q15/duckdb:vortex-file-compressed 24275572 / 24438956 / -0.7% 66432925 / 64063675 / +3.7% 0.37 / 0.38 / -4.2%
tpch_q16/duckdb:vortex-file-compressed 50675815 / 50309249 / +0.7% 57726366 / 58370993 / -1.1% 0.88 / 0.86 / +1.9%
tpch_q17/duckdb:vortex-file-compressed 34549094 / 33839919 / +2.1% 64798160 / 65524114 / -1.1% 0.53 / 0.52 / +3.2%
tpch_q18/duckdb:vortex-file-compressed 98161084 / 97366631 / +0.8% 117946875 / 120413006 / -2.0% 0.83 / 0.81 / +2.9%
tpch_q19/duckdb:vortex-file-compressed 24595099 / 24663760 / -0.3% 74611195 / 72791988 / +2.5% 0.33 / 0.34 / -2.7%
tpch_q20/duckdb:vortex-file-compressed 39084776 / 38852329 / +0.6% 92075872 / 91462815 / +0.7% 0.42 / 0.42 / -0.1%
tpch_q21/duckdb:vortex-file-compressed 94208094 / 95649542 / -1.5% 147681552 / 143886887 / +2.6% 0.64 / 0.66 / -4.0%
tpch_q22/duckdb:vortex-file-compressed 34963070 / 34886756 / +0.2% 52815731 / 51482041 / +2.6% 0.66 / 0.68 / -2.3%
duckdb / parquet / ns (1.004x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:parquet 68818055 / 67925061 / +1.3% 97944811 / 90570817 / +8.1% 0.70 / 0.75 / -6.3%
tpch_q02/duckdb:parquet 87661265 / 87743811 / -0.1% 99663099 / 100504820 / -0.8% 0.88 / 0.87 / +0.7%
tpch_q03/duckdb:parquet 110860979 / 110940424 / -0.1% 147738355 / 148404661 / -0.4% 0.75 / 0.75 / +0.4%
tpch_q04/duckdb:parquet 77364385 / 77001363 / +0.5% 101566180 / 99864577 / +1.7% 0.76 / 0.77 / -1.2%
tpch_q05/duckdb:parquet 124340925 / 125025010 / -0.5% 158158104 / 160089903 / -1.2% 0.79 / 0.78 / +0.7%
tpch_q06/duckdb:parquet 35936137 / 35651214 / +0.8% 66591461 / 64451853 / +3.3% 0.54 / 0.55 / -2.4%
tpch_q07/duckdb:parquet 117473922 / 117921650 / -0.4% 155683754 / 157683609 / -1.3% 0.75 / 0.75 / +0.9%
tpch_q08/duckdb:parquet 149075850 / 149738329 / -0.4% 196081191 / 197052531 / -0.5% 0.76 / 0.76 / +0.1%
tpch_q09/duckdb:parquet 238251286 / 237374867 / +0.4% 285890611 / 281479592 / +1.6% 0.83 / 0.84 / -1.2%
tpch_q10/duckdb:parquet 317355200 / 318219759 / -0.3% 342876529 / 347022820 / -1.2% 0.93 / 0.92 / +0.9%
tpch_q11/duckdb:parquet 43997994 / 43892770 / +0.2% 51700444 / 51563259 / +0.3% 0.85 / 0.85 / -0.0%
tpch_q12/duckdb:parquet 72290235 / 72475242 / -0.3% 97130652 / 93025838 / +4.4% 0.74 / 0.78 / -4.5%
tpch_q13/duckdb:parquet 295382811 / 294289313 / +0.4% 310932039 / 309495459 / +0.5% 0.95 / 0.95 / -0.1%
tpch_q14/duckdb:parquet 104281879 / 103609582 / +0.6% 146480839 / 145226052 / +0.9% 0.71 / 0.71 / -0.2%
tpch_q15/duckdb:parquet 58512030 / 57362861 / +2.0% 87328317 / 88728426 / -1.6% 0.67 / 0.65 / +3.6%
tpch_q16/duckdb:parquet 102727824 / 101230938 / +1.5% 109921258 / 109731633 / +0.2% 0.93 / 0.92 / +1.3%
tpch_q17/duckdb:parquet 81856244 / 82873725 / -1.2% 120566241 / 120151745 / +0.3% 0.68 / 0.69 / -1.6%
tpch_q18/duckdb:parquet 160432557 / 158751085 / +1.1% 174660678 / 176303412 / -0.9% 0.92 / 0.90 / +2.0%
tpch_q19/duckdb:parquet 99969469 / 98304267 / +1.7% 132556849 / 144086616 / -8.0% 0.75 / 0.68 / +10.5%
tpch_q20/duckdb:parquet 148034985 / 147407915 / +0.4% 192593498 / 191342693 / +0.7% 0.77 / 0.77 / -0.2%
tpch_q21/duckdb:parquet 255625993 / 254804407 / +0.3% 282720305 / 281731874 / +0.4% 0.90 / 0.90 / -0.0%
tpch_q22/duckdb:parquet 169834577 / 169194420 / +0.4% 184464378 / 183949064 / +0.3% 0.92 / 0.92 / +0.1%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-DS SF=1 on NVME 📖

Commits: PR e843b514 vs base 967e2f59
Verdict: No clear signal (low confidence)
Attributed Vortex impact: -0.1%
Engines: DataFusion No clear signal (-0.4%, low confidence) · DuckDB No clear signal (+0.1%, low confidence)
Vortex (geomean): hot 1.001x ➖ · cold 1.023x ➖
Parquet (geomean): hot 1.002x ➖ · cold 1.009x ➖
Shifts: Parquet (control) +0.2% · Median polish +0.4%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (0.997x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpcds_q01/datafusion:vortex-file-compressed 24954770 / 24765286 / +0.8% 41818138 / 40825124 / +2.4% 0.60 / 0.61 / -1.6%
tpcds_q02/datafusion:vortex-file-compressed 46638536 / 47632115 / -2.1% 65220503 / 62778191 / +3.9% 0.72 / 0.76 / -5.8%
tpcds_q03/datafusion:vortex-file-compressed 11605164 / 12040078 / -3.6% 27302652 / 25655358 / +6.4% 0.43 / 0.47 / -9.4%
tpcds_q04/datafusion:vortex-file-compressed 124835855 / 124763541 / +0.1% 153967050 / 151389179 / +1.7% 0.81 / 0.82 / -1.6%
tpcds_q05/datafusion:vortex-file-compressed 58919778 / 58959356 / -0.1% 79248062 / 80702462 / -1.8% 0.74 / 0.73 / +1.8%
tpcds_q06/datafusion:vortex-file-compressed 23116822 / 22827728 / +1.3% 41625272 / 41748679 / -0.3% 0.56 / 0.55 / +1.6%
tpcds_q07/datafusion:vortex-file-compressed 32373047 / 31535618 / +2.7% 54806057 / 51314414 / +6.8% 0.59 / 0.61 / -3.9%
tpcds_q08/datafusion:vortex-file-compressed 24802556 / 24730550 / +0.3% 41563558 / 39753423 / +4.6% 0.60 / 0.62 / -4.1%
tpcds_q09/datafusion:vortex-file-compressed 17394900 / 17694412 / -1.7% 32537597 / 30991096 / +5.0% 0.53 / 0.57 / -6.4%
tpcds_q10/datafusion:vortex-file-compressed 27330858 / 27292028 / +0.1% 48419258 / 46210844 / +4.8% 0.56 / 0.59 / -4.4%
tpcds_q11/datafusion:vortex-file-compressed 64551406 / 63601232 / +1.5% 90866107 / 90270202 / +0.7% 0.71 / 0.70 / +0.8%
tpcds_q12/datafusion:vortex-file-compressed 16821530 / 16529726 / +1.8% 33363367 / 32736591 / +1.9% 0.50 / 0.50 / -0.1%
tpcds_q13/datafusion:vortex-file-compressed 31592848 / 32366914 / -2.4% 50484857 / 50771302 / -0.6% 0.63 / 0.64 / -1.8%
tpcds_q14/datafusion:vortex-file-compressed 499033110 / 494914244 / +0.8% 551311320 / 546290108 / +0.9% 0.91 / 0.91 / -0.1%
tpcds_q15/datafusion:vortex-file-compressed 15688702 / 15427440 / +1.7% 34507113 / 31744777 / +8.7% 0.45 / 0.49 / -6.4%
tpcds_q16/datafusion:vortex-file-compressed 19833878 / 19895420 / -0.3% 37507754 / 35095586 / +6.9% 0.53 / 0.57 / -6.7%
tpcds_q17/datafusion:vortex-file-compressed 55474326 / 59599600 / -6.9% 74912689 / 80805734 / -7.3% 0.74 / 0.74 / +0.4%
tpcds_q18/datafusion:vortex-file-compressed 67741844 / 68296202 / -0.8% 89182564 / 88833715 / +0.4% 0.76 / 0.77 / -1.2%
tpcds_q19/datafusion:vortex-file-compressed 17362072 / 17059943 / +1.8% 36121676 / 35096402 / +2.9% 0.48 / 0.49 / -1.1%
tpcds_q20/datafusion:vortex-file-compressed 17911724 / 18137578 / -1.2% 34969736 / 33941674 / +3.0% 0.51 / 0.53 / -4.1%
tpcds_q21/datafusion:vortex-file-compressed 16937193 / 16390645 / +3.3% 37825608 / 36577279 / +3.4% 0.45 / 0.45 / -0.1%
tpcds_q22/datafusion:vortex-file-compressed 57774869 / 58321778 / -0.9% 80149000 / 80348051 / -0.2% 0.72 / 0.73 / -0.7%
tpcds_q23/datafusion:vortex-file-compressed 70483310 / 70968229 / -0.7% 97955054 / 96219723 / +1.8% 0.72 / 0.74 / -2.4%
tpcds_q24/datafusion:vortex-file-compressed 67563614 / 68077838 / -0.8% 89989511 / 91112978 / -1.2% 0.75 / 0.75 / +0.5%
tpcds_q25/datafusion:vortex-file-compressed 50806346 / 53155032 / -4.4% 78797951 / 67488520 / +16.8% 🔴 0.64 / 0.79 / -18.1%
tpcds_q26/datafusion:vortex-file-compressed 30180253 / 30745753 / -1.8% 50203166 / 48987605 / +2.5% 0.60 / 0.63 / -4.2%
tpcds_q27/datafusion:vortex-file-compressed 60735726 / 63101618 / -3.7% 83481034 / 84533326 / -1.2% 0.73 / 0.75 / -2.5%
tpcds_q28/datafusion:vortex-file-compressed 18078586 / 17864450 / +1.2% 32610220 / 33425488 / -2.4% 0.55 / 0.53 / +3.7%
tpcds_q29/datafusion:vortex-file-compressed 58916256 / 58927133 / -0.0% 83158582 / 81770669 / +1.7% 0.71 / 0.72 / -1.7%
tpcds_q30/datafusion:vortex-file-compressed 26569312 / 27389422 / -3.0% 45534690 / 42670860 / +6.7% 0.58 / 0.64 / -9.1%
tpcds_q31/datafusion:vortex-file-compressed 58632932 / 58614714 / +0.0% 82450615 / 80843671 / +2.0% 0.71 / 0.73 / -1.9%
tpcds_q32/datafusion:vortex-file-compressed 13885566 / 13670157 / +1.6% 30326085 / 28270284 / +7.3% 0.46 / 0.48 / -5.3%
tpcds_q33/datafusion:vortex-file-compressed 27448867 / 27192720 / +0.9% 48518944 / 46596888 / +4.1% 0.57 / 0.58 / -3.1%
tpcds_q34/datafusion:vortex-file-compressed 17158296 / 17348670 / -1.1% 34509688 / 34848845 / -1.0% 0.50 / 0.50 / -0.1%
tpcds_q35/datafusion:vortex-file-compressed 34115474 / 34062130 / +0.2% 56234118 / 54414996 / +3.3% 0.61 / 0.63 / -3.1%
tpcds_q36/datafusion:vortex-file-compressed 48008060 / 47827877 / +0.4% 70902180 / 68446358 / +3.6% 0.68 / 0.70 / -3.1%
tpcds_q37/datafusion:vortex-file-compressed 12588922 / 13024588 / -3.3% 31353769 / 30777837 / +1.9% 0.40 / 0.42 / -5.1%
tpcds_q38/datafusion:vortex-file-compressed 29554282 / 29912662 / -1.2% 49751528 / 48286117 / +3.0% 0.59 / 0.62 / -4.1%
tpcds_q39/datafusion:vortex-file-compressed 60844932 / 62095772 / -2.0% 84919644 / 86203810 / -1.5% 0.72 / 0.72 / -0.5%
tpcds_q40/datafusion:vortex-file-compressed 24244742 / 24096222 / +0.6% 41995092 / 42104615 / -0.3% 0.58 / 0.57 / +0.9%
tpcds_q41/datafusion:vortex-file-compressed 17386906 / 17669398 / -1.6% 31025314 / 30987750 / +0.1% 0.56 / 0.57 / -1.7%
tpcds_q42/datafusion:vortex-file-compressed 11416328 / 11286578 / +1.1% 26036349 / 25025573 / +4.0% 0.44 / 0.45 / -2.8%
tpcds_q43/datafusion:vortex-file-compressed 12921544 / 12800876 / +0.9% 28446954 / 27602665 / +3.1% 0.45 / 0.46 / -2.1%
tpcds_q44/datafusion:vortex-file-compressed 25443000 / 25934996 / -1.9% 46805767 / 46062387 / +1.6% 0.54 / 0.56 / -3.5%
tpcds_q45/datafusion:vortex-file-compressed 18160572 / 18161600 / -0.0% 36633773 / 36344061 / +0.8% 0.50 / 0.50 / -0.8%
tpcds_q46/datafusion:vortex-file-compressed 23183640 / 22746856 / +1.9% 46769019 / 44906032 / +4.1% 0.50 / 0.51 / -2.1%
tpcds_q47/datafusion:vortex-file-compressed 77918528 / 78535050 / -0.8% 105722416 / 104083181 / +1.6% 0.74 / 0.75 / -2.3%
tpcds_q48/datafusion:vortex-file-compressed 29405223 / 29606816 / -0.7% 48402824 / 45891016 / +5.5% 0.61 / 0.65 / -5.8%
tpcds_q49/datafusion:vortex-file-compressed 57122986 / 56842230 / +0.5% 79627537 / 78102635 / +2.0% 0.72 / 0.73 / -1.4%
tpcds_q50/datafusion:vortex-file-compressed 32719814 / 32173058 / +1.7% 52294992 / 51184664 / +2.2% 0.63 / 0.63 / -0.5%
tpcds_q51/datafusion:vortex-file-compressed 68175783 / 67305988 / +1.3% 89125608 / 86778009 / +2.7% 0.76 / 0.78 / -1.4%
tpcds_q52/datafusion:vortex-file-compressed 11683012 / 11792805 / -0.9% 26272044 / 26832332 / -2.1% 0.44 / 0.44 / +1.2%
tpcds_q53/datafusion:vortex-file-compressed 17681118 / 17537298 / +0.8% 37792867 / 36541216 / +3.4% 0.47 / 0.48 / -2.5%
tpcds_q54/datafusion:vortex-file-compressed 33123744 / 33194521 / -0.2% 55822287 / 53668210 / +4.0% 0.59 / 0.62 / -4.1%
tpcds_q55/datafusion:vortex-file-compressed 11387161 / 11325256 / +0.5% 25777331 / 25321428 / +1.8% 0.44 / 0.45 / -1.2%
tpcds_q56/datafusion:vortex-file-compressed 26291836 / 26466136 / -0.7% 46464110 / 46246220 / +0.5% 0.57 / 0.57 / -1.1%
tpcds_q57/datafusion:vortex-file-compressed 77531103 / 77349734 / +0.2% 101590818 / 102207780 / -0.6% 0.76 / 0.76 / +0.8%
tpcds_q58/datafusion:vortex-file-compressed 40650924 / 40476795 / +0.4% 65888187 / 64465267 / +2.2% 0.62 / 0.63 / -1.7%
tpcds_q59/datafusion:vortex-file-compressed 30546046 / 31258431 / -2.3% 52060113 / 50631776 / +2.8% 0.59 / 0.62 / -5.0%
tpcds_q60/datafusion:vortex-file-compressed 25960132 / 26680270 / -2.7% 45478666 / 45827969 / -0.8% 0.57 / 0.58 / -2.0%
tpcds_q61/datafusion:vortex-file-compressed 22629544 / 22952304 / -1.4% 43931460 / 42973962 / +2.2% 0.52 / 0.53 / -3.6%
tpcds_q62/datafusion:vortex-file-compressed 18048623 / 18255630 / -1.1% 33563031 / 32478773 / +3.3% 0.54 / 0.56 / -4.3%
tpcds_q63/datafusion:vortex-file-compressed 18207432 / 17731795 / +2.7% 38665339 / 37129981 / +4.1% 0.47 / 0.48 / -1.4%
tpcds_q64/datafusion:vortex-file-compressed 223514171 / 223628596 / -0.1% 257318633 / 261821758 / -1.7% 0.87 / 0.85 / +1.7%
tpcds_q65/datafusion:vortex-file-compressed 75070096 / 75324954 / -0.3% 96242546 / 93701579 / +2.7% 0.78 / 0.80 / -3.0%
tpcds_q66/datafusion:vortex-file-compressed 52925538 / 52401064 / +1.0% 70667379 / 70379700 / +0.4% 0.75 / 0.74 / +0.6%
tpcds_q67/datafusion:vortex-file-compressed 58372534 / 58063664 / +0.5% 86937633 / 85134055 / +2.1% 0.67 / 0.68 / -1.6%
tpcds_q68/datafusion:vortex-file-compressed 22372928 / 22085051 / +1.3% 46572374 / 45764202 / +1.8% 0.48 / 0.48 / -0.5%
tpcds_q69/datafusion:vortex-file-compressed 27857558 / 28201996 / -1.2% 47193629 / 46312790 / +1.9% 0.59 / 0.61 / -3.1%
tpcds_q70/datafusion:vortex-file-compressed 71159970 / 70557484 / +0.9% 90246247 / 88663508 / +1.8% 0.79 / 0.80 / -0.9%
tpcds_q71/datafusion:vortex-file-compressed 18133656 / 18844756 / -3.8% 36346310 / 35940268 / +1.1% 0.50 / 0.52 / -4.8%
tpcds_q72/datafusion:vortex-file-compressed 354367878 / 352630149 / +0.5% 411694492 / 402964821 / +2.2% 0.86 / 0.88 / -1.6%
tpcds_q73/datafusion:vortex-file-compressed 16217606 / 16736020 / -3.1% 33614068 / 34868673 / -3.6% 0.48 / 0.48 / +0.5%
tpcds_q74/datafusion:vortex-file-compressed 46008038 / 45967482 / +0.1% 69823577 / 70192707 / -0.5% 0.66 / 0.65 / +0.6%
tpcds_q75/datafusion:vortex-file-compressed 139061671 / 136327010 / +2.0% 162507618 / 163186206 / -0.4% 0.86 / 0.84 / +2.4%
tpcds_q76/datafusion:vortex-file-compressed 26405156 / 26324230 / +0.3% 44104189 / 43777449 / +0.7% 0.60 / 0.60 / -0.4%
tpcds_q77/datafusion:vortex-file-compressed 45987892 / 45565959 / +0.9% 66601375 / 65616056 / +1.5% 0.69 / 0.69 / -0.6%
tpcds_q78/datafusion:vortex-file-compressed 68278264 / 69577331 / -1.9% 96500531 / 94866066 / +1.7% 0.71 / 0.73 / -3.5%
tpcds_q79/datafusion:vortex-file-compressed 19653684 / 19611042 / +0.2% 42191669 / 38993699 / +8.2% 0.47 / 0.50 / -7.4%
tpcds_q80/datafusion:vortex-file-compressed 74384400 / 74999212 / -0.8% 104337012 / 102384363 / +1.9% 0.71 / 0.73 / -2.7%
tpcds_q81/datafusion:vortex-file-compressed 27205961 / 27640939 / -1.6% 44399648 / 44011481 / +0.9% 0.61 / 0.63 / -2.4%
tpcds_q82/datafusion:vortex-file-compressed 12555668 / 13453336 / -6.7% 32978598 / 29227442 / +12.8% 🔴 0.38 / 0.46 / -17.3%
tpcds_q83/datafusion:vortex-file-compressed 35592045 / 35834170 / -0.7% 53227171 / 54347155 / -2.1% 0.67 / 0.66 / +1.4%
tpcds_q84/datafusion:vortex-file-compressed 12277444 / 12267092 / +0.1% 24581790 / 25221336 / -2.5% 0.50 / 0.49 / +2.7%
tpcds_q85/datafusion:vortex-file-compressed 57702736 / 58318192 / -1.1% 81462348 / 79877776 / +2.0% 0.71 / 0.73 / -3.0%
tpcds_q86/datafusion:vortex-file-compressed 16512979 / 16637786 / -0.8% 33440758 / 31665993 / +5.6% 0.49 / 0.53 / -6.0%
tpcds_q87/datafusion:vortex-file-compressed 30516688 / 29888216 / +2.1% 49951741 / 48189285 / +3.7% 0.61 / 0.62 / -1.5%
tpcds_q88/datafusion:vortex-file-compressed 31683842 / 31577401 / +0.3% 64013922 / 59348594 / +7.9% 0.49 / 0.53 / -7.0%
tpcds_q89/datafusion:vortex-file-compressed 20857192 / 20511202 / +1.7% 40105774 / 38207389 / +5.0% 0.52 / 0.54 / -3.1%
tpcds_q90/datafusion:vortex-file-compressed 10439692 / 10504856 / -0.6% 25068818 / 23682825 / +5.9% 0.42 / 0.44 / -6.1%
tpcds_q91/datafusion:vortex-file-compressed 15756770 / 15706330 / +0.3% 34265562 / 32699695 / +4.8% 0.46 / 0.48 / -4.3%
tpcds_q92/datafusion:vortex-file-compressed 13507150 / 13684255 / -1.3% 28959506 / 27238562 / +6.3% 0.47 / 0.50 / -7.2%
tpcds_q93/datafusion:vortex-file-compressed 22264592 / 21999783 / +1.2% 43336301 / 39719161 / +9.1% 0.51 / 0.55 / -7.2%
tpcds_q94/datafusion:vortex-file-compressed 19027554 / 19580596 / -2.8% 34799411 / 33899366 / +2.7% 0.55 / 0.58 / -5.3%
tpcds_q95/datafusion:vortex-file-compressed 44607658 / 45080774 / -1.0% 63652245 / 62573696 / +1.7% 0.70 / 0.72 / -2.7%
tpcds_q96/datafusion:vortex-file-compressed 8474152 / 8333268 / +1.7% 21955117 / 21443442 / +2.4% 0.39 / 0.39 / -0.7%
tpcds_q97/datafusion:vortex-file-compressed 21437870 / 21061622 / +1.8% 39880355 / 40025965 / -0.4% 0.54 / 0.53 / +2.2%
tpcds_q98/datafusion:vortex-file-compressed 17127763 / 16844690 / +1.7% 37469285 / 35523598 / +5.5% 0.46 / 0.47 / -3.6%
tpcds_q99/datafusion:vortex-file-compressed 21005863 / 20762023 / +1.2% 36217180 / 34364218 / +5.4% 0.58 / 0.60 / -4.0%
datafusion / parquet / ns (1.001x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpcds_q01/datafusion:parquet 41438732 / 41237674 / +0.5% 58203713 / 61047508 / -4.7% 0.71 / 0.68 / +5.4%
tpcds_q02/datafusion:parquet 54974984 / 54683742 / +0.5% 70950703 / 71253627 / -0.4% 0.77 / 0.77 / +1.0%
tpcds_q03/datafusion:parquet 19228965 / 19232764 / -0.0% 33569172 / 29635415 / +13.3% 🔴 0.57 / 0.65 / -11.7%
tpcds_q04/datafusion:parquet 181418170 / 181216574 / +0.1% 207030959 / 205630668 / +0.7% 0.88 / 0.88 / -0.6%
tpcds_q05/datafusion:parquet 67039342 / 68804129 / -2.6% 92770059 / 91037707 / +1.9% 0.72 / 0.76 / -4.4%
tpcds_q06/datafusion:parquet 33687678 / 33028204 / +2.0% 45451533 / 46815413 / -2.9% 0.74 / 0.71 / +5.1%
tpcds_q07/datafusion:parquet 47365134 / 46974674 / +0.8% 65571280 / 66911046 / -2.0% 0.72 / 0.70 / +2.9%
tpcds_q08/datafusion:parquet 31139813 / 31174152 / -0.1% 45277138 / 45410028 / -0.3% 0.69 / 0.69 / +0.2%
tpcds_q09/datafusion:parquet 33340488 / 34168634 / -2.4% 37865645 / 44484745 / -14.9% 🟢 0.88 / 0.77 / +14.6%
tpcds_q10/datafusion:parquet 43824448 / 45112421 / -2.9% 60284834 / 57177631 / +5.4% 0.73 / 0.79 / -7.9%
tpcds_q11/datafusion:parquet 98695406 / 98752582 / -0.1% 117594561 / 120786339 / -2.6% 0.84 / 0.82 / +2.7%
tpcds_q12/datafusion:parquet 24072740 / 23985924 / +0.4% 35217233 / 35397978 / -0.5% 0.68 / 0.68 / +0.9%
tpcds_q13/datafusion:parquet 46653272 / 46839674 / -0.4% 64307586 / 66485215 / -3.3% 0.73 / 0.70 / +3.0%
tpcds_q14/datafusion:parquet 540105205 / 536512640 / +0.7% 592903849 / 587702283 / +0.9% 0.91 / 0.91 / -0.2%
tpcds_q15/datafusion:parquet 24280432 / 23594156 / +2.9% 38991380 / 38620929 / +1.0% 0.62 / 0.61 / +1.9%
tpcds_q16/datafusion:parquet 37038507 / 37035918 / +0.0% 53522073 / 52241859 / +2.5% 0.69 / 0.71 / -2.4%
tpcds_q17/datafusion:parquet 73876035 / 73740780 / +0.2% 99602324 / 95528016 / +4.3% 0.74 / 0.77 / -3.9%
tpcds_q18/datafusion:parquet 65806952 / 68419783 / -3.8% 85384141 / 84698704 / +0.8% 0.77 / 0.81 / -4.6%
tpcds_q19/datafusion:parquet 29920523 / 29567482 / +1.2% 44064071 / 43278686 / +1.8% 0.68 / 0.68 / -0.6%
tpcds_q20/datafusion:parquet 25785500 / 25945232 / -0.6% 44820153 / 39146651 / +14.5% 🔴 0.58 / 0.66 / -13.2%
tpcds_q21/datafusion:parquet 20463320 / 20584002 / -0.6% 32477404 / 32047115 / +1.3% 0.63 / 0.64 / -1.9%
tpcds_q22/datafusion:parquet 77457674 / 77279992 / +0.2% 88870764 / 88963446 / -0.1% 0.87 / 0.87 / +0.3%
tpcds_q23/datafusion:parquet 93325574 / 93307484 / +0.0% 116032427 / 116037018 / -0.0% 0.80 / 0.80 / +0.0%
tpcds_q24/datafusion:parquet 92507590 / 91648664 / +0.9% 116184312 / 116895366 / -0.6% 0.80 / 0.78 / +1.6%
tpcds_q25/datafusion:parquet 82626602 / 81363052 / +1.6% 103967329 / 98740077 / +5.3% 0.79 / 0.82 / -3.6%
tpcds_q26/datafusion:parquet 42934490 / 43157762 / -0.5% 60384917 / 57088043 / +5.8% 0.71 / 0.76 / -5.9%
tpcds_q27/datafusion:parquet 76900810 / 78277096 / -1.8% 99251591 / 97566435 / +1.7% 0.77 / 0.80 / -3.4%
tpcds_q28/datafusion:parquet 28799660 / 28642444 / +0.5% 43520519 / 41665779 / +4.5% 0.66 / 0.69 / -3.7%
tpcds_q29/datafusion:parquet 76066274 / 75772818 / +0.4% 96369943 / 96034981 / +0.3% 0.79 / 0.79 / +0.0%
tpcds_q30/datafusion:parquet 45772512 / 46667241 / -1.9% 58335624 / 57576198 / +1.3% 0.78 / 0.81 / -3.2%
tpcds_q31/datafusion:parquet 80649090 / 82776198 / -2.6% 99002653 / 99391007 / -0.4% 0.81 / 0.83 / -2.2%
tpcds_q32/datafusion:parquet 26791814 / 26711960 / +0.3% 43622408 / 40945733 / +6.5% 0.61 / 0.65 / -5.9%
tpcds_q33/datafusion:parquet 37256746 / 37390050 / -0.4% 53544160 / 53737761 / -0.4% 0.70 / 0.70 / +0.0%
tpcds_q34/datafusion:parquet 24545276 / 24165604 / +1.6% 37322773 / 36730319 / +1.6% 0.66 / 0.66 / -0.0%
tpcds_q35/datafusion:parquet 51632181 / 51476142 / +0.3% 64952715 / 61838723 / +5.0% 0.79 / 0.83 / -4.5%
tpcds_q36/datafusion:parquet 53351980 / 52379374 / +1.9% 72357579 / 70307770 / +2.9% 0.74 / 0.75 / -1.0%
tpcds_q37/datafusion:parquet 21131120 / 21267638 / -0.6% 33234655 / 32835003 / +1.2% 0.64 / 0.65 / -1.8%
tpcds_q38/datafusion:parquet 45262165 / 45012703 / +0.6% 60382201 / 61377978 / -1.6% 0.75 / 0.73 / +2.2%
tpcds_q39/datafusion:parquet 68349644 / 68519072 / -0.2% 84248153 / 82894307 / +1.6% 0.81 / 0.83 / -1.9%
tpcds_q40/datafusion:parquet 29832088 / 31142360 / -4.2% 49332666 / 48776440 / +1.1% 0.60 / 0.64 / -5.3%
tpcds_q41/datafusion:parquet 19959653 / 19877606 / +0.4% 31401194 / 31809658 / -1.3% 0.64 / 0.62 / +1.7%
tpcds_q42/datafusion:parquet 18382035 / 18375912 / +0.0% 31128894 / 30144584 / +3.3% 0.59 / 0.61 / -3.1%
tpcds_q43/datafusion:parquet 19335814 / 19689218 / -1.8% 32010334 / 32421935 / -1.3% 0.60 / 0.61 / -0.5%
tpcds_q44/datafusion:parquet 35478094 / 36352672 / -2.4% 52145416 / 51584336 / +1.1% 0.68 / 0.70 / -3.5%
tpcds_q45/datafusion:parquet 25927601 / 27914660 / -7.1% 41197511 / 41842907 / -1.5% 0.63 / 0.67 / -5.7%
tpcds_q46/datafusion:parquet 29519196 / 30118244 / -2.0% 46554894 / 45540435 / +2.2% 0.63 / 0.66 / -4.1%
tpcds_q47/datafusion:parquet 98582732 / 97984259 / +0.6% 119454305 / 120914670 / -1.2% 0.83 / 0.81 / +1.8%
tpcds_q48/datafusion:parquet 42573164 / 41389094 / +2.9% 58441196 / 59160672 / -1.2% 0.73 / 0.70 / +4.1%
tpcds_q49/datafusion:parquet 72494237 / 71845015 / +0.9% 95288137 / 95553020 / -0.3% 0.76 / 0.75 / +1.2%
tpcds_q50/datafusion:parquet 48094663 / 48801714 / -1.4% 68116008 / 67248170 / +1.3% 0.71 / 0.73 / -2.7%
tpcds_q51/datafusion:parquet 75464771 / 76400302 / -1.2% 96039318 / 95095329 / +1.0% 0.79 / 0.80 / -2.2%
tpcds_q52/datafusion:parquet 18841240 / 18905687 / -0.3% 32313548 / 30401187 / +6.3% 0.58 / 0.62 / -6.2%
tpcds_q53/datafusion:parquet 23509542 / 22784340 / +3.2% 38673136 / 37423006 / +3.3% 0.61 / 0.61 / -0.2%
tpcds_q54/datafusion:parquet 53188796 / 52214500 / +1.9% 66947123 / 63785965 / +5.0% 0.79 / 0.82 / -2.9%
tpcds_q55/datafusion:parquet 18614015 / 18506343 / +0.6% 30975739 / 28901473 / +7.2% 0.60 / 0.64 / -6.2%
tpcds_q56/datafusion:parquet 41070457 / 40666124 / +1.0% 55238982 / 54307184 / +1.7% 0.74 / 0.75 / -0.7%
tpcds_q57/datafusion:parquet 102295910 / 101983490 / +0.3% 122992865 / 113851886 / +8.0% 0.83 / 0.90 / -7.1%
tpcds_q58/datafusion:parquet 66038074 / 64951072 / +1.7% 83216606 / 83772691 / -0.7% 0.79 / 0.78 / +2.4%
tpcds_q59/datafusion:parquet 48708894 / 48725940 / -0.0% 65836503 / 65551177 / +0.4% 0.74 / 0.74 / -0.5%
tpcds_q60/datafusion:parquet 41728319 / 40824857 / +2.2% 54149017 / 54848493 / -1.3% 0.77 / 0.74 / +3.5%
tpcds_q61/datafusion:parquet 38005219 / 35875874 / +5.9% 50491912 / 50097483 / +0.8% 0.75 / 0.72 / +5.1%
tpcds_q62/datafusion:parquet 25229744 / 25386920 / -0.6% 38927895 / 37582608 / +3.6% 0.65 / 0.68 / -4.1%
tpcds_q63/datafusion:parquet 22727797 / 22474233 / +1.1% 38330804 / 38530180 / -0.5% 0.59 / 0.58 / +1.7%
tpcds_q64/datafusion:parquet 289493324 / 291474830 / -0.7% 326777539 / 329359841 / -0.8% 0.89 / 0.88 / +0.1%
tpcds_q65/datafusion:parquet 123673130 / 121202213 / +2.0% 140839538 / 139234236 / +1.2% 0.88 / 0.87 / +0.9%
tpcds_q66/datafusion:parquet 60727707 / 61059063 / -0.5% 77807698 / 77138722 / +0.9% 0.78 / 0.79 / -1.4%
tpcds_q67/datafusion:parquet 69588830 / 69429791 / +0.2% 92231045 / 91483174 / +0.8% 0.75 / 0.76 / -0.6%
tpcds_q68/datafusion:parquet 29676526 / 29894340 / -0.7% 48894968 / 47541370 / +2.8% 0.61 / 0.63 / -3.5%
tpcds_q69/datafusion:parquet 44375514 / 44100656 / +0.6% 59323858 / 58153803 / +2.0% 0.75 / 0.76 / -1.4%
tpcds_q70/datafusion:parquet 80908349 / 80699214 / +0.3% 97196592 / 101686923 / -4.4% 0.83 / 0.79 / +4.9%
tpcds_q71/datafusion:parquet 25256196 / 27053920 / -6.6% 40234040 / 38867178 / +3.5% 0.63 / 0.70 / -9.8%
tpcds_q72/datafusion:parquet 524568632 / 527548112 / -0.6% 546424123 / 545581897 / +0.2% 0.96 / 0.97 / -0.7%
tpcds_q73/datafusion:parquet 24115362 / 23916453 / +0.8% 36102538 / 36439971 / -0.9% 0.67 / 0.66 / +1.8%
tpcds_q74/datafusion:parquet 70616292 / 71771388 / -1.6% 89362004 / 90240806 / -1.0% 0.79 / 0.80 / -0.6%
tpcds_q75/datafusion:parquet 154662048 / 153086779 / +1.0% 181708218 / 179446999 / +1.3% 0.85 / 0.85 / -0.2%
tpcds_q76/datafusion:parquet 33646006 / 34782831 / -3.3% 47398055 / 46500554 / +1.9% 0.71 / 0.75 / -5.1%
tpcds_q77/datafusion:parquet 57009018 / 56987314 / +0.0% 74149528 / 77774384 / -4.7% 0.77 / 0.73 / +4.9%
tpcds_q78/datafusion:parquet 86133278 / 85150991 / +1.2% 117666865 / 117023342 / +0.5% 0.73 / 0.73 / +0.6%
tpcds_q79/datafusion:parquet 27390507 / 27413666 / -0.1% 41866221 / 41326635 / +1.3% 0.65 / 0.66 / -1.4%
tpcds_q80/datafusion:parquet 82345760 / 81861987 / +0.6% 111300923 / 109146990 / +2.0% 0.74 / 0.75 / -1.4%
tpcds_q81/datafusion:parquet 38016255 / 36445585 / +4.3% 51944179 / 53162669 / -2.3% 0.73 / 0.69 / +6.8%
tpcds_q82/datafusion:parquet 22964275 / 22631142 / +1.5% 33620555 / 35871289 / -6.3% 0.68 / 0.63 / +8.3%
tpcds_q83/datafusion:parquet 59698018 / 57647332 / +3.6% 77791297 / 74119934 / +5.0% 0.77 / 0.78 / -1.3%
tpcds_q84/datafusion:parquet 26096490 / 26036656 / +0.2% 42098633 / 42409010 / -0.7% 0.62 / 0.61 / +1.0%
tpcds_q85/datafusion:parquet 81229841 / 81239623 / -0.0% 102119430 / 102867523 / -0.7% 0.80 / 0.79 / +0.7%
tpcds_q86/datafusion:parquet 21404410 / 20845431 / +2.7% 33092112 / 33489705 / -1.2% 0.65 / 0.62 / +3.9%
tpcds_q87/datafusion:parquet 45745780 / 45013615 / +1.6% 65332206 / 61399131 / +6.4% 0.70 / 0.73 / -4.5%
tpcds_q88/datafusion:parquet 37894338 / 37664881 / +0.6% 50941745 / 51312700 / -0.7% 0.74 / 0.73 / +1.3%
tpcds_q89/datafusion:parquet 26166212 / 25994244 / +0.7% 41377462 / 41193575 / +0.4% 0.63 / 0.63 / +0.2%
tpcds_q90/datafusion:parquet 15819147 / 14579625 / +8.5% 26819532 / 25762001 / +4.1% 0.59 / 0.57 / +4.2%
tpcds_q91/datafusion:parquet 32849349 / 32208153 / +2.0% 46188937 / 49264834 / -6.2% 0.71 / 0.65 / +8.8%
tpcds_q92/datafusion:parquet 27320826 / 26677306 / +2.4% 40765354 / 41181581 / -1.0% 0.67 / 0.65 / +3.5%
tpcds_q93/datafusion:parquet 27971282 / 28552268 / -2.0% 46035095 / 46191950 / -0.3% 0.61 / 0.62 / -1.7%
tpcds_q94/datafusion:parquet 35448950 / 36193699 / -2.1% 50108874 / 47724743 / +5.0% 0.71 / 0.76 / -6.7%
tpcds_q95/datafusion:parquet 63691528 / 64984978 / -2.0% 77059407 / 76599000 / +0.6% 0.83 / 0.85 / -2.6%
tpcds_q96/datafusion:parquet 12584013 / 12539142 / +0.4% 24371563 / 23611996 / +3.2% 0.52 / 0.53 / -2.8%
tpcds_q97/datafusion:parquet 35717348 / 35897484 / -0.5% 52596572 / 51016025 / +3.1% 0.68 / 0.70 / -3.5%
tpcds_q98/datafusion:parquet 25207652 / 25398902 / -0.8% 39606158 / 39263662 / +0.9% 0.64 / 0.65 / -1.6%
tpcds_q99/datafusion:parquet 29963918 / 29766702 / +0.7% 42562446 / 42694391 / -0.3% 0.70 / 0.70 / +1.0%
duckdb / vortex-file-compressed / ns (1.005x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpcds_q01/duckdb:vortex-file-compressed 16051872 / 15802422 / +1.6% 24856942 / 24298052 / +2.3% 0.65 / 0.65 / -0.7%
tpcds_q02/duckdb:vortex-file-compressed 15558748 / 15305089 / +1.7% 23531838 / 22451786 / +4.8% 0.66 / 0.68 / -3.0%
tpcds_q03/duckdb:vortex-file-compressed 7000192 / 6801088 / +2.9% 15652415 / 14682399 / +6.6% 0.45 / 0.46 / -3.5%
tpcds_q04/duckdb:vortex-file-compressed 45290253 / 44949311 / +0.8% 53886467 / 54021477 / -0.2% 0.84 / 0.83 / +1.0%
tpcds_q05/duckdb:vortex-file-compressed 22863809 / 22631856 / +1.0% 30398028 / 30025929 / +1.2% 0.75 / 0.75 / -0.2%
tpcds_q06/duckdb:vortex-file-compressed 24017972 / 23763109 / +1.1% 36550558 / 36753487 / -0.6% 0.66 / 0.65 / +1.6%
tpcds_q07/duckdb:vortex-file-compressed 13567144 / 13699557 / -1.0% 24146237 / 24304154 / -0.6% 0.56 / 0.56 / -0.3%
tpcds_q08/duckdb:vortex-file-compressed 17284025 / 17085020 / +1.2% 24759255 / 25109459 / -1.4% 0.70 / 0.68 / +2.6%
tpcds_q09/duckdb:vortex-file-compressed 18371469 / 18220904 / +0.8% 28160577 / 27169800 / +3.6% 0.65 / 0.67 / -2.7%
tpcds_q10/duckdb:vortex-file-compressed 26768312 / 26801511 / -0.1% 39531447 / 39147460 / +1.0% 0.68 / 0.68 / -1.1%
tpcds_q11/duckdb:vortex-file-compressed 36462896 / 36281728 / +0.5% 43914163 / 44344059 / -1.0% 0.83 / 0.82 / +1.5%
tpcds_q12/duckdb:vortex-file-compressed 9707494 / 9981268 / -2.7% 16053684 / 16095986 / -0.3% 0.60 / 0.62 / -2.5%
tpcds_q13/duckdb:vortex-file-compressed 20750341 / 20824883 / -0.4% 32913378 / 32294824 / +1.9% 0.63 / 0.64 / -2.2%
tpcds_q14/duckdb:vortex-file-compressed 55391182 / 54953832 / +0.8% 65718817 / 64388389 / +2.1% 0.84 / 0.85 / -1.2%
tpcds_q15/duckdb:vortex-file-compressed 10811593 / 10796783 / +0.1% 17369570 / 17642644 / -1.5% 0.62 / 0.61 / +1.7%
tpcds_q16/duckdb:vortex-file-compressed 24005974 / 23952759 / +0.2% 34879179 / 34360553 / +1.5% 0.69 / 0.70 / -1.3%
tpcds_q17/duckdb:vortex-file-compressed 25320848 / 25491742 / -0.7% 37748988 / 37997711 / -0.7% 0.67 / 0.67 / -0.0%
tpcds_q18/duckdb:vortex-file-compressed 31011976 / 30985417 / +0.1% 40185101 / 39804911 / +1.0% 0.77 / 0.78 / -0.9%
tpcds_q19/duckdb:vortex-file-compressed 77967278 / 77678128 / +0.4% 89218026 / 88630918 / +0.7% 0.87 / 0.88 / -0.3%
tpcds_q20/duckdb:vortex-file-compressed 10683110 / 10469396 / +2.0% 17305231 / 17162569 / +0.8% 0.62 / 0.61 / +1.2%
tpcds_q21/duckdb:vortex-file-compressed 10733006 / 10469072 / +2.5% 22980453 / 22060763 / +4.2% 0.47 / 0.47 / -1.6%
tpcds_q22/duckdb:vortex-file-compressed 18471162 / 18247900 / +1.2% 27974092 / 28626706 / -2.3% 0.66 / 0.64 / +3.6%
tpcds_q23/duckdb:vortex-file-compressed 37867960 / 37388230 / +1.3% 48029936 / 47844431 / +0.4% 0.79 / 0.78 / +0.9%
tpcds_q24/duckdb:vortex-file-compressed 27020598 / 26953025 / +0.3% 39038102 / 37623069 / +3.8% 0.69 / 0.72 / -3.4%
tpcds_q25/duckdb:vortex-file-compressed 23710653 / 23263917 / +1.9% 35534122 / 35055325 / +1.4% 0.67 / 0.66 / +0.5%
tpcds_q26/duckdb:vortex-file-compressed 13181596 / 12846210 / +2.6% 21365307 / 20251460 / +5.5% 0.62 / 0.63 / -2.7%
tpcds_q27/duckdb:vortex-file-compressed 16474726 / 16295213 / +1.1% 26999710 / 26729320 / +1.0% 0.61 / 0.61 / +0.1%
tpcds_q28/duckdb:vortex-file-compressed 15203552 / 14988394 / +1.4% 23694904 / 23071968 / +2.7% 0.64 / 0.65 / -1.2%
tpcds_q29/duckdb:vortex-file-compressed 22913182 / 23087950 / -0.8% 35492264 / 35891438 / -1.1% 0.65 / 0.64 / +0.4%
tpcds_q30/duckdb:vortex-file-compressed 15709644 / 15688242 / +0.1% 23434828 / 22423346 / +4.5% 0.67 / 0.70 / -4.2%
tpcds_q31/duckdb:vortex-file-compressed 17886704 / 17762258 / +0.7% 25879216 / 25452879 / +1.7% 0.69 / 0.70 / -1.0%
tpcds_q32/duckdb:vortex-file-compressed 11814430 / 11546310 / +2.3% 21064814 / 20670282 / +1.9% 0.56 / 0.56 / +0.4%
tpcds_q33/duckdb:vortex-file-compressed 17555118 / 17384540 / +1.0% 25973146 / 26093960 / -0.5% 0.68 / 0.67 / +1.5%
tpcds_q34/duckdb:vortex-file-compressed 12526476 / 12152618 / +3.1% 21530017 / 21373333 / +0.7% 0.58 / 0.57 / +2.3%
tpcds_q35/duckdb:vortex-file-compressed 28424080 / 27448528 / +3.6% 38348732 / 37542216 / +2.1% 0.74 / 0.73 / +1.4%
tpcds_q36/duckdb:vortex-file-compressed 14339778 / 14396148 / -0.4% 24615383 / 23910207 / +2.9% 0.58 / 0.60 / -3.2%
tpcds_q37/duckdb:vortex-file-compressed 9231234 / 9017662 / +2.4% 22027521 / 22629144 / -2.7% 0.42 / 0.40 / +5.2%
tpcds_q38/duckdb:vortex-file-compressed 24059318 / 23877327 / +0.8% 31072013 / 29721070 / +4.5% 0.77 / 0.80 / -3.6%
tpcds_q39/duckdb:vortex-file-compressed 20313651 / 21390934 / -5.0% 32030248 / 31389335 / +2.0% 0.63 / 0.68 / -6.9%
tpcds_q40/duckdb:vortex-file-compressed 14075176 / 14037827 / +0.3% 20648751 / 20961932 / -1.5% 0.68 / 0.67 / +1.8%
tpcds_q41/duckdb:vortex-file-compressed 14381262 / 14290316 / +0.6% 21722379 / 21326306 / +1.9% 0.66 / 0.67 / -1.2%
tpcds_q42/duckdb:vortex-file-compressed 6936878 / 6978028 / -0.6% 15394938 / 15574302 / -1.2% 0.45 / 0.45 / +0.6%
tpcds_q43/duckdb:vortex-file-compressed 10037016 / 9842237 / +2.0% 18552196 / 17912536 / +3.6% 0.54 / 0.55 / -1.5%
tpcds_q44/duckdb:vortex-file-compressed 15248508 / 14844436 / +2.7% 25295025 / 24862647 / +1.7% 0.60 / 0.60 / +1.0%
tpcds_q45/duckdb:vortex-file-compressed 23379323 / 23503170 / -0.5% 30993392 / 29707812 / +4.3% 0.75 / 0.79 / -4.7%
tpcds_q46/duckdb:vortex-file-compressed 19124412 / 19151718 / -0.1% 26086606 / 26733870 / -2.4% 0.73 / 0.72 / +2.3%
tpcds_q47/duckdb:vortex-file-compressed 34130248 / 33851195 / +0.8% 42921192 / 43625037 / -1.6% 0.80 / 0.78 / +2.5%
tpcds_q48/duckdb:vortex-file-compressed 23299042 / 23636324 / -1.4% 35024881 / 34494794 / +1.5% 0.67 / 0.69 / -2.9%
tpcds_q49/duckdb:vortex-file-compressed 19641759 / 19740604 / -0.5% 32172956 / 31377618 / +2.5% 0.61 / 0.63 / -3.0%
tpcds_q50/duckdb:vortex-file-compressed 17111867 / 17314214 / -1.2% 29563322 / 28271029 / +4.6% 0.58 / 0.61 / -5.5%
tpcds_q51/duckdb:vortex-file-compressed 48447166 / 49103020 / -1.3% 76644894 / 59394524 / +29.0% 🔴 0.63 / 0.83 / -23.5%
tpcds_q52/duckdb:vortex-file-compressed 7164801 / 6913364 / +3.6% 15695084 / 15638787 / +0.4% 0.46 / 0.44 / +3.3%
tpcds_q53/duckdb:vortex-file-compressed 11346613 / 11369348 / -0.2% 18775138 / 18414644 / +2.0% 0.60 / 0.62 / -2.1%
tpcds_q54/duckdb:vortex-file-compressed 20120054 / 19674900 / +2.3% 28996411 / 29413634 / -1.4% 0.69 / 0.67 / +3.7%
tpcds_q55/duckdb:vortex-file-compressed 6763689 / 6869972 / -1.5% 15596837 / 14799017 / +5.4% 0.43 / 0.46 / -6.6%
tpcds_q56/duckdb:vortex-file-compressed 17919644 / 17652373 / +1.5% 26464018 / 26148002 / +1.2% 0.68 / 0.68 / +0.3%
tpcds_q57/duckdb:vortex-file-compressed 25377454 / 25294642 / +0.3% 33750576 / 33190036 / +1.7% 0.75 / 0.76 / -1.3%
tpcds_q58/duckdb:vortex-file-compressed 19895649 / 19545132 / +1.8% 29757792 / 28190594 / +5.6% 0.67 / 0.69 / -3.6%
tpcds_q59/duckdb:vortex-file-compressed 19507057 / 19578103 / -0.4% 27136156 / 26487631 / +2.4% 0.72 / 0.74 / -2.7%
tpcds_q60/duckdb:vortex-file-compressed 18875014 / 18509235 / +2.0% 27949081 / 27189873 / +2.8% 0.68 / 0.68 / -0.8%
tpcds_q61/duckdb:vortex-file-compressed 23396584 / 23351216 / +0.2% 33680387 / 33471701 / +0.6% 0.69 / 0.70 / -0.4%
tpcds_q62/duckdb:vortex-file-compressed 11709476 / 11678724 / +0.3% 18898237 / 18595309 / +1.6% 0.62 / 0.63 / -1.3%
tpcds_q63/duckdb:vortex-file-compressed 10969439 / 11019285 / -0.5% 18400630 / 18570153 / -0.9% 0.60 / 0.59 / +0.5%
tpcds_q64/duckdb:vortex-file-compressed 49426080 / 49515487 / -0.2% 66842964 / 67517919 / -1.0% 0.74 / 0.73 / +0.8%
tpcds_q65/duckdb:vortex-file-compressed 14992384 / 14970884 / +0.1% 24697749 / 23677969 / +4.3% 0.61 / 0.63 / -4.0%
tpcds_q66/duckdb:vortex-file-compressed 29760204 / 29835191 / -0.3% 38454264 / 38121024 / +0.9% 0.77 / 0.78 / -1.1%
tpcds_q67/duckdb:vortex-file-compressed 57983577 / 57911190 / +0.1% 66917040 / 65672432 / +1.9% 0.87 / 0.88 / -1.7%
tpcds_q68/duckdb:vortex-file-compressed 18830074 / 18853756 / -0.1% 26564264 / 26686844 / -0.5% 0.71 / 0.71 / +0.3%
tpcds_q69/duckdb:vortex-file-compressed 21780699 / 21737318 / +0.2% 35713057 / 35312712 / +1.1% 0.61 / 0.62 / -0.9%
tpcds_q70/duckdb:vortex-file-compressed 15569846 / 15214089 / +2.3% 24800128 / 25116282 / -1.3% 0.63 / 0.61 / +3.6%
tpcds_q71/duckdb:vortex-file-compressed 13339388 / 13176744 / +1.2% 22701724 / 21513426 / +5.5% 0.59 / 0.61 / -4.1%
tpcds_q72/duckdb:vortex-file-compressed 54265333 / 54918522 / -1.2% 68507152 / 68135509 / +0.5% 0.79 / 0.81 / -1.7%
tpcds_q73/duckdb:vortex-file-compressed 11295729 / 11306659 / -0.1% 20597431 / 19397154 / +6.2% 0.55 / 0.58 / -5.9%
tpcds_q74/duckdb:vortex-file-compressed 26170164 / 25697200 / +1.8% 32515216 / 32411223 / +0.3% 0.80 / 0.79 / +1.5%
tpcds_q75/duckdb:vortex-file-compressed 28725531 / 28192782 / +1.9% 38682678 / 37472123 / +3.2% 0.74 / 0.75 / -1.3%
tpcds_q76/duckdb:vortex-file-compressed 12767690 / 12874996 / -0.8% 21857487 / 21825489 / +0.1% 0.58 / 0.59 / -1.0%
tpcds_q77/duckdb:vortex-file-compressed 20666328 / 20149040 / +2.6% 31588171 / 29987292 / +5.3% 0.65 / 0.67 / -2.6%
tpcds_q78/duckdb:vortex-file-compressed 43643368 / 43560559 / +0.2% 52655331 / 52259904 / +0.8% 0.83 / 0.83 / -0.6%
tpcds_q79/duckdb:vortex-file-compressed 13220874 / 13198426 / +0.2% 21645924 / 20609413 / +5.0% 0.61 / 0.64 / -4.6%
tpcds_q80/duckdb:vortex-file-compressed 37009639 / 36833196 / +0.5% 50055418 / 48045158 / +4.2% 0.74 / 0.77 / -3.6%
tpcds_q81/duckdb:vortex-file-compressed 21286068 / 20992067 / +1.4% 29202187 / 27998591 / +4.3% 0.73 / 0.75 / -2.8%
tpcds_q82/duckdb:vortex-file-compressed 9815421 / 9552157 / +2.8% 23743631 / 22618428 / +5.0% 0.41 / 0.42 / -2.1%
tpcds_q83/duckdb:vortex-file-compressed 17615878 / 17112580 / +2.9% 24072419 / 22890466 / +5.2% 0.73 / 0.75 / -2.1%
tpcds_q84/duckdb:vortex-file-compressed 15200931 / 15741230 / -3.4% 22675606 / 21887681 / +3.6% 0.67 / 0.72 / -6.8%
tpcds_q85/duckdb:vortex-file-compressed 24212320 / 23880588 / +1.4% 37002347 / 35118704 / +5.4% 0.65 / 0.68 / -3.8%
tpcds_q86/duckdb:vortex-file-compressed 9583850 / 9501361 / +0.9% 16528767 / 16229321 / +1.8% 0.58 / 0.59 / -1.0%
tpcds_q87/duckdb:vortex-file-compressed 25652454 / 25750809 / -0.4% 32151008 / 31702468 / +1.4% 0.80 / 0.81 / -1.8%
tpcds_q88/duckdb:vortex-file-compressed 37136878 / 36913662 / +0.6% 47390245 / 46321419 / +2.3% 0.78 / 0.80 / -1.7%
tpcds_q89/duckdb:vortex-file-compressed 11891364 / 11919950 / -0.2% 20379891 / 19774979 / +3.1% 0.58 / 0.60 / -3.2%
tpcds_q90/duckdb:vortex-file-compressed 8588528 / 8760096 / -2.0% 15511618 / 14284295 / +8.6% 0.55 / 0.61 / -9.7%
tpcds_q91/duckdb:vortex-file-compressed 13829996 / 13962402 / -0.9% 21199611 / 20399433 / +3.9% 0.65 / 0.68 / -4.7%
tpcds_q92/duckdb:vortex-file-compressed 11923124 / 11802658 / +1.0% 21152912 / 19180502 / +10.3% 🔴 0.56 / 0.62 / -8.4%
tpcds_q93/duckdb:vortex-file-compressed 10455492 / 10275175 / +1.8% 23990687 / 23380715 / +2.6% 0.44 / 0.44 / -0.8%
tpcds_q94/duckdb:vortex-file-compressed 21652499 / 22109685 / -2.1% 32051958 / 30683629 / +4.5% 0.68 / 0.72 / -6.2%
tpcds_q95/duckdb:vortex-file-compressed 40201218 / 40478661 / -0.7% 51195958 / 51298092 / -0.2% 0.79 / 0.79 / -0.5%
tpcds_q96/duckdb:vortex-file-compressed 6904876 / 6663725 / +3.6% 15355969 / 14948764 / +2.7% 0.45 / 0.45 / +0.9%
tpcds_q97/duckdb:vortex-file-compressed 23112674 / 23136591 / -0.1% 30159386 / 31223092 / -3.4% 0.77 / 0.74 / +3.4%
tpcds_q98/duckdb:vortex-file-compressed 10986706 / 10991567 / -0.0% 19039597 / 18386188 / +3.6% 0.58 / 0.60 / -3.5%
tpcds_q99/duckdb:vortex-file-compressed 14739036 / 14867658 / -0.9% 21779915 / 22290310 / -2.3% 0.68 / 0.67 / +1.5%
duckdb / parquet / ns (1.004x ➖, 1↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpcds_q01/duckdb:parquet 24519888 / 24382868 / +0.6% 31053306 / 30838129 / +0.7% 0.79 / 0.79 / -0.1%
tpcds_q02/duckdb:parquet 18690422 / 18342060 / +1.9% 24914910 / 24561276 / +1.4% 0.75 / 0.75 / +0.5%
tpcds_q03/duckdb:parquet 9908261 / 9849220 / +0.6% 16123139 / 15695983 / +2.7% 0.61 / 0.63 / -2.1%
tpcds_q04/duckdb:parquet 119081206 / 117815716 / +1.1% 127175843 / 125317614 / +1.5% 0.94 / 0.94 / -0.4%
tpcds_q05/duckdb:parquet 29262474 / 28869834 / +1.4% 33332026 / 33769732 / -1.3% 0.88 / 0.85 / +2.7%
tpcds_q06/duckdb:parquet 26848286 / 26703844 / +0.5% 36287940 / 35621173 / +1.9% 0.74 / 0.75 / -1.3%
tpcds_q07/duckdb:parquet 32178611 / 31832000 / +1.1% 39551149 / 38609895 / +2.4% 0.81 / 0.82 / -1.3%
tpcds_q08/duckdb:parquet 20227934 / 20231890 / -0.0% 26407745 / 26414683 / -0.0% 0.77 / 0.77 / +0.0%
tpcds_q09/duckdb:parquet 27397421 / 26976666 / +1.6% 30365898 / 30018042 / +1.2% 0.90 / 0.90 / +0.4%
tpcds_q10/duckdb:parquet 33511802 / 32992112 / +1.6% 40836083 / 40252062 / +1.5% 0.82 / 0.82 / +0.1%
tpcds_q11/duckdb:parquet 68850902 / 69132114 / -0.4% 76549829 / 75428611 / +1.5% 0.90 / 0.92 / -1.9%
tpcds_q12/duckdb:parquet 14320686 / 14270732 / +0.4% 19546436 / 19328071 / +1.1% 0.73 / 0.74 / -0.8%
tpcds_q13/duckdb:parquet 33435492 / 30678936 / +9.0% 40123008 / 40893576 / -1.9% 0.83 / 0.75 / +11.1%
tpcds_q14/duckdb:parquet 66557882 / 65694288 / +1.3% 73186056 / 70650661 / +3.6% 0.91 / 0.93 / -2.2%
tpcds_q15/duckdb:parquet 16978703 / 16690486 / +1.7% 22997471 / 22797292 / +0.9% 0.74 / 0.73 / +0.8%
tpcds_q16/duckdb:parquet 30928590 / 30682150 / +0.8% 37677384 / 37263109 / +1.1% 0.82 / 0.82 / -0.3%
tpcds_q17/duckdb:parquet 35223610 / 35150436 / +0.2% 40994520 / 40880571 / +0.3% 0.86 / 0.86 / -0.1%
tpcds_q18/duckdb:parquet 48108586 / 47690564 / +0.9% 56792466 / 56376389 / +0.7% 0.85 / 0.85 / +0.1%
tpcds_q19/duckdb:parquet 19123205 / 18840906 / +1.5% 25886681 / 25786093 / +0.4% 0.74 / 0.73 / +1.1%
tpcds_q20/duckdb:parquet 15253707 / 15011050 / +1.6% 20600636 / 19611998 / +5.0% 0.74 / 0.77 / -3.3%
tpcds_q21/duckdb:parquet 10778762 / 10692296 / +0.8% 17291364 / 17136997 / +0.9% 0.62 / 0.62 / -0.1%
tpcds_q22/duckdb:parquet 20915719 / 20844910 / +0.3% 27136744 / 26510262 / +2.4% 0.77 / 0.79 / -2.0%
tpcds_q23/duckdb:parquet 43499470 / 42278441 / +2.9% 48242429 / 53977816 / -10.6% 🟢 0.90 / 0.78 / +15.1%
tpcds_q24/duckdb:parquet 30913854 / 30779787 / +0.4% 37573341 / 37849701 / -0.7% 0.82 / 0.81 / +1.2%
tpcds_q25/duckdb:parquet 31359458 / 30801432 / +1.8% 37550858 / 37271181 / +0.8% 0.84 / 0.83 / +1.1%
tpcds_q26/duckdb:parquet 29952815 / 29419484 / +1.8% 35779666 / 35641186 / +0.4% 0.84 / 0.83 / +1.4%
tpcds_q27/duckdb:parquet 33244903 / 34425970 / -3.4% 42083802 / 41622422 / +1.1% 0.79 / 0.83 / -4.5%
tpcds_q28/duckdb:parquet 25822077 / 26682818 / -3.2% 33611365 / 33309630 / +0.9% 0.77 / 0.80 / -4.1%
tpcds_q29/duckdb:parquet 32755894 / 32558876 / +0.6% 39877348 / 39882524 / -0.0% 0.82 / 0.82 / +0.6%
tpcds_q30/duckdb:parquet 36576198 / 36208556 / +1.0% 45064711 / 44832238 / +0.5% 0.81 / 0.81 / +0.5%
tpcds_q31/duckdb:parquet 37083208 / 36111508 / +2.7% 43499124 / 43989898 / -1.1% 0.85 / 0.82 / +3.8%
tpcds_q32/duckdb:parquet 14462903 / 14626952 / -1.1% 21253770 / 21253053 / +0.0% 0.68 / 0.69 / -1.1%
tpcds_q33/duckdb:parquet 24612068 / 24405932 / +0.8% 30073273 / 29415980 / +2.2% 0.82 / 0.83 / -1.4%
tpcds_q34/duckdb:parquet 17381967 / 17122779 / +1.5% 24587625 / 24664505 / -0.3% 0.71 / 0.69 / +1.8%
tpcds_q35/duckdb:parquet 36212328 / 35440778 / +2.2% 44674127 / 44390137 / +0.6% 0.81 / 0.80 / +1.5%
tpcds_q36/duckdb:parquet 41718677 / 40058580 / +4.1% 48654532 / 48102330 / +1.1% 0.86 / 0.83 / +3.0%
tpcds_q37/duckdb:parquet 13172296 / 12905798 / +2.1% 19797371 / 19188113 / +3.2% 0.67 / 0.67 / -1.1%
tpcds_q38/duckdb:parquet 29747092 / 29946381 / -0.7% 33895729 / 34241138 / -1.0% 0.88 / 0.87 / +0.3%
tpcds_q39/duckdb:parquet 23497299 / 23443880 / +0.2% 29598939 / 29952193 / -1.2% 0.79 / 0.78 / +1.4%
tpcds_q40/duckdb:parquet 16301666 / 16469818 / -1.0% 21761602 / 21952767 / -0.9% 0.75 / 0.75 / -0.2%
tpcds_q41/duckdb:parquet 12256762 / 12152346 / +0.9% 18721555 / 19184561 / -2.4% 0.65 / 0.63 / +3.4%
tpcds_q42/duckdb:parquet 9665906 / 9519476 / +1.5% 15822093 / 15530547 / +1.9% 0.61 / 0.61 / -0.3%
tpcds_q43/duckdb:parquet 12421034 / 12581723 / -1.3% 18947719 / 18782455 / +0.9% 0.66 / 0.67 / -2.1%
tpcds_q44/duckdb:parquet 21417639 / 20887080 / +2.5% 26717706 / 28480036 / -6.2% 0.80 / 0.73 / +9.3%
tpcds_q45/duckdb:parquet 21522604 / 21233797 / +1.4% 28111441 / 27877433 / +0.8% 0.77 / 0.76 / +0.5%
tpcds_q46/duckdb:parquet 35966426 / 35833144 / +0.4% 43459180 / 43603981 / -0.3% 0.83 / 0.82 / +0.7%
tpcds_q47/duckdb:parquet 35045458 / 34501142 / +1.6% 41256380 / 41263136 / -0.0% 0.85 / 0.84 / +1.6%
tpcds_q48/duckdb:parquet 29094585 / 33173738 / -12.3% 🟢 37424450 / 37616903 / -0.5% 0.78 / 0.88 / -11.8%
tpcds_q49/duckdb:parquet 31580681 / 30020206 / +5.2% 37046236 / 35836898 / +3.4% 0.85 / 0.84 / +1.8%
tpcds_q50/duckdb:parquet 19937404 / 19829589 / +0.5% 25942188 / 25717448 / +0.9% 0.77 / 0.77 / -0.3%
tpcds_q51/duckdb:parquet 53594180 / 52208108 / +2.7% 76450122 / 60532829 / +26.3% 🔴 0.70 / 0.86 / -18.7%
tpcds_q52/duckdb:parquet 9877338 / 9752686 / +1.3% 15778052 / 16091844 / -2.0% 0.63 / 0.61 / +3.3%
tpcds_q53/duckdb:parquet 14236354 / 14322545 / -0.6% 21318416 / 20389339 / +4.6% 0.67 / 0.70 / -4.9%
tpcds_q54/duckdb:parquet 25647100 / 25180639 / +1.9% 32636723 / 32261066 / +1.2% 0.79 / 0.78 / +0.7%
tpcds_q55/duckdb:parquet 9725134 / 9632032 / +1.0% 15795684 / 15396276 / +2.6% 0.62 / 0.63 / -1.6%
tpcds_q56/duckdb:parquet 27146930 / 26522552 / +2.4% 31197658 / 30643740 / +1.8% 0.87 / 0.87 / +0.5%
tpcds_q57/duckdb:parquet 30957962 / 30758159 / +0.6% 37065522 / 36338559 / +2.0% 0.84 / 0.85 / -1.3%
tpcds_q58/duckdb:parquet 24912754 / 24228208 / +2.8% 30402417 / 31006220 / -1.9% 0.82 / 0.78 / +4.9%
tpcds_q59/duckdb:parquet 23653670 / 23377982 / +1.2% 29981752 / 29948469 / +0.1% 0.79 / 0.78 / +1.1%
tpcds_q60/duckdb:parquet 27635176 / 28156890 / -1.9% 32586564 / 32209507 / +1.2% 0.85 / 0.87 / -3.0%
tpcds_q61/duckdb:parquet 24406240 / 24941672 / -2.1% 30173499 / 29462197 / +2.4% 0.81 / 0.85 / -4.5%
tpcds_q62/duckdb:parquet 13305872 / 13304912 / +0.0% 18709553 / 18091888 / +3.4% 0.71 / 0.74 / -3.3%
tpcds_q63/duckdb:parquet 13652722 / 13370952 / +2.1% 20147499 / 19919427 / +1.1% 0.68 / 0.67 / +1.0%
tpcds_q64/duckdb:parquet 71821013 / 71791072 / +0.0% 82046091 / 81245168 / +1.0% 0.88 / 0.88 / -0.9%
tpcds_q65/duckdb:parquet 20519284 / 21070074 / -2.6% 24863588 / 28600423 / -13.1% 🟢 0.83 / 0.74 / +12.0%
tpcds_q66/duckdb:parquet 35735428 / 35825405 / -0.3% 43232830 / 42236658 / +2.4% 0.83 / 0.85 / -2.5%
tpcds_q67/duckdb:parquet 61372735 / 60637446 / +1.2% 68374254 / 67392751 / +1.5% 0.90 / 0.90 / -0.2%
tpcds_q68/duckdb:parquet 28608274 / 30060714 / -4.8% 36919369 / 38079366 / -3.0% 0.77 / 0.79 / -1.8%
tpcds_q69/duckdb:parquet 26276910 / 26218258 / +0.2% 34902572 / 34118833 / +2.3% 0.75 / 0.77 / -2.0%
tpcds_q70/duckdb:parquet 19914988 / 19492306 / +2.2% 26627508 / 26495081 / +0.5% 0.75 / 0.74 / +1.7%
tpcds_q71/duckdb:parquet 17874640 / 17158290 / +4.2% 24806754 / 23895400 / +3.8% 0.72 / 0.72 / +0.3%
tpcds_q72/duckdb:parquet 54584430 / 54727246 / -0.3% 61658838 / 61649773 / +0.0% 0.89 / 0.89 / -0.3%
tpcds_q73/duckdb:parquet 15202514 / 15839989 / -4.0% 21749848 / 21834051 / -0.4% 0.70 / 0.73 / -3.7%
tpcds_q74/duckdb:parquet 84028193 / 84638644 / -0.7% 91982675 / 91214184 / +0.8% 0.91 / 0.93 / -1.6%
tpcds_q75/duckdb:parquet 43998900 / 45776344 / -3.9% 50977375 / 50048090 / +1.9% 0.86 / 0.91 / -5.6%
tpcds_q76/duckdb:parquet 17973366 / 19026916 / -5.5% 23917710 / 23182989 / +3.2% 0.75 / 0.82 / -8.4%
tpcds_q77/duckdb:parquet 25216056 / 25079386 / +0.5% 31857936 / 31171183 / +2.2% 0.79 / 0.80 / -1.6%
tpcds_q78/duckdb:parquet 79263290 / 78651332 / +0.8% 85614966 / 87043467 / -1.6% 0.93 / 0.90 / +2.5%
tpcds_q79/duckdb:parquet 21684788 / 23406992 / -7.4% 29522821 / 29686460 / -0.6% 0.73 / 0.79 / -6.8%
tpcds_q80/duckdb:parquet 39216492 / 38908716 / +0.8% 43933178 / 43904238 / +0.1% 0.89 / 0.89 / +0.7%
tpcds_q81/duckdb:parquet 37066939 / 37113473 / -0.1% 44939625 / 45115709 / -0.4% 0.82 / 0.82 / +0.3%
tpcds_q82/duckdb:parquet 14284250 / 13701602 / +4.3% 20547410 / 20533043 / +0.1% 0.70 / 0.67 / +4.2%
tpcds_q83/duckdb:parquet 20607126 / 20434172 / +0.8% 25514225 / 25737394 / -0.9% 0.81 / 0.79 / +1.7%
tpcds_q84/duckdb:parquet 23206646 / 23226782 / -0.1% 29171119 / 28734674 / +1.5% 0.80 / 0.81 / -1.6%
tpcds_q85/duckdb:parquet 33135414 / 32799365 / +1.0% 39911625 / 40381388 / -1.2% 0.83 / 0.81 / +2.2%
tpcds_q86/duckdb:parquet 12091584 / 12119846 / -0.2% 17311089 / 16977967 / +2.0% 0.70 / 0.71 / -2.2%
tpcds_q87/duckdb:parquet 31749013 / 31613342 / +0.4% 36005161 / 36795025 / -2.1% 0.88 / 0.86 / +2.6%
tpcds_q88/duckdb:parquet 39765702 / 39281004 / +1.2% 45568443 / 44494477 / +2.4% 0.87 / 0.88 / -1.2%
tpcds_q89/duckdb:parquet 14463680 / 14448024 / +0.1% 21688469 / 21217601 / +2.2% 0.67 / 0.68 / -2.1%
tpcds_q90/duckdb:parquet 10261426 / 10395494 / -1.3% 15697798 / 15667447 / +0.2% 0.65 / 0.66 / -1.5%
tpcds_q91/duckdb:parquet 21553002 / 21328056 / +1.1% 29242249 / 28486172 / +2.7% 0.74 / 0.75 / -1.6%
tpcds_q92/duckdb:parquet 15849006 / 15777923 / +0.5% 22695584 / 22635717 / +0.3% 0.70 / 0.70 / +0.2%
tpcds_q93/duckdb:parquet 14189264 / 14266178 / -0.5% 20442824 / 20670385 / -1.1% 0.69 / 0.69 / +0.6%
tpcds_q94/duckdb:parquet 25819847 / 25868284 / -0.2% 32929808 / 32950959 / -0.1% 0.78 / 0.79 / -0.1%
tpcds_q95/duckdb:parquet 43746500 / 43916591 / -0.4% 49090142 / 50139884 / -2.1% 0.89 / 0.88 / +1.7%
tpcds_q96/duckdb:parquet 8414890 / 8359194 / +0.7% 14579813 / 14073082 / +3.6% 0.58 / 0.59 / -2.8%
tpcds_q97/duckdb:parquet 27979676 / 27537742 / +1.6% 34321645 / 32705200 / +4.9% 0.82 / 0.84 / -3.2%
tpcds_q98/duckdb:parquet 16690234 / 16842283 / -0.9% 23747068 / 23243812 / +2.2% 0.70 / 0.72 / -3.0%
tpcds_q99/duckdb:parquet 19309641 / 19153042 / +0.8% 24659404 / 24480635 / +0.7% 0.78 / 0.78 / +0.1%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: Clickbench on NVME 📖

Commits: PR e843b514 vs base a59294e3
Verdict: No clear signal (low confidence)
Attributed Vortex impact: +0.5%
Engines: DataFusion No clear signal (+0.1%, low confidence) · DuckDB No clear signal (+0.9%, low confidence)
Vortex (geomean): hot 0.998x ➖ · cold 1.003x ➖
Parquet (geomean): hot 0.993x ➖ · cold 1.003x ➖
Shifts: Parquet (control) -0.7% · Median polish -0.8%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (0.995x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
clickbench_q00/datafusion:vortex-file-compressed 1240336 / 1281075 / -3.2% 21227092 / 22114745 / -4.0% 0.06 / 0.06 / +0.9%
clickbench_q01/datafusion:vortex-file-compressed 5789224 / 5552493 / +4.3% 33523105 / 33364044 / +0.5% 0.17 / 0.17 / +3.8%
clickbench_q02/datafusion:vortex-file-compressed 10097659 / 9595292 / +5.2% 39048258 / 39192640 / -0.4% 0.26 / 0.24 / +5.6%
clickbench_q03/datafusion:vortex-file-compressed 11343986 / 12254576 / -7.4% 50363030 / 52102933 / -3.3% 0.23 / 0.24 / -4.2%
clickbench_q04/datafusion:vortex-file-compressed 55412202 / 55709435 / -0.5% 91843603 / 88872914 / +3.3% 0.60 / 0.63 / -3.8%
clickbench_q05/datafusion:vortex-file-compressed 75424962 / 76987760 / -2.0% 112666005 / 118897443 / -5.2% 0.67 / 0.65 / +3.4%
clickbench_q06/datafusion:vortex-file-compressed 1239694 / 1261820 / -1.8% 20909991 / 21927988 / -4.6% 0.06 / 0.06 / +3.0%
clickbench_q07/datafusion:vortex-file-compressed 8996108 / 9017869 / -0.2% 32358623 / 31621677 / +2.3% 0.28 / 0.29 / -2.5%
clickbench_q08/datafusion:vortex-file-compressed 74492766 / 74945576 / -0.6% 112982813 / 111755086 / +1.1% 0.66 / 0.67 / -1.7%
clickbench_q09/datafusion:vortex-file-compressed 162669504 / 166438758 / -2.3% 202782392 / 207218528 / -2.1% 0.80 / 0.80 / -0.1%
clickbench_q10/datafusion:vortex-file-compressed 21769254 / 22663542 / -3.9% 62749589 / 63042672 / -0.5% 0.35 / 0.36 / -3.5%
clickbench_q11/datafusion:vortex-file-compressed 25091986 / 24088220 / +4.2% 62545607 / 64811691 / -3.5% 0.40 / 0.37 / +7.9%
clickbench_q12/datafusion:vortex-file-compressed 72260388 / 72509834 / -0.3% 114632542 / 114643576 / -0.0% 0.63 / 0.63 / -0.3%
clickbench_q13/datafusion:vortex-file-compressed 115230800 / 120361205 / -4.3% 175509252 / 187281395 / -6.3% 0.66 / 0.64 / +2.2%
clickbench_q14/datafusion:vortex-file-compressed 73664064 / 74641554 / -1.3% 123418105 / 117510244 / +5.0% 0.60 / 0.64 / -6.0%
clickbench_q15/datafusion:vortex-file-compressed 60461082 / 59593045 / +1.5% 92039331 / 99788668 / -7.8% 0.66 / 0.60 / +10.0%
clickbench_q16/datafusion:vortex-file-compressed 150541742 / 147387973 / +2.1% 208407789 / 206971490 / +0.7% 0.72 / 0.71 / +1.4%
clickbench_q17/datafusion:vortex-file-compressed 148115080 / 147795668 / +0.2% 208997450 / 211843533 / -1.3% 0.71 / 0.70 / +1.6%
clickbench_q18/datafusion:vortex-file-compressed 283222198 / 287091988 / -1.3% 376949810 / 365907947 / +3.0% 0.75 / 0.78 / -4.2%
clickbench_q19/datafusion:vortex-file-compressed 7220988 / 7576981 / -4.7% 47504684 / 46794999 / +1.5% 0.15 / 0.16 / -6.1%
clickbench_q20/datafusion:vortex-file-compressed 60760791 / 62224132 / -2.4% 223636316 / 225118106 / -0.7% 0.27 / 0.28 / -1.7%
clickbench_q21/datafusion:vortex-file-compressed 87027380 / 88438306 / -1.6% 269871370 / 267382227 / +0.9% 0.32 / 0.33 / -2.5%
clickbench_q22/datafusion:vortex-file-compressed 97852798 / 97822461 / +0.0% 341790970 / 341945197 / -0.0% 0.29 / 0.29 / +0.1%
clickbench_q23/datafusion:vortex-file-compressed 194153414 / 194181530 / -0.0% 417499176 / 440027607 / -5.1% 0.47 / 0.44 / +5.4%
clickbench_q24/datafusion:vortex-file-compressed 14821762 / 15419234 / -3.9% 63892896 / 63156567 / +1.2% 0.23 / 0.24 / -5.0%
clickbench_q25/datafusion:vortex-file-compressed 18074212 / 17465037 / +3.5% 56618123 / 55481408 / +2.0% 0.32 / 0.31 / +1.4%
clickbench_q26/datafusion:vortex-file-compressed 15823038 / 16031158 / -1.3% 66276591 / 64799218 / +2.3% 0.24 / 0.25 / -3.5%
clickbench_q27/datafusion:vortex-file-compressed 95766311 / 93177063 / +2.8% 243042350 / 246117722 / -1.2% 0.39 / 0.38 / +4.1%
clickbench_q28/datafusion:vortex-file-compressed 552373992 / 551157494 / +0.2% 613382974 / 612219530 / +0.2% 0.90 / 0.90 / +0.0%
clickbench_q29/datafusion:vortex-file-compressed 23273024 / 23833740 / -2.4% 47950751 / 48065891 / -0.2% 0.49 / 0.50 / -2.1%
clickbench_q30/datafusion:vortex-file-compressed 58965251 / 56388595 / +4.6% 105876689 / 107249345 / -1.3% 0.56 / 0.53 / +5.9%
clickbench_q31/datafusion:vortex-file-compressed 66286364 / 66142682 / +0.2% 150670893 / 149955708 / +0.5% 0.44 / 0.44 / -0.3%
clickbench_q32/datafusion:vortex-file-compressed 286664070 / 284155610 / +0.9% 381929204 / 383688501 / -0.5% 0.75 / 0.74 / +1.3%
clickbench_q33/datafusion:vortex-file-compressed 317722478 / 316611081 / +0.4% 421819029 / 422332363 / -0.1% 0.75 / 0.75 / +0.5%
clickbench_q34/datafusion:vortex-file-compressed 318232370 / 316040135 / +0.7% 423820649 / 431613190 / -1.8% 0.75 / 0.73 / +2.5%
clickbench_q35/datafusion:vortex-file-compressed 56741658 / 55141879 / +2.9% 86034454 / 85228385 / +0.9% 0.66 / 0.65 / +1.9%
clickbench_q36/datafusion:vortex-file-compressed 37005572 / 37319171 / -0.8% 66735422 / 65500861 / +1.9% 0.55 / 0.57 / -2.7%
clickbench_q37/datafusion:vortex-file-compressed 21912801 / 21776770 / +0.6% 48412943 / 47554259 / +1.8% 0.45 / 0.46 / -1.2%
clickbench_q38/datafusion:vortex-file-compressed 11644022 / 11956484 / -2.6% 39299656 / 37638279 / +4.4% 0.30 / 0.32 / -6.7%
clickbench_q39/datafusion:vortex-file-compressed 77594425 / 77565918 / +0.0% 109398064 / 107967691 / +1.3% 0.71 / 0.72 / -1.3%
clickbench_q40/datafusion:vortex-file-compressed 11033562 / 11187904 / -1.4% 37196632 / 36134586 / +2.9% 0.30 / 0.31 / -4.2%
clickbench_q41/datafusion:vortex-file-compressed 10563926 / 10650550 / -0.8% 37165394 / 35577346 / +4.5% 0.28 / 0.30 / -5.1%
clickbench_q42/datafusion:vortex-file-compressed 10687213 / 11060506 / -3.4% 35819906 / 36654575 / -2.3% 0.30 / 0.30 / -1.1%
datafusion / parquet / ns (0.994x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
clickbench_q00/datafusion:parquet 1257274 / 1289504 / -2.5% 48399476 / 48408904 / -0.0% 0.03 / 0.03 / -2.5%
clickbench_q01/datafusion:parquet 15941040 / 15893654 / +0.3% 71917201 / 69496803 / +3.5% 0.22 / 0.23 / -3.1%
clickbench_q02/datafusion:parquet 19389081 / 18910922 / +2.5% 81472312 / 81992864 / -0.6% 0.24 / 0.23 / +3.2%
clickbench_q03/datafusion:parquet 16981197 / 17462512 / -2.8% 76256814 / 78062058 / -2.3% 0.22 / 0.22 / -0.5%
clickbench_q04/datafusion:parquet 62548154 / 63350254 / -1.3% 128524857 / 129197979 / -0.5% 0.49 / 0.49 / -0.7%
clickbench_q05/datafusion:parquet 88372184 / 88770802 / -0.4% 155113404 / 154127098 / +0.6% 0.57 / 0.58 / -1.1%
clickbench_q06/datafusion:parquet 1269468 / 1282830 / -1.0% 49444346 / 48484685 / +2.0% 0.03 / 0.03 / -3.0%
clickbench_q07/datafusion:parquet 16592766 / 16782372 / -1.1% 66304658 / 66362797 / -0.1% 0.25 / 0.25 / -1.0%
clickbench_q08/datafusion:parquet 83431618 / 88798216 / -6.0% 160953415 / 156289443 / +3.0% 0.52 / 0.57 / -8.8%
clickbench_q09/datafusion:parquet 187370974 / 185360202 / +1.1% 268818304 / 271418986 / -1.0% 0.70 / 0.68 / +2.1%
clickbench_q10/datafusion:parquet 35956026 / 36513794 / -1.5% 97619582 / 98869779 / -1.3% 0.37 / 0.37 / -0.3%
clickbench_q11/datafusion:parquet 42684973 / 42431898 / +0.6% 107107372 / 108042175 / -0.9% 0.40 / 0.39 / +1.5%
clickbench_q12/datafusion:parquet 96803258 / 96316629 / +0.5% 160288061 / 160189352 / +0.1% 0.60 / 0.60 / +0.4%
clickbench_q13/datafusion:parquet 147729378 / 147594245 / +0.1% 230984212 / 222936512 / +3.6% 0.64 / 0.66 / -3.4%
clickbench_q14/datafusion:parquet 101102542 / 102102064 / -1.0% 168937178 / 170337926 / -0.8% 0.60 / 0.60 / -0.2%
clickbench_q15/datafusion:parquet 70665032 / 70340250 / +0.5% 131939148 / 133081819 / -0.9% 0.54 / 0.53 / +1.3%
clickbench_q16/datafusion:parquet 155198582 / 157118644 / -1.2% 234122741 / 233853996 / +0.1% 0.66 / 0.67 / -1.3%
clickbench_q17/datafusion:parquet 155298032 / 157737014 / -1.5% 232445024 / 235826758 / -1.4% 0.67 / 0.67 / -0.1%
clickbench_q18/datafusion:parquet 307663138 / 307951725 / -0.1% 420708918 / 414555516 / +1.5% 0.73 / 0.74 / -1.6%
clickbench_q19/datafusion:parquet 18936896 / 19109764 / -0.9% 76208931 / 75983818 / +0.3% 0.25 / 0.25 / -1.2%
clickbench_q20/datafusion:parquet 178292576 / 180626259 / -1.3% 316388886 / 274131972 / +15.4% 🔴 0.56 / 0.66 / -14.5%
clickbench_q21/datafusion:parquet 172484924 / 172664215 / -0.1% 291536268 / 289476933 / +0.7% 0.59 / 0.60 / -0.8%
clickbench_q22/datafusion:parquet 257351266 / 259707815 / -0.9% 412688301 / 413408923 / -0.2% 0.62 / 0.63 / -0.7%
clickbench_q23/datafusion:parquet 1014017758 / 1022429167 / -0.8% 1174274731 / 1176058988 / -0.2% 0.86 / 0.87 / -0.7%
clickbench_q24/datafusion:parquet 29873124 / 30044666 / -0.6% 85210665 / 87383672 / -2.5% 0.35 / 0.34 / +2.0%
clickbench_q25/datafusion:parquet 37235774 / 37670514 / -1.2% 99123739 / 99219716 / -0.1% 0.38 / 0.38 / -1.1%
clickbench_q26/datafusion:parquet 30380314 / 31088665 / -2.3% 86850905 / 86098486 / +0.9% 0.35 / 0.36 / -3.1%
clickbench_q27/datafusion:parquet 191728048 / 193200886 / -0.8% 282861165 / 279785561 / +1.1% 0.68 / 0.69 / -1.8%
clickbench_q28/datafusion:parquet 618112404 / 614968633 / +0.5% 699173693 / 700467033 / -0.2% 0.88 / 0.88 / +0.7%
clickbench_q29/datafusion:parquet 29742768 / 28818777 / +3.2% 86810489 / 87900196 / -1.2% 0.34 / 0.33 / +4.5%
clickbench_q30/datafusion:parquet 90365045 / 90503284 / -0.2% 169128068 / 169106410 / +0.0% 0.53 / 0.54 / -0.2%
clickbench_q31/datafusion:parquet 102225578 / 103838082 / -1.6% 192952740 / 192088375 / +0.4% 0.53 / 0.54 / -2.0%
clickbench_q32/datafusion:parquet 309588260 / 304728959 / +1.6% 421693066 / 424969489 / -0.8% 0.73 / 0.72 / +2.4%
clickbench_q33/datafusion:parquet 377029607 / 376499000 / +0.1% 468682768 / 470006513 / -0.3% 0.80 / 0.80 / +0.4%
clickbench_q34/datafusion:parquet 376420794 / 378380562 / -0.5% 473382168 / 480520839 / -1.5% 0.80 / 0.79 / +1.0%
clickbench_q35/datafusion:parquet 64003162 / 65269300 / -1.9% 122012109 / 122129623 / -0.1% 0.52 / 0.53 / -1.8%
clickbench_q36/datafusion:parquet 73264916 / 73523429 / -0.4% 132894496 / 133158322 / -0.2% 0.55 / 0.55 / -0.2%
clickbench_q37/datafusion:parquet 35259606 / 35349286 / -0.3% 90317560 / 90691783 / -0.4% 0.39 / 0.39 / +0.2%
clickbench_q38/datafusion:parquet 47361231 / 47805046 / -0.9% 106564854 / 107887003 / -1.2% 0.44 / 0.44 / +0.3%
clickbench_q39/datafusion:parquet 142669250 / 143912859 / -0.9% 205625133 / 205819476 / -0.1% 0.69 / 0.70 / -0.8%
clickbench_q40/datafusion:parquet 19812073 / 20038738 / -1.1% 75743549 / 75034534 / +0.9% 0.26 / 0.27 / -2.1%
clickbench_q41/datafusion:parquet 18696179 / 18855535 / -0.8% 76551791 / 76008653 / +0.7% 0.24 / 0.25 / -1.5%
clickbench_q42/datafusion:parquet 19189512 / 19307819 / -0.6% 74294190 / 73797494 / +0.7% 0.26 / 0.26 / -1.3%
duckdb / vortex-file-compressed / ns (1.001x ➖, 0↑ 1↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
clickbench_q00/duckdb:vortex-file-compressed 2280181 / 2154750 / +5.8% 24941437 / 25114082 / -0.7% 0.09 / 0.09 / +6.6%
clickbench_q01/duckdb:vortex-file-compressed 6907518 / 7189330 / -3.9% 26827202 / 27468341 / -2.3% 0.26 / 0.26 / -1.6%
clickbench_q02/duckdb:vortex-file-compressed 7849624 / 8076634 / -2.8% 34778474 / 34104425 / +2.0% 0.23 / 0.24 / -4.7%
clickbench_q03/duckdb:vortex-file-compressed 14012722 / 14264485 / -1.8% 51435717 / 50963177 / +0.9% 0.27 / 0.28 / -2.7%
clickbench_q04/duckdb:vortex-file-compressed 56209324 / 55308602 / +1.6% 93624131 / 90429314 / +3.5% 0.60 / 0.61 / -1.8%
clickbench_q05/duckdb:vortex-file-compressed 63994580 / 63562222 / +0.7% 93019104 / 93638488 / -0.7% 0.69 / 0.68 / +1.4%
clickbench_q06/duckdb:vortex-file-compressed 3008982 / 2611214 / +15.2% 🔴 30147410 / 29415786 / +2.5% 0.10 / 0.09 / +12.4%
clickbench_q07/duckdb:vortex-file-compressed 8497258 / 8585906 / -1.0% 29906506 / 31763865 / -5.8% 0.28 / 0.27 / +5.1%
clickbench_q08/duckdb:vortex-file-compressed 67600701 / 67166464 / +0.6% 103701115 / 101166593 / +2.5% 0.65 / 0.66 / -1.8%
clickbench_q09/duckdb:vortex-file-compressed 88069264 / 89784717 / -1.9% 120439740 / 127007998 / -5.2% 0.73 / 0.71 / +3.4%
clickbench_q10/duckdb:vortex-file-compressed 26225322 / 26126168 / +0.4% 63364782 / 63180978 / +0.3% 0.41 / 0.41 / +0.1%
clickbench_q11/duckdb:vortex-file-compressed 28443929 / 28504876 / -0.2% 66533818 / 64414636 / +3.3% 0.43 / 0.44 / -3.4%
clickbench_q12/duckdb:vortex-file-compressed 69186904 / 70131346 / -1.3% 98948149 / 99654194 / -0.7% 0.70 / 0.70 / -0.6%
clickbench_q13/duckdb:vortex-file-compressed 125476274 / 122125994 / +2.7% 159665863 / 161161730 / -0.9% 0.79 / 0.76 / +3.7%
clickbench_q14/duckdb:vortex-file-compressed 73066110 / 74150508 / -1.5% 102552363 / 100901836 / +1.6% 0.71 / 0.73 / -3.0%
clickbench_q15/duckdb:vortex-file-compressed 75035690 / 74988022 / +0.1% 110991013 / 109341598 / +1.5% 0.68 / 0.69 / -1.4%
clickbench_q16/duckdb:vortex-file-compressed 134238389 / 136582434 / -1.7% 173254758 / 175992086 / -1.6% 0.77 / 0.78 / -0.2%
clickbench_q17/duckdb:vortex-file-compressed 139211576 / 143084438 / -2.7% 173572583 / 175139221 / -0.9% 0.80 / 0.82 / -1.8%
clickbench_q18/duckdb:vortex-file-compressed 254166287 / 257382554 / -1.2% 307048189 / 312574424 / -1.8% 0.83 / 0.82 / +0.5%
clickbench_q19/duckdb:vortex-file-compressed 9254812 / 9302108 / -0.5% 42789393 / 41866615 / +2.2% 0.22 / 0.22 / -2.7%
clickbench_q20/duckdb:vortex-file-compressed 65279574 / 64586118 / +1.1% 160626369 / 161560861 / -0.6% 0.41 / 0.40 / +1.7%
clickbench_q21/duckdb:vortex-file-compressed 96228800 / 96141861 / +0.1% 270508464 / 268381801 / +0.8% 0.36 / 0.36 / -0.7%
clickbench_q22/duckdb:vortex-file-compressed 174948776 / 173081060 / +1.1% 384293217 / 390391792 / -1.6% 0.46 / 0.44 / +2.7%
clickbench_q23/duckdb:vortex-file-compressed 35139043 / 33026536 / +6.4% 84640250 / 82768330 / +2.3% 0.42 / 0.40 / +4.0%
clickbench_q24/duckdb:vortex-file-compressed 13703246 / 13739446 / -0.3% 36822374 / 35380072 / +4.1% 0.37 / 0.39 / -4.2%
clickbench_q25/duckdb:vortex-file-compressed 18567732 / 18725836 / -0.8% 47960019 / 47423544 / +1.1% 0.39 / 0.39 / -2.0%
clickbench_q26/duckdb:vortex-file-compressed 11225024 / 11339533 / -1.0% 35108058 / 33858819 / +3.7% 0.32 / 0.33 / -4.5%
clickbench_q27/duckdb:vortex-file-compressed 53015445 / 53616611 / -1.1% 214172507 / 216508123 / -1.1% 0.25 / 0.25 / -0.0%
clickbench_q28/duckdb:vortex-file-compressed 508429788 / 512872780 / -0.9% 575985149 / 570191562 / +1.0% 0.88 / 0.90 / -1.9%
clickbench_q29/duckdb:vortex-file-compressed 16863010 / 17394166 / -3.1% 43008095 / 44168329 / -2.6% 0.39 / 0.39 / -0.4%
clickbench_q30/duckdb:vortex-file-compressed 59450522 / 58673847 / +1.3% 102227818 / 101662286 / +0.6% 0.58 / 0.58 / +0.8%
clickbench_q31/duckdb:vortex-file-compressed 107831216 / 109527666 / -1.5% 183568281 / 185226017 / -0.9% 0.59 / 0.59 / -0.7%
clickbench_q32/duckdb:vortex-file-compressed 373020902 / 366260390 / +1.8% 408889476 / 398194859 / +2.7% 0.91 / 0.92 / -0.8%
clickbench_q33/duckdb:vortex-file-compressed 343214043 / 346687527 / -1.0% 428421059 / 436107499 / -1.8% 0.80 / 0.79 / +0.8%
clickbench_q34/duckdb:vortex-file-compressed 358931773 / 358519890 / +0.1% 443024884 / 444861064 / -0.4% 0.81 / 0.81 / +0.5%
clickbench_q35/duckdb:vortex-file-compressed 56513434 / 57080322 / -1.0% 87199448 / 88696267 / -1.7% 0.65 / 0.64 / +0.7%
clickbench_q36/duckdb:vortex-file-compressed 11599486 / 11697876 / -0.8% 33327893 / 31805342 / +4.8% 0.35 / 0.37 / -5.4%
clickbench_q37/duckdb:vortex-file-compressed 7792120 / 7993682 / -2.5% 30718909 / 29303430 / +4.8% 0.25 / 0.27 / -7.0%
clickbench_q38/duckdb:vortex-file-compressed 8623750 / 8419136 / +2.4% 32212767 / 28897797 / +11.5% 🔴 0.27 / 0.29 / -8.1%
clickbench_q39/duckdb:vortex-file-compressed 19188962 / 19145964 / +0.2% 39015588 / 37951232 / +2.8% 0.49 / 0.50 / -2.5%
clickbench_q40/duckdb:vortex-file-compressed 6849742 / 6986888 / -2.0% 28913722 / 29026401 / -0.4% 0.24 / 0.24 / -1.6%
clickbench_q41/duckdb:vortex-file-compressed 7840229 / 7730446 / +1.4% 31317743 / 31678625 / -1.1% 0.25 / 0.24 / +2.6%
clickbench_q42/duckdb:vortex-file-compressed 6976030 / 6980544 / -0.1% 32764800 / 29663638 / +10.5% 🔴 0.21 / 0.24 / -9.5%
duckdb / parquet / ns (0.993x ➖, 1↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
clickbench_q00/duckdb:parquet 10737778 / 12497801 / -14.1% 🟢 18615763 / 18848103 / -1.2% 0.58 / 0.66 / -13.0%
clickbench_q01/duckdb:parquet 16072848 / 17543072 / -8.4% 24104033 / 24102809 / +0.0% 0.67 / 0.73 / -8.4%
clickbench_q02/duckdb:parquet 23683994 / 24180710 / -2.1% 37403341 / 37925377 / -1.4% 0.63 / 0.64 / -0.7%
clickbench_q03/duckdb:parquet 24136803 / 24432032 / -1.2% 39058411 / 41781586 / -6.5% 0.62 / 0.58 / +5.7%
clickbench_q04/duckdb:parquet 62500678 / 63469839 / -1.5% 79774936 / 77945855 / +2.3% 0.78 / 0.81 / -3.8%
clickbench_q05/duckdb:parquet 84285818 / 85609014 / -1.5% 104854112 / 100533367 / +4.3% 0.80 / 0.85 / -5.6%
clickbench_q06/duckdb:parquet 22474070 / 23056248 / -2.5% 35410680 / 29621066 / +19.5% 🔴 0.63 / 0.78 / -18.5%
clickbench_q07/duckdb:parquet 17810868 / 19181326 / -7.1% 26547757 / 25927766 / +2.4% 0.67 / 0.74 / -9.3%
clickbench_q08/duckdb:parquet 75819060 / 76660025 / -1.1% 89597997 / 93614026 / -4.3% 0.85 / 0.82 / +3.3%
clickbench_q09/duckdb:parquet 105143536 / 104516198 / +0.6% 123338112 / 123907878 / -0.5% 0.85 / 0.84 / +1.1%
clickbench_q10/duckdb:parquet 41839626 / 41846635 / -0.0% 58901626 / 59712387 / -1.4% 0.71 / 0.70 / +1.4%
clickbench_q11/duckdb:parquet 47435668 / 47068208 / +0.8% 64631860 / 66254136 / -2.4% 0.73 / 0.71 / +3.3%
clickbench_q12/duckdb:parquet 93434490 / 93473280 / -0.0% 113814649 / 114049544 / -0.2% 0.82 / 0.82 / +0.2%
clickbench_q13/duckdb:parquet 150237520 / 150607594 / -0.2% 172323420 / 172439603 / -0.1% 0.87 / 0.87 / -0.2%
clickbench_q14/duckdb:parquet 101489336 / 101712006 / -0.2% 123022925 / 126289095 / -2.6% 0.82 / 0.81 / +2.4%
clickbench_q15/duckdb:parquet 89169295 / 89936848 / -0.9% 104733471 / 107400073 / -2.5% 0.85 / 0.84 / +1.7%
clickbench_q16/duckdb:parquet 175528628 / 177732160 / -1.2% 188965299 / 190926032 / -1.0% 0.93 / 0.93 / -0.2%
clickbench_q17/duckdb:parquet 172941220 / 176224270 / -1.9% 188429121 / 185768026 / +1.4% 0.92 / 0.95 / -3.2%
clickbench_q18/duckdb:parquet 302128826 / 307985556 / -1.9% 337875283 / 333285419 / +1.4% 0.89 / 0.92 / -3.2%
clickbench_q19/duckdb:parquet 22156838 / 21788596 / +1.7% 29275502 / 30005780 / -2.4% 0.76 / 0.73 / +4.2%
clickbench_q20/duckdb:parquet 199442400 / 190048924 / +4.9% 242660751 / 227595744 / +6.6% 0.82 / 0.84 / -1.6%
clickbench_q21/duckdb:parquet 229944747 / 240772242 / -4.5% 264326829 / 273221489 / -3.3% 0.87 / 0.88 / -1.3%
clickbench_q22/duckdb:parquet 320357758 / 320652239 / -0.1% 374036102 / 371081105 / +0.8% 0.86 / 0.86 / -0.9%
clickbench_q23/duckdb:parquet 171194396 / 162995277 / +5.0% 220333984 / 239226423 / -7.9% 0.78 / 0.68 / +14.0%
clickbench_q24/duckdb:parquet 32336704 / 32848403 / -1.6% 49419327 / 47093759 / +4.9% 0.65 / 0.70 / -6.2%
clickbench_q25/duckdb:parquet 42789922 / 43218714 / -1.0% 61227122 / 59478742 / +2.9% 0.70 / 0.73 / -3.8%
clickbench_q26/duckdb:parquet 32422211 / 32849491 / -1.3% 50908398 / 45968849 / +10.7% 🔴 0.64 / 0.71 / -10.9%
clickbench_q27/duckdb:parquet 201710448 / 194174718 / +3.9% 233351158 / 235256831 / -0.8% 0.86 / 0.83 / +4.7%
clickbench_q28/duckdb:parquet 987233377 / 996387860 / -0.9% 973185116 / 974436974 / -0.1% 1.01 / 1.02 / -0.8%
clickbench_q29/duckdb:parquet 26912980 / 26148384 / +2.9% 34279374 / 35713024 / -4.0% 0.79 / 0.73 / +7.2%
clickbench_q30/duckdb:parquet 106810383 / 107273371 / -0.4% 136219768 / 135115257 / +0.8% 0.78 / 0.79 / -1.2%
clickbench_q31/duckdb:parquet 159218269 / 161577744 / -1.5% 188893408 / 208206451 / -9.3% 0.84 / 0.78 / +8.6%
clickbench_q32/duckdb:parquet 404735334 / 401031746 / +0.9% 418340532 / 421200634 / -0.7% 0.97 / 0.95 / +1.6%
clickbench_q33/duckdb:parquet 485073154 / 480740512 / +0.9% 458278300 / 453540611 / +1.0% 1.06 / 1.06 / -0.1%
clickbench_q34/duckdb:parquet 466797269 / 464853802 / +0.4% 475889416 / 461690390 / +3.1% 0.98 / 1.01 / -2.6%
clickbench_q35/duckdb:parquet 62603754 / 63112869 / -0.8% 79771212 / 81330898 / -1.9% 0.78 / 0.78 / +1.1%
clickbench_q36/duckdb:parquet 32073320 / 32564355 / -1.5% 40649665 / 40199025 / +1.1% 0.79 / 0.81 / -2.6%
clickbench_q37/duckdb:parquet 26041239 / 24946204 / +4.4% 34360108 / 33791866 / +1.7% 0.76 / 0.74 / +2.7%
clickbench_q38/duckdb:parquet 25384989 / 25540612 / -0.6% 33682809 / 34993525 / -3.7% 0.75 / 0.73 / +3.3%
clickbench_q39/duckdb:parquet 54746214 / 55037536 / -0.5% 63423647 / 63409578 / +0.0% 0.86 / 0.87 / -0.6%
clickbench_q40/duckdb:parquet 16684300 / 15559138 / +7.2% 25181525 / 24156523 / +4.2% 0.66 / 0.64 / +2.9%
clickbench_q41/duckdb:parquet 16444531 / 17003451 / -3.3% 24033310 / 24653505 / -2.5% 0.68 / 0.69 / -0.8%
clickbench_q42/duckdb:parquet 15552663 / 15435730 / +0.8% 25702634 / 24673534 / +4.2% 0.61 / 0.63 / -3.3%

No file size changes detected.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=1 on S3 📖

Commits: PR e843b514 vs base a59294e3
Verdict: No clear signal (environment too noisy confidence)
Attributed Vortex impact: -2.5%
Engines: DataFusion No clear signal (+2.9%, environment too noisy confidence) · DuckDB No clear signal (-7.6%, environment too noisy confidence)
Vortex (geomean): hot 1.016x ➖ · cold 1.009x ➖
Parquet (geomean): hot 1.041x ➖ · cold 0.976x ➖
Shifts: Parquet (control) +4.1% · Median polish -0.1%

How to read Verdict and Engines
  • Verdict: Overall PR-level signal after subtracting baseline drift estimated from Parquet control rows. It can be Likely improvement, Likely regression, or No clear signal.
  • Engines: Per-engine attribution. DataFusion is compared against DataFusion/Parquet controls; DuckDB is compared against DuckDB/Parquet controls. This answers whether each engine improved or regressed independently.
  • Confidence: Based on directional consistency, share of rows above the noise floor, and control-run noise.
  • Hot vs cold: Every measurement is run several times. The first run is reported as the cold run, and the median of the runs after it is reported as the hot run. The verdict and significance use hot runs; each target's geomean reports hot and cold beside each other where the individual runs were recorded and hot alone where they were not, the cold column shows first-run cost per row, and hot/cold is how much of each run the warm path saves. Rows whose results predate per-run reporting show only one value, taken from the value the runner reported.
  • Table cells: Each cell reads PR / base / %diff. The hot and cold columns mark a change as 🔴 slower or 🟢 faster once it clears this suite's threshold; anything smaller is noise here and is left unmarked, as is hot/cold, because a shift in the warm-up ratio is not a win or a loss by itself.

datafusion / vortex-file-compressed / ns (1.006x ➖, 1↑ 2↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:vortex-file-compressed 220905954 / 247358094 / -10.7% 891035653 / 738868352 / +20.6% 0.25 / 0.33 / -25.9%
tpch_q02/datafusion:vortex-file-compressed 320831174 / 330871678 / -3.0% 667144802 / 728806429 / -8.5% 0.48 / 0.45 / +5.9%
tpch_q03/datafusion:vortex-file-compressed 344747457 / 385729639 / -10.6% 986730203 / 1627757578 / -39.4% 🟢 0.35 / 0.24 / +47.4%
tpch_q04/datafusion:vortex-file-compressed 194722218 / 207236107 / -6.0% 412636800 / 415145968 / -0.6% 0.47 / 0.50 / -5.5%
tpch_q05/datafusion:vortex-file-compressed 391098135 / 396405219 / -1.3% 576245552 / 627729660 / -8.2% 0.68 / 0.63 / +7.5%
tpch_q06/datafusion:vortex-file-compressed 194276848 / 140079154 / +38.7% 🔴 274261265 / 284789953 / -3.7% 0.71 / 0.49 / +44.0%
tpch_q07/datafusion:vortex-file-compressed 448499463 / 398571958 / +12.5% 623662040 / 623580284 / +0.0% 0.72 / 0.64 / +12.5%
tpch_q08/datafusion:vortex-file-compressed 467172154 / 479188752 / -2.5% 573125414 / 592878190 / -3.3% 0.82 / 0.81 / +0.9%
tpch_q09/datafusion:vortex-file-compressed 327914074 / 299413330 / +9.5% 491624300 / 478898510 / +2.7% 0.67 / 0.63 / +6.7%
tpch_q10/datafusion:vortex-file-compressed 351494544 / 420015221 / -16.3% 596262149 / 577599821 / +3.2% 0.59 / 0.73 / -18.9%
tpch_q11/datafusion:vortex-file-compressed 308244831 / 260115453 / +18.5% 409850700 / 432372514 / -5.2% 0.75 / 0.60 / +25.0%
tpch_q12/datafusion:vortex-file-compressed 242325298 / 259385245 / -6.6% 553954278 / 388771647 / +42.5% 🔴 0.44 / 0.67 / -34.4%
tpch_q13/datafusion:vortex-file-compressed 140741913 / 135290597 / +4.0% 302055776 / 308555393 / -2.1% 0.47 / 0.44 / +6.3%
tpch_q14/datafusion:vortex-file-compressed 165882302 / 178970213 / -7.3% 368212276 / 350854358 / +4.9% 0.45 / 0.51 / -11.7%
tpch_q15/datafusion:vortex-file-compressed 311877370 / 322081392 / -3.2% 507448941 / 510712295 / -0.6% 0.61 / 0.63 / -2.5%
tpch_q16/datafusion:vortex-file-compressed 137859163 / 126501014 / +9.0% 304729097 / 272473140 / +11.8% 0.45 / 0.46 / -2.6%
tpch_q17/datafusion:vortex-file-compressed 419689379 / 256065252 / +63.9% 🔴 455673520 / 465092987 / -2.0% 0.92 / 0.55 / +67.3%
tpch_q18/datafusion:vortex-file-compressed 247701959 / 290355928 / -14.7% 447213627 / 463238728 / -3.5% 0.55 / 0.63 / -11.6%
tpch_q19/datafusion:vortex-file-compressed 232443405 / 363374282 / -36.0% 🟢 367069140 / 390901590 / -6.1% 0.63 / 0.93 / -31.9%
tpch_q20/datafusion:vortex-file-compressed 302091075 / 320994507 / -5.9% 444219242 / 473423850 / -6.2% 0.68 / 0.68 / +0.3%
tpch_q21/datafusion:vortex-file-compressed 538862012 / 543096778 / -0.8% 785220240 / 741583315 / +5.9% 0.69 / 0.73 / -6.3%
tpch_q22/datafusion:vortex-file-compressed 189313044 / 156825815 / +20.7% 357599540 / 487653353 / -26.7% 0.53 / 0.32 / +64.6%
datafusion / parquet / ns (0.977x ➖, 0↑ 0↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/datafusion:parquet 161013377 / 150342294 / +7.1% 479924552 / 646421025 / -25.8% 0.34 / 0.23 / +44.3%
tpch_q02/datafusion:parquet 286971521 / 318145674 / -9.8% 495942128 / 528810111 / -6.2% 0.58 / 0.60 / -3.8%
tpch_q03/datafusion:parquet 244666474 / 266705687 / -8.3% 679293590 / 774689657 / -12.3% 0.36 / 0.34 / +4.6%
tpch_q04/datafusion:parquet 132974085 / 140052038 / -5.1% 269798161 / 350721027 / -23.1% 0.49 / 0.40 / +23.4%
tpch_q05/datafusion:parquet 345950088 / 375881936 / -8.0% 478577548 / 537365012 / -10.9% 0.72 / 0.70 / +3.3%
tpch_q06/datafusion:parquet 109203114 / 127689750 / -14.5% 218461748 / 264155280 / -17.3% 0.50 / 0.48 / +3.4%
tpch_q07/datafusion:parquet 344330074 / 357948555 / -3.8% 462791943 / 506363719 / -8.6% 0.74 / 0.71 / +5.3%
tpch_q08/datafusion:parquet 412799582 / 521246472 / -20.8% 644377926 / 638399108 / +0.9% 0.64 / 0.82 / -21.5%
tpch_q09/datafusion:parquet 407590219 / 399567776 / +2.0% 560964413 / 527347451 / +6.4% 0.73 / 0.76 / -4.1%
tpch_q10/datafusion:parquet 335047977 / 348602481 / -3.9% 423579380 / 461858523 / -8.3% 0.79 / 0.75 / +4.8%
tpch_q11/datafusion:parquet 251818052 / 267636402 / -5.9% 341286111 / 346313588 / -1.5% 0.74 / 0.77 / -4.5%
tpch_q12/datafusion:parquet 168265799 / 159129987 / +5.7% 305192742 / 347081161 / -12.1% 0.55 / 0.46 / +20.3%
tpch_q13/datafusion:parquet 281608104 / 276171368 / +2.0% 416630987 / 434549436 / -4.1% 0.68 / 0.64 / +6.4%
tpch_q14/datafusion:parquet 162530238 / 149523154 / +8.7% 452219241 / 258218950 / +75.1% 🔴 0.36 / 0.58 / -37.9%
tpch_q15/datafusion:parquet 316440476 / 302171840 / +4.7% 491955415 / 446225897 / +10.2% 0.64 / 0.68 / -5.0%
tpch_q16/datafusion:parquet 105183136 / 96091424 / +9.5% 197749256 / 391639268 / -49.5% 🟢 0.53 / 0.25 / +116.8%
tpch_q17/datafusion:parquet 298742807 / 287853076 / +3.8% 459798538 / 447489249 / +2.8% 0.65 / 0.64 / +1.0%
tpch_q18/datafusion:parquet 398959988 / 320843864 / +24.3% 595108799 / 506876018 / +17.4% 0.67 / 0.63 / +5.9%
tpch_q19/datafusion:parquet 163909920 / 156387904 / +4.8% 376427286 / 324442414 / +16.0% 0.44 / 0.48 / -9.7%
tpch_q20/datafusion:parquet 246391899 / 246557927 / -0.1% 357145290 / 355411653 / +0.5% 0.69 / 0.69 / -0.6%
tpch_q21/datafusion:parquet 307393837 / 432302473 / -28.9% 408809051 / 597012831 / -31.5% 🟢 0.75 / 0.72 / +3.8%
tpch_q22/datafusion:parquet 160417269 / 160313673 / +0.1% 333007681 / 324489963 / +2.6% 0.48 / 0.49 / -2.5%
duckdb / vortex-file-compressed / ns (1.025x ➖, 0↑ 2↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:vortex-file-compressed 244493293 / 249597078 / -2.0% 268078400 / 298875807 / -10.3% 0.91 / 0.84 / +9.2%
tpch_q02/duckdb:vortex-file-compressed 408723316 / 407595128 / +0.3% 561328080 / 508219919 / +10.4% 0.73 / 0.80 / -9.2%
tpch_q03/duckdb:vortex-file-compressed 417941859 / 412986649 / +1.2% 553934919 / 500554235 / +10.7% 0.75 / 0.83 / -8.6%
tpch_q04/duckdb:vortex-file-compressed 254524250 / 243739722 / +4.4% 289966824 / 282914589 / +2.5% 0.88 / 0.86 / +1.9%
tpch_q05/duckdb:vortex-file-compressed 528897232 / 697900940 / -24.2% 578060762 / 794970127 / -27.3% 0.91 / 0.88 / +4.2%
tpch_q06/duckdb:vortex-file-compressed 170162769 / 141618340 / +20.2% 191365431 / 193603466 / -1.2% 0.89 / 0.73 / +21.6%
tpch_q07/duckdb:vortex-file-compressed 408973635 / 379944758 / +7.6% 469657400 / 517052800 / -9.2% 0.87 / 0.73 / +18.5%
tpch_q08/duckdb:vortex-file-compressed 569158565 / 562852607 / +1.1% 663707968 / 671255688 / -1.1% 0.86 / 0.84 / +2.3%
tpch_q09/duckdb:vortex-file-compressed 499629851 / 380690575 / +31.2% 🔴 466668039 / 403319411 / +15.7% 1.07 / 0.94 / +13.4%
tpch_q10/duckdb:vortex-file-compressed 524817989 / 534562426 / -1.8% 661568752 / 530988355 / +24.6% 0.79 / 1.01 / -21.2%
tpch_q11/duckdb:vortex-file-compressed 334515174 / 354415648 / -5.6% 359325315 / 370481431 / -3.0% 0.93 / 0.96 / -2.7%
tpch_q12/duckdb:vortex-file-compressed 265477721 / 259431028 / +2.3% 383678650 / 331654821 / +15.7% 0.69 / 0.78 / -11.5%
tpch_q13/duckdb:vortex-file-compressed 285171965 / 263741725 / +8.1% 223519916 / 218743465 / +2.2% 1.28 / 1.21 / +5.8%
tpch_q14/duckdb:vortex-file-compressed 247414370 / 211934175 / +16.7% 293730113 / 261396399 / +12.4% 0.84 / 0.81 / +3.9%
tpch_q15/duckdb:vortex-file-compressed 251816822 / 266824668 / -5.6% 401024626 / 287091118 / +39.7% 🔴 0.63 / 0.93 / -32.4%
tpch_q16/duckdb:vortex-file-compressed 204772746 / 231111457 / -11.4% 261324643 / 269193615 / -2.9% 0.78 / 0.86 / -8.7%
tpch_q17/duckdb:vortex-file-compressed 576023895 / 392257562 / +46.8% 🔴 572512521 / 440068338 / +30.1% 🔴 1.01 / 0.89 / +12.9%
tpch_q18/duckdb:vortex-file-compressed 392135483 / 464225551 / -15.5% 347257956 / 408985968 / -15.1% 1.13 / 1.14 / -0.5%
tpch_q19/duckdb:vortex-file-compressed 402583221 / 313715711 / +28.3% 321397010 / 306058070 / +5.0% 1.25 / 1.03 / +22.2%
tpch_q20/duckdb:vortex-file-compressed 410077611 / 417698583 / -1.8% 513510909 / 420348861 / +22.2% 0.80 / 0.99 / -19.6%
tpch_q21/duckdb:vortex-file-compressed 717944502 / 808105269 / -11.2% 964867621 / 925274359 / +4.3% 0.74 / 0.87 / -14.8%
tpch_q22/duckdb:vortex-file-compressed 235133048 / 254112149 / -7.5% 268391587 / 291904033 / -8.1% 0.88 / 0.87 / +0.6%
duckdb / parquet / ns (1.110x ➖, 0↑ 3↓)
name hot ns (PR / base / %diff) cold ns (PR / base / %diff) hot/cold (PR / base / %diff)
tpch_q01/duckdb:parquet 324846177 / 155769346 / +108.5% 🔴 375588842 / 245281191 / +53.1% 🔴 0.86 / 0.64 / +36.2%
tpch_q02/duckdb:parquet 449037728 / 450870470 / -0.4% 535461871 / 518844598 / +3.2% 0.84 / 0.87 / -3.5%
tpch_q03/duckdb:parquet 371386915 / 435397247 / -14.7% 444683638 / 619722832 / -28.2% 0.84 / 0.70 / +18.9%
tpch_q04/duckdb:parquet 292052260 / 261483672 / +11.7% 526059066 / 297370408 / +76.9% 🔴 0.56 / 0.88 / -36.9%
tpch_q05/duckdb:parquet 591468610 / 547473896 / +8.0% 559435610 / 560648713 / -0.2% 1.06 / 0.98 / +8.3%
tpch_q06/duckdb:parquet 370264064 / 165852535 / +123.2% 🔴 470784429 / 171106172 / +175.1% 🔴 0.79 / 0.97 / -18.9%
tpch_q07/duckdb:parquet 499718874 / 450528044 / +10.9% 483012204 / 483335528 / -0.1% 1.03 / 0.93 / +11.0%
tpch_q08/duckdb:parquet 764490021 / 616162684 / +24.1% 869345215 / 853513101 / +1.9% 0.88 / 0.72 / +21.8%
tpch_q09/duckdb:parquet 510604069 / 587897421 / -13.1% 576123805 / 983222702 / -41.4% 🟢 0.89 / 0.60 / +48.2%
tpch_q10/duckdb:parquet 561715533 / 612122344 / -8.2% 592907009 / 1076964806 / -44.9% 🟢 0.95 / 0.57 / +66.7%
tpch_q11/duckdb:parquet 259574961 / 271284896 / -4.3% 263501958 / 309469624 / -14.9% 0.99 / 0.88 / +12.4%
tpch_q12/duckdb:parquet 241719017 / 284581482 / -15.1% 246713348 / 392791683 / -37.2% 🟢 0.98 / 0.72 / +35.2%
tpch_q13/duckdb:parquet 358276945 / 346773236 / +3.3% 469366082 / 587932376 / -20.2% 0.76 / 0.59 / +29.4%
tpch_q14/duckdb:parquet 262539964 / 235587342 / +11.4% 313015366 / 298727797 / +4.8% 0.84 / 0.79 / +6.4%
tpch_q15/duckdb:parquet 438203824 / 191597413 / +128.7% 🔴 458723318 / 217100593 / +111.3% 🔴 0.96 / 0.88 / +8.2%
tpch_q16/duckdb:parquet 282273737 / 270027796 / +4.5% 352516176 / 296145732 / +19.0% 0.80 / 0.91 / -12.2%
tpch_q17/duckdb:parquet 267959977 / 313678834 / -14.6% 415170181 / 325672736 / +27.5% 0.65 / 0.96 / -33.0%
tpch_q18/duckdb:parquet 341605232 / 343324586 / -0.5% 365322421 / 369120013 / -1.0% 0.94 / 0.93 / +0.5%
tpch_q19/duckdb:parquet 256511101 / 228920278 / +12.1% 302491255 / 295217714 / +2.5% 0.85 / 0.78 / +9.4%
tpch_q20/duckdb:parquet 429919474 / 520969487 / -17.5% 458224511 / 703938676 / -34.9% 🟢 0.94 / 0.74 / +26.8%
tpch_q21/duckdb:parquet 504395948 / 466019234 / +8.2% 544725254 / 630524878 / -13.6% 0.93 / 0.74 / +25.3%
tpch_q22/duckdb:parquet 305502701 / 306782848 / -0.4% 301340284 / 324135047 / -7.0% 1.01 / 0.95 / +7.1%

connortsui20 added a commit that referenced this pull request Oct 27, 2026
Related to #10676. This PR is independent of the RowFn stack.

Uses the existing fill-and-pack collector for `i64`, `u64`, and `f64`
array-pair comparisons on AArch64 with NEON. The dispatch and the
unchecked slice reads stay inside the private primitive kernel, where
equal lengths and the collector's index range establish the bounds
proof. Constant comparisons, other primitive types, and validity
handling retain their existing paths.

Extends bitmap-boundary tests to wide types with differently sliced
inputs, and checks floating-point total ordering through full words and
a tail.

Validation: 236 comparison tests and all-target, all-feature Clippy with
warnings denied pass on macOS ARM. Native ARM and AVX2 builds pass the
455-case probe (452 reference-array checks plus three unchanged Boolean
controls) and 3,456 comparison edge checks plus four arithmetic error
checks.

On Graviton3, the two counterbalanced full-suite sessions show the
following elapsed-time reductions in the long array-pair cohorts:

| Type | First session | Confirmation | Confirmation ratio and paired
95% interval |
| --- | --- | --- | --- |
| `i64` | 15.6% | 15.4% | `0.846 [0.843, 0.856]` |
| `u64` | 14.1% | 14.0% | `0.860 [0.858, 0.864]` |
| `f64` | 11.8% | 11.8% | `0.882 [0.880, 0.886]` |

Each cohort contains 32 cases. Ratios are candidate/baseline, with a
geometric mean across cases within a paired block and the median across
21 blocks. Intervals bootstrap those paired block ratios. Neither ARM
session has a case crossing the 3% regression threshold with its
interval above 1.

The AVX2 baseline and candidate `.text` sections are byte-for-byte
identical. Control timings still vary, so no x86 speedup is attributed
to this change. These are public-path microbenchmarks, not query
results. Release-profile and AVX-512 timing were not repeated for this
ARM-only variant.


<details>
<summary>Measurement protocol and reproduction</summary>

Baseline: `a59294e35e7109fac894a7a38a68f42db0c3c967`. Candidate:
`f018aaeef739145e1bc50079a441c5d9fd53404a`.

Uses rustc 1.99.1 (LLVM 23.1.1), the repository's bench profile (16
codegen units, no LTO), MiMalloc, and CPU 2. Graviton3 uses `-C
target-feature=+neon -C force-frame-pointers=yes`. The AVX2 control uses
`-C target-feature=+avx2 -C force-frame-pointers=yes` on AMD EPYC 7R13.
Optimized LLVM IR and assembly were emitted during both builds, and the
resulting executables were timed without instrumentation.

Both labels run the same full 455-case suite in the same order. Each
case has exactly 1,000 single-iteration samples. Each session has 21
baseline/baseline calibration blocks and 21 paired baseline/candidate
blocks with alternating executable order. Separate arithmetic control
binaries bracket the blocks. The two hosts are measured serially, and a
second session confirms the result. The confirmation session reverses
the starting order, so the combined sessions contain equal AB and BA
counts. Preliminary fixed-order source comparisons were excluded, while
valid identical-binary calibration was retained. The long-array cohorts
each contain 32 cases, including partially valid inputs and lengths
around the 16K boundary.

To reproduce, save the harness below as
`vortex-array/benches/interaction_probe.rs` on each revision and add
this target to `vortex-array/Cargo.toml`:

```toml
[[bench]]
name = "interaction_probe"
harness = false
```

Set `RUSTFLAGS` to the host flags above. Build both revisions with those
same flags, retain separate immutable executables, and alternate the
commands below. Unset `VORTEX_PERF_CHECK` for timing.

```sh
cargo +1.99.1 build --locked -p vortex-array --bench interaction_probe --profile bench
VORTEX_PERF_CHECK=1 "$binary" --test --color never
taskset -c 2 "$binary" --bench --color never --timer os --sample-count 1000 --sample-size 1 --skip-ext-time true
```

</details>

<details>
<summary>Exact benchmark harness</summary>

The measured harness SHA-256 is
`0a7de7999381d237ad0471716107f7e1972a7c6b11c0936a7d3b7d8c15b6c37d`.

```rust
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors

//! Common public-path inputs for the RowFn interaction experiments.

#![expect(clippy::unwrap_used)]
#![expect(clippy::cast_possible_truncation)]
#![expect(clippy::cast_precision_loss)]

use std::fmt;
use divan::Bencher;
use mimalloc::MiMalloc;
use vortex_array::{ArrayRef, Canonical, IntoArray, VortexSessionExecute};
use vortex_array::arrays::{BoolArray, ConstantArray, PrimitiveArray};
use vortex_array::builtins::ArrayBuiltins;
use vortex_array::dtype::NativePType;
use vortex_array::scalar::Scalar;
use vortex_array::scalar_fn::fns::operators::Operator;
use vortex_array::validity::Validity;
use vortex_buffer::Buffer;

#[global_allocator]
static GLOBAL: MiMalloc = MiMalloc;

fn main() {
    if check_enabled() { eprintln!("detected SIMD level: {:?}", fearless_simd::Level::new()); }
    divan::main();
}

#[derive(Clone, Copy, Debug)]
enum Shape { Arrays, LeftConstant, RightConstant }
#[derive(Clone, Copy, Debug)]
enum InputValidity { Dense, AllValid, Nullable, Sparse }
#[derive(Clone, Copy, Debug)]
enum Comparison { Eq, Gte }
#[derive(Clone, Copy)]
struct Case { rows: usize, shape: Shape, validity: InputValidity, op: Comparison }
impl fmt::Display for Case {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "rows={},shape={:?},validity={:?},op={:?}", self.rows, self.shape, self.validity, self.op)
    }
}
const CASES: &[Case] = &[
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 64, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 8192, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::LeftConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Dense, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::AllValid, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 65536, shape: Shape::RightConstant, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 16383, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 16383, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 16383, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 16383, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 16384, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 16384, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 16384, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 16384, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 16385, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 16385, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 16385, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 16385, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
    Case { rows: 32768, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Eq },
    Case { rows: 32768, shape: Shape::Arrays, validity: InputValidity::Nullable, op: Comparison::Gte },
    Case { rows: 32768, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Eq },
    Case { rows: 32768, shape: Shape::Arrays, validity: InputValidity::Sparse, op: Comparison::Gte },
];

trait Input: NativePType + Into<Scalar> {
    fn value(index: usize, offset: usize) -> Self;
}
macro_rules! input {
    ($($ty:ty),*) => {$(
        impl Input for $ty {
            fn value(index: usize, offset: usize) -> Self { ((index * 17 + offset * 31) % 251) as Self }
        }
    )*};
}
input!(u8, i64, u64, f32, f64);
fn validity(kind: InputValidity, rows: usize, offset: usize) -> Validity {
    match kind {
        InputValidity::Dense => Validity::NonNullable,
        InputValidity::AllValid => Validity::AllValid,
        InputValidity::Nullable => Validity::from_iter((0..rows).map(|i| (i + offset) % 10 != 0)),
        InputValidity::Sparse => Validity::from_iter((0..rows).map(|i| i % 10 == 0)),
    }
}
fn array<T: Input>(case: Case, offset: usize) -> ArrayRef {
    PrimitiveArray::new((0..case.rows).map(|i| T::value(i,offset)).collect::<Buffer<_>>(), validity(case.validity,case.rows,offset)).into_array()
}
fn operands<T: Input>(case: Case) -> (ArrayRef, ArrayRef) {
    let lhs=match case.shape { Shape::LeftConstant => ConstantArray::new(T::value(13,0),case.rows).into_array(), _ => array::<T>(case,0) };
    let rhs=match case.shape { Shape::RightConstant => ConstantArray::new(T::value(13,0),case.rows).into_array(), _ => array::<T>(case,1) };
    (lhs,rhs)
}
fn scalar_inputs<T: Input>(case: Case, index: usize) -> (T,T) {
    let lhs=match case.shape { Shape::LeftConstant => T::value(13,0), _ => T::value(index,0) };
    let rhs=match case.shape { Shape::RightConstant => T::value(13,0), _ => T::value(index,1) };
    (lhs,rhs)
}
fn check_enabled() -> bool { std::env::var_os("VORTEX_PERF_CHECK").is_some() }
fn measure(bencher: Bencher, lhs: ArrayRef, rhs: ArrayRef, op: Operator) {
    let session=vortex_session::VortexSession::empty();
    bencher.with_inputs(|| (&lhs,&rhs,session.create_execution_ctx())).bench_refs(|(lhs,rhs,ctx)| {
        lhs.clone().binary(rhs.clone(),op).unwrap().execute::<Canonical>(ctx).unwrap()
    });
}
#[divan::bench(args=CASES, types=[u8,i64,u64,f32,f64])]
fn compare<T: Input>(bencher: Bencher, case: &Case) {
    let case=*case;
    let (lhs,rhs)=operands::<T>(case);
    let op=match case.op { Comparison::Eq => Operator::Eq, Comparison::Gte => Operator::Gte };
    if check_enabled() {
        let session=vortex_session::VortexSession::empty();
        let mut ctx=session.create_execution_ctx();
        let actual=lhs.clone().binary(rhs.clone(),op).unwrap().execute::<Canonical>(&mut ctx).unwrap().into_array();
        let expected_values=(0..case.rows).map(|i| { let(a,b)=scalar_inputs::<T>(case,i); match case.op {Comparison::Eq=>a.is_eq(b),Comparison::Gte=>a.is_ge(b)} }).collect();
        let expected=BoolArray::new(expected_values,lhs.validity().unwrap().and(rhs.validity().unwrap()).unwrap()).into_array();
        vortex_array::assert_arrays_eq!(&actual,&expected,&mut ctx);
    }
    measure(bencher,lhs,rhs,op);
}
trait Arithmetic: Input {
    fn multiply(self, other: Self) -> Self;
    fn add(self, other: Self) -> Self;
}
impl Arithmetic for i64 { fn multiply(self, other: Self)->Self{self*other} fn add(self,other:Self)->Self{self+other} }
impl Arithmetic for u64 { fn multiply(self, other: Self)->Self{self*other} fn add(self,other:Self)->Self{self+other} }
#[divan::bench(args=[64,8192,32768], types=[i64,u64])]
fn multiply<T: Arithmetic>(bencher: Bencher, rows: usize) {
    let case=Case{rows,shape:Shape::Arrays,validity:InputValidity::Dense,op:Comparison::Eq};
    let(lhs,rhs)=operands::<T>(case);
    if check_enabled(){
        let session=vortex_session::VortexSession::empty();let mut ctx=session.create_execution_ctx();
        let actual=lhs.clone().binary(rhs.clone(),Operator::Mul).unwrap().execute::<Canonical>(&mut ctx).unwrap().into_array();
        let expected=PrimitiveArray::new((0..rows).map(|i|{let(a,b)=scalar_inputs::<T>(case,i);a.multiply(b)}).collect::<Buffer<_>>(),Validity::NonNullable).into_array();
        vortex_array::assert_arrays_eq!(&actual,&expected,&mut ctx);
    }
    measure(bencher,lhs,rhs,Operator::Mul);
}
#[divan::bench(args=[64,8192,32768], types=[i64,u64])]
fn add_nullable<T: Arithmetic>(bencher: Bencher, rows: usize) {
    let case=Case{rows,shape:Shape::RightConstant,validity:InputValidity::Nullable,op:Comparison::Eq};
    let(lhs,rhs)=operands::<T>(case);
    if check_enabled(){
        let session=vortex_session::VortexSession::empty();let mut ctx=session.create_execution_ctx();
        let actual=lhs.clone().binary(rhs.clone(),Operator::Add).unwrap().execute::<Canonical>(&mut ctx).unwrap().into_array();
        let expected=PrimitiveArray::new((0..rows).map(|i|{let(a,b)=scalar_inputs::<T>(case,i);Arithmetic::add(a,b)}).collect::<Buffer<_>>(),lhs.validity().unwrap()).into_array();
        vortex_array::assert_arrays_eq!(&actual,&expected,&mut ctx);
    }
    measure(bencher,lhs,rhs,Operator::Add);
}
#[divan::bench(args=[64,8192,65536])]
fn bool_control(bencher: Bencher, rows: usize) {
    let lhs=BoolArray::from_iter((0..rows).map(|i|i%3==0)).into_array();
    let rhs=BoolArray::from_iter((0..rows).map(|i|i%5==0)).into_array();
    measure(bencher,lhs,rhs,Operator::Eq);
}

```

</details>

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch 2 times, most recently from 45aacd1 to 8579ee2 Compare October 27, 2026 15:05
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch 2 times, most recently from 4277040 to 3fc76fb Compare October 27, 2026 18:56
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from 3fc76fb to 369e825 Compare October 27, 2026 19:40
@connortsui20
connortsui20 removed this pull request from stack #10697 October 27, 2026 19:41
@connortsui20
connortsui20 added this pull request to stack #10900 October 27, 2026 19:41
Keep the comparison type and operator dispatch, constant orientation, borrowed operand dtypes, and comparison coverage in this layer. Shared decoding, validity planning, and packed output belong to the framework below. The required input classification runs before decoding, and this layer adds no one-pass decoder hook or eager validity conjunction.

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
total_cmp sorts a NaN with the sign bit set below -inf, so NaN is not always the largest value.

Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/primitive-compare branch from 369e825 to 0bd1d53 Compare October 27, 2026 21:19

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/performance A performance improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant