Skip to content

feat: iterative execution ExecutionStep::AppendChild and Chunked impl #7600

Closed
joseph-isaacs wants to merge 19 commits into
developfrom
claude/add-builder-execution-path-0qvq2
Closed

feat: iterative execution ExecutionStep::AppendChild and Chunked impl #7600
joseph-isaacs wants to merge 19 commits into
developfrom
claude/add-builder-execution-path-0qvq2

Conversation

@joseph-isaacs

@joseph-isaacs joseph-isaacs commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Chunked array decompression (in iterative execution) currently requires a copy from a decompressed chunk into the whole decompressed array.

This PR add support for a new ExecutionStep::AppendChild that will iteratively request that a child is executed into a Builder.

Next steps

  • Add a append_to_builder kernel registry that replaces VTable::append_to_build with a iterative model.

claude and others added 5 commits April 22, 2026 05:07
Introduces a builder-driven execution mode alongside the existing
`ExecuteSlot` / `Done` model. Encodings can now append directly into an
`ArrayBuilder` without materializing intermediate canonical arrays.

New types (in `vortex_array::builder_kernel`):
  * `BuilderStep { Done, ExecuteSlot, AppendSlot }`
  * `BuilderResult { array, builder, step }`
  * `AppendToBuilderKernel<V>` typed kernel trait
  * `DynAppendToBuilderKernel` type-erased dispatch trait
  * `BuilderKernelSession` session variable keyed by encoding id

New executor surface:
  * `ExecutionStep::AppendSlot(usize)` to bootstrap the builder path
  * `execute_into_builder(array, builder, ctx)` public entry point
  * internal `drive_builder` + `execute_until_predicate` helpers

The `Chunked` encoding gets a builder kernel that scans its chunk slots,
returning `BuilderStep::AppendSlot` for the first still-populated slot.
When a chunk is driven through the builder path the executor takes the
slot, leaving it as `None` — the kernel iterates to the next `Some` on
the next call and returns `Done` once all chunks are consumed.

Tests exercise both `Chunked(Primitive)` and nested
`Chunked(Chunked(Primitive))` through the builder path.

Known issue documented via comment in `drive_builder`: the plan relies on
`take_slot_unchecked` truly leaving the taken slot as `None`, but that
only happens when the `Arc` has refcount 1. The driver now explicitly
drops extra references after `optimize()` and passes arrays by value
through the kernel to keep refcount at one; any future caller that keeps
an outstanding clone of the array they hand to the builder path would
re-trigger the original infinite loop.

Signed-off-by: Claude <noreply@anthropic.com>
Previously `take_slot_unchecked` only actually mutated the parent when the
`Arc` had refcount 1; otherwise it cloned the child and left the slot as
`Some`. That was fine for the existing take->put-back pattern but broke
the builder path, which relies on `slot(i).is_none()` to track consumed
children (causing an infinite loop whenever a caller held an outstanding
clone of the array).

Fix: on the shared-Arc path, clone the child out and construct a fresh
parent with that slot set to None via a new unsafe
`DynArray::with_slots_unchecked` that skips `V::validate`. The None state
is invisible outside the executor — callers still must put the slot back
(or drive it to completion via the builder path) before the parent
escapes.

Update the chunked builder-kernel tests to deliberately hold an extra
clone of the array across the `execute_into_builder` call, exercising
the previously-broken shared-Arc path.

Signed-off-by: Claude <noreply@anthropic.com>
`Executable for ArrayRef::execute` is defined as "remove one node from
the execution path." `ExecutionStep::AppendSlot` is an exception: there
is no useful partial progress point inside a builder-driven sub-tree, so
single-step execute drives the slot all the way to canonical and
splices the result back in one call. Call that out on both the trait
impl and the `AppendSlot` variant so the collapsed semantics aren't a
surprise to callers.

Signed-off-by: Claude <noreply@anthropic.com>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
…-execution-path-0qvq2

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

# Conflicts:
#	vortex-array/src/executor.rs
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added action/benchmark Trigger full benchmarks to run on this PR and removed action/benchmark Trigger full benchmarks to run on this PR labels Apr 23, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
@codspeed-hq

codspeed-hq Bot commented Apr 23, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 25.62%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 16 improved benchmarks
❌ 4 regressed benchmarks
✅ 1143 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation chunked_opt_bool_into_canonical[(100, 100)] 220 µs 257.1 µs -14.4%
Simulation chunked_opt_bool_into_canonical[(10, 1000)] 1 ms 1.4 ms -25.62%
Simulation chunked_varbinview_into_canonical[(10, 1000)] 1.7 ms 2 ms -17.03%
Simulation chunked_varbinview_opt_into_canonical[(10, 1000)] 2.5 ms 2.8 ms -12.35%
Simulation varbinview_zip_fragmented_mask 7.3 ms 6.5 ms +11.47%
Simulation varbinview_zip_block_mask 3.7 ms 2.9 ms +27.62%
Simulation decompress[alp_for_bp_f64] 2.9 ms 1.8 ms +58.59%
Simulation alp_rd_decompress_f64 2.4 ms 1.1 ms ×2.2
Simulation decompress_rd[f32, (10000, 0.0)] 166 µs 85.2 µs +94.89%
Simulation decompress_rd[f32, (10000, 0.1)] 165.8 µs 81.3 µs ×2
Simulation decompress_rd[f32, (10000, 0.01)] 166.1 µs 81.3 µs ×2
Simulation decompress_rd[f32, (100000, 0.1)] 1,374.6 µs 582 µs ×2.4
Simulation decompress_rd[f32, (100000, 0.01)] 1,375.1 µs 582 µs ×2.4
Simulation decompress_rd[f32, (100000, 0.0)] 1,286.9 µs 495.1 µs ×2.6
Simulation decompress_rd[f64, (100000, 0.0)] 2,294.5 µs 978.3 µs ×2.3
Simulation decompress_rd[f64, (100000, 0.1)] 2.3 ms 1 ms ×2.3
Simulation decompress_rd[f64, (10000, 0.1)] 258.5 µs 121.5 µs ×2.1
Simulation decompress_rd[f64, (10000, 0.01)] 258.4 µs 121.4 µs ×2.1
Simulation decompress_rd[f64, (100000, 0.01)] 2.3 ms 1 ms ×2.3
Simulation decompress_rd[f64, (10000, 0.0)] 258 µs 121.6 µs ×2.1

Comparing claude/add-builder-execution-path-0qvq2 (861457f) with develop (ea31cc2)

Open in CodSpeed

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Polar Signals Profiling Results

Latest Run

Status Commit Job Attempt Link
🟢 Done 861457f 1 Explore Profiling Data
Previous Runs (7)
Status Commit Job Attempt Link
🟢 Done 9ac1565 1 Explore Profiling Data
🟢 Done 6fe1569 1 Explore Profiling Data
🟢 Done 53bdc5f 2 Explore Profiling Data
🟢 Done 53bdc5f 1 Explore Profiling Data
🟢 Done 58e4dd2 1 Explore Profiling Data
🟢 Done 1e6a20c 2 Explore Profiling Data
🟢 Done 1e6a20c 1 Explore Profiling Data

Powered by Polar Signals Cloud

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark PolarSignals Profiling failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

File Sizes: PolarSignals Profiling

No baseline file sizes found for base commit.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark FineWeb NVMe failed! Check the workflow run for details.

@github-actions

Copy link
Copy Markdown
Contributor

File Sizes: FineWeb NVMe

No file size changes detected.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark TPC-DS SF=1 on NVME failed! Check the workflow run for details.

@github-actions

Copy link
Copy Markdown
Contributor

File Sizes: TPC-DS SF=1 on NVME

No file size changes detected.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark Statistical and Population Genetics failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark FineWeb S3 failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark TPC-H SF=10 on NVME failed! Check the workflow run for details.

@github-actions

Copy link
Copy Markdown
Contributor

File Sizes: TPC-H SF=10 on NVME

No file size changes detected.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark TPC-H SF=1 on S3 failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Benchmarks: Compression

Vortex (geomean): 0.982x ➖
Parquet (geomean): 0.970x ➖


unknown / unknown (0.960x ➖, 24↑ 3↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
compress time/Arade 1139571679 1127089889 1.01
compress time/Bimbo 6801115642 6991170233 0.97
compress time/CMSprovider 2850023204 3102026397 0.92
compress time/Euro2016 🚀 413105079 461241784 0.90
compress time/Food 413320112 397536446 1.04
compress time/HashTags 812498075 832478949 0.98
compress time/TPC-H l_comment canonical 1300133922 1404886116 0.93
compress time/TPC-H l_comment chunked 1296762885 1377296563 0.94
compress time/taxi 716231652 711822242 1.01
compress time/wide table cols=100 chunks=1 rows=1000 🚀 11128860 13836923 0.80
compress time/wide table cols=100 chunks=50 rows=1000 12701053 13033032 0.97
compress time/wide table cols=1000 chunks=1 rows=1000 123979911 133889518 0.93
compress time/wide table cols=1000 chunks=50 rows=1000 🚀 124230427 138620718 0.90
compress time/wide table cols=10000 chunks=1 rows=1000 1438035490 1500871735 0.96
compress time/wide table cols=10000 chunks=50 rows=1000 1414991080 1469495162 0.96
decompress time/Arade 28895165 28106196 1.03
decompress time/Bimbo 83123165 92105919 0.90
decompress time/CMSprovider 🚀 77104310 104930996 0.73
decompress time/Euro2016 🚀 17511177 21531245 0.81
decompress time/Food 🚀 8552365 9794140 0.87
decompress time/HashTags 69643673 76259936 0.91
decompress time/TPC-H l_comment canonical 🚀 40305165 46798313 0.86
decompress time/TPC-H l_comment chunked 40392036 43930617 0.92
decompress time/taxi 🚀 14662025 16471146 0.89
decompress time/wide table cols=100 chunks=1 rows=1000 2636162 2913549 0.90
decompress time/wide table cols=100 chunks=50 rows=1000 2694056 2954974 0.91
decompress time/wide table cols=1000 chunks=1 rows=1000 24402849 26225534 0.93
decompress time/wide table cols=1000 chunks=50 rows=1000 🚀 24209117 26910283 0.90
decompress time/wide table cols=10000 chunks=1 rows=1000 🚀 261715255 312203040 0.84
decompress time/wide table cols=10000 chunks=50 rows=1000 🚀 264363239 317933979 0.83
parquet size/Arade 258014282 258014282 1.00
parquet size/Bimbo 384517292 384517292 1.00
parquet size/CMSprovider 376885545 376885545 1.00
parquet size/Euro2016 122975499 122975499 1.00
parquet size/Food 35699500 35699500 1.00
parquet size/HashTags 133510943 133510943 1.00
parquet size/TPC-H l_comment canonical 158358238 158358238 1.00
parquet size/TPC-H l_comment chunked 158358238 158358238 1.00
parquet size/taxi 55283635 55283635 1.00
parquet size/wide table cols=100 chunks=1 rows=1000 932404 932404 1.00
parquet size/wide table cols=100 chunks=50 rows=1000 932404 932404 1.00
parquet size/wide table cols=1000 chunks=1 rows=1000 9324004 9324004 1.00
parquet size/wide table cols=1000 chunks=50 rows=1000 9324004 9324004 1.00
parquet size/wide table cols=10000 chunks=1 rows=1000 93240004 93240004 1.00
parquet size/wide table cols=10000 chunks=50 rows=1000 93240004 93240004 1.00
parquet_rs-zstd compress time/Arade 2930204021 2894525730 1.01
parquet_rs-zstd compress time/Bimbo 14835371069 15455157568 0.96
parquet_rs-zstd compress time/CMSprovider 7708958032 7711985978 1.00
parquet_rs-zstd compress time/Euro2016 1383372999 1475923365 0.94
parquet_rs-zstd compress time/Food 889871931 940919027 0.95
parquet_rs-zstd compress time/HashTags 2397255381 2286768197 1.05
parquet_rs-zstd compress time/TPC-H l_comment canonical 3136287749 3144896671 1.00
parquet_rs-zstd compress time/TPC-H l_comment chunked 3170891495 3273836986 0.97
parquet_rs-zstd compress time/taxi 1373468492 1360793073 1.01
parquet_rs-zstd compress time/wide table cols=100 chunks=1 rows=1000 🚀 6748489 8941303 0.75
parquet_rs-zstd compress time/wide table cols=100 chunks=50 rows=1000 🚀 7061840 8918954 0.79
parquet_rs-zstd compress time/wide table cols=1000 chunks=1 rows=1000 84604180 88128278 0.96
parquet_rs-zstd compress time/wide table cols=1000 chunks=50 rows=1000 84236513 87331734 0.96
parquet_rs-zstd compress time/wide table cols=10000 chunks=1 rows=1000 868136474 903596689 0.96
parquet_rs-zstd compress time/wide table cols=10000 chunks=50 rows=1000 865781879 891110139 0.97
parquet_rs-zstd decompress time/Arade 643741219 633965220 1.02
parquet_rs-zstd decompress time/Bimbo 1745693679 1701006069 1.03
parquet_rs-zstd decompress time/CMSprovider 1980270797 2030003489 0.98
parquet_rs-zstd decompress time/Euro2016 387057309 391132624 0.99
parquet_rs-zstd decompress time/Food 221770119 215169056 1.03
parquet_rs-zstd decompress time/HashTags 🚀 657234366 791344027 0.83
parquet_rs-zstd decompress time/TPC-H l_comment canonical 569894153 558652182 1.02
parquet_rs-zstd decompress time/TPC-H l_comment chunked 570308143 583525830 0.98
parquet_rs-zstd decompress time/taxi 246413411 243297156 1.01
parquet_rs-zstd decompress time/wide table cols=100 chunks=1 rows=1000 🚀 2753489 3604288 0.76
parquet_rs-zstd decompress time/wide table cols=100 chunks=50 rows=1000 🚀 2779357 3471826 0.80
parquet_rs-zstd decompress time/wide table cols=1000 chunks=1 rows=1000 32787225 34982624 0.94
parquet_rs-zstd decompress time/wide table cols=1000 chunks=50 rows=1000 33269966 36181677 0.92
parquet_rs-zstd decompress time/wide table cols=10000 chunks=1 rows=1000 337165759 354187293 0.95
parquet_rs-zstd decompress time/wide table cols=10000 chunks=50 rows=1000 342345168 361115873 0.95
vortex-file-compressed size/Arade 145363796 145363796 1.00
vortex-file-compressed size/Bimbo 468763332 468763332 1.00
vortex-file-compressed size/CMSprovider 417907812 417907812 1.00
vortex-file-compressed size/Euro2016 163497796 163599156 1.00
vortex-file-compressed size/Food 41926936 41926936 1.00
vortex-file-compressed size/HashTags 195647828 195647828 1.00
vortex-file-compressed size/TPC-H l_comment canonical 179087360 179087360 1.00
vortex-file-compressed size/TPC-H l_comment chunked 179087360 179087360 1.00
vortex-file-compressed size/taxi 52363948 52363948 1.00
vortex-file-compressed size/wide table cols=100 chunks=1 rows=1000 930848 930848 1.00
vortex-file-compressed size/wide table cols=100 chunks=50 rows=1000 930848 930848 1.00
vortex-file-compressed size/wide table cols=1000 chunks=1 rows=1000 9293648 9293648 1.00
vortex-file-compressed size/wide table cols=1000 chunks=50 rows=1000 9293648 9293648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=1 rows=1000 92957648 92957648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=50 rows=1000 92957648 92957648 1.00
vortex:parquet-zstd ratio compress time/Arade 0 0 1.00
vortex:parquet-zstd ratio compress time/Bimbo 0 0 1.01
vortex:parquet-zstd ratio compress time/CMSprovider 0 0 0.92
vortex:parquet-zstd ratio compress time/Euro2016 0 0 0.96
vortex:parquet-zstd ratio compress time/Food 0 0 1.10
vortex:parquet-zstd ratio compress time/HashTags 0 0 0.93
vortex:parquet-zstd ratio compress time/TPC-H l_comment canonical 0 0 0.93
vortex:parquet-zstd ratio compress time/TPC-H l_comment chunked 0 0 0.97
vortex:parquet-zstd ratio compress time/taxi 0 0 1.00
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=1 rows=1000 1 1 1.07
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=50 rows=1000 🚨 1 1 1.23
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=1 rows=1000 1 1 0.96
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=50 rows=1000 1 1 0.93
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=1 rows=1000 1 1 1.00
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=50 rows=1000 1 1 0.99
vortex:parquet-zstd ratio decompress time/Arade 0 0 1.01
vortex:parquet-zstd ratio decompress time/Bimbo 🚀 0 0 0.88
vortex:parquet-zstd ratio decompress time/CMSprovider 🚀 0 0 0.75
vortex:parquet-zstd ratio decompress time/Euro2016 🚀 0 0 0.82
vortex:parquet-zstd ratio decompress time/Food 🚀 0 0 0.85
vortex:parquet-zstd ratio decompress time/HashTags 0 0 1.10
vortex:parquet-zstd ratio decompress time/TPC-H l_comment canonical 🚀 0 0 0.84
vortex:parquet-zstd ratio decompress time/TPC-H l_comment chunked 0 0 0.94
vortex:parquet-zstd ratio decompress time/taxi 🚀 0 0 0.88
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=1 rows=1000 🚨 0 0 1.18
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=50 rows=1000 🚨 0 0 1.14
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=1 rows=1000 0 0 0.99
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=50 rows=1000 0 0 0.98
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=1 rows=1000 🚀 0 0 0.88
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=50 rows=1000 🚀 0 0 0.88
vortex:parquet-zstd size/Arade 0 0 1.00
vortex:parquet-zstd size/Bimbo 1 1 1.00
vortex:parquet-zstd size/CMSprovider 1 1 1.00
vortex:parquet-zstd size/Euro2016 1 1 1.00
vortex:parquet-zstd size/Food 1 1 1.00
vortex:parquet-zstd size/HashTags 1 1 1.00
vortex:parquet-zstd size/TPC-H l_comment canonical 1 1 1.00
vortex:parquet-zstd size/TPC-H l_comment chunked 1 1 1.00
vortex:parquet-zstd size/taxi 0 0 1.00
vortex:parquet-zstd size/wide table cols=100 chunks=1 rows=1000 0 0 1.00
vortex:parquet-zstd size/wide table cols=100 chunks=50 rows=1000 0 0 1.00
vortex:parquet-zstd size/wide table cols=1000 chunks=1 rows=1000 0 0 1.00
vortex:parquet-zstd size/wide table cols=1000 chunks=50 rows=1000 0 0 1.00
vortex:parquet-zstd size/wide table cols=10000 chunks=1 rows=1000 0 0 1.00
vortex:parquet-zstd size/wide table cols=10000 chunks=50 rows=1000 0 0 1.00

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark TPC-H SF=10 on S3 failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=1 on NVME

Verdict: No clear signal (low confidence)
Attributed Vortex impact: +2.4%
Vortex (geomean): 1.069x ➖
Parquet (geomean): 1.047x ➖
Shifts: Parquet (control) +4.7% · Median polish +6.7%


datafusion / vortex-file-compressed (1.075x ➖, 0↑ 4↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 53826544 49354075 1.09
tpch_q02/datafusion:vortex-file-compressed 23674927 22651865 1.05
tpch_q03/datafusion:vortex-file-compressed 30365678 28881505 1.05
tpch_q04/datafusion:vortex-file-compressed 🚨 23021941 20928849 1.10
tpch_q05/datafusion:vortex-file-compressed 53115575 49519164 1.07
tpch_q06/datafusion:vortex-file-compressed 13764040 13347411 1.03
tpch_q07/datafusion:vortex-file-compressed 🚨 61419425 55687872 1.10
tpch_q08/datafusion:vortex-file-compressed 42816651 40815586 1.05
tpch_q09/datafusion:vortex-file-compressed 54812009 50991424 1.07
tpch_q10/datafusion:vortex-file-compressed 44672717 40935110 1.09
tpch_q11/datafusion:vortex-file-compressed 16912711 15830044 1.07
tpch_q12/datafusion:vortex-file-compressed 28551188 26059000 1.10
tpch_q13/datafusion:vortex-file-compressed 26177279 25104588 1.04
tpch_q14/datafusion:vortex-file-compressed 18389757 17267464 1.06
tpch_q15/datafusion:vortex-file-compressed 28849847 26973207 1.07
tpch_q16/datafusion:vortex-file-compressed 🚨 20969552 18835190 1.11
tpch_q17/datafusion:vortex-file-compressed 73513726 67749149 1.09
tpch_q18/datafusion:vortex-file-compressed 🚨 93733566 79665957 1.18
tpch_q19/datafusion:vortex-file-compressed 24852491 23672808 1.05
tpch_q20/datafusion:vortex-file-compressed 32820359 30370703 1.08
tpch_q21/datafusion:vortex-file-compressed 77556608 73423664 1.06
tpch_q22/datafusion:vortex-file-compressed 12895204 12244441 1.05
datafusion / vortex-compact (1.070x ➖, 0↑ 1↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 63837055 58686944 1.09
tpch_q02/datafusion:vortex-compact 27199928 25426719 1.07
tpch_q03/datafusion:vortex-compact 32440972 30216225 1.07
tpch_q04/datafusion:vortex-compact 25689745 24127482 1.06
tpch_q05/datafusion:vortex-compact 55961361 52222300 1.07
tpch_q06/datafusion:vortex-compact 15797995 14662857 1.08
tpch_q07/datafusion:vortex-compact 65157926 59706715 1.09
tpch_q08/datafusion:vortex-compact 48193224 44628529 1.08
tpch_q09/datafusion:vortex-compact 62520712 57105601 1.09
tpch_q10/datafusion:vortex-compact 49968960 47094332 1.06
tpch_q11/datafusion:vortex-compact 18172530 17226011 1.05
tpch_q12/datafusion:vortex-compact 34691509 33237042 1.04
tpch_q13/datafusion:vortex-compact 33057848 31162049 1.06
tpch_q14/datafusion:vortex-compact 21735677 20080796 1.08
tpch_q15/datafusion:vortex-compact 35407559 34057181 1.04
tpch_q16/datafusion:vortex-compact 24498866 23006676 1.06
tpch_q17/datafusion:vortex-compact 🚨 76979716 69366873 1.11
tpch_q18/datafusion:vortex-compact 93735850 85521430 1.10
tpch_q19/datafusion:vortex-compact 32727899 31187418 1.05
tpch_q20/datafusion:vortex-compact 36025107 34956181 1.03
tpch_q21/datafusion:vortex-compact 86308892 79829056 1.08
tpch_q22/datafusion:vortex-compact 13631387 12811795 1.06
datafusion / parquet (1.063x ➖, 0↑ 3↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 136450871 124634292 1.09
tpch_q02/datafusion:parquet 66165014 62761368 1.05
tpch_q03/datafusion:parquet 76580149 73669571 1.04
tpch_q04/datafusion:parquet 46673896 45003819 1.04
tpch_q05/datafusion:parquet 99960901 94811090 1.05
tpch_q06/datafusion:parquet 🚨 44251821 39325769 1.13
tpch_q07/datafusion:parquet 111756057 104261657 1.07
tpch_q08/datafusion:parquet 95871913 94869718 1.01
tpch_q09/datafusion:parquet 137098740 131261155 1.04
tpch_q10/datafusion:parquet 120582341 113382950 1.06
tpch_q11/datafusion:parquet 45190439 42307668 1.07
tpch_q12/datafusion:parquet 🚨 90900796 76833537 1.18
tpch_q13/datafusion:parquet 211508693 192698960 1.10
tpch_q14/datafusion:parquet 50200471 47838805 1.05
tpch_q15/datafusion:parquet 64424380 59673547 1.08
tpch_q16/datafusion:parquet 🚨 48984798 43482141 1.13
tpch_q17/datafusion:parquet 140228434 130220681 1.08
tpch_q18/datafusion:parquet 173268295 160914224 1.08
tpch_q19/datafusion:parquet 79358060 84405428 0.94
tpch_q20/datafusion:parquet 73661573 70720746 1.04
tpch_q21/datafusion:parquet 143653919 135972826 1.06
tpch_q22/datafusion:parquet 32155825 31785989 1.01
datafusion / arrow (1.103x ❌, 0↑ 9↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 56116369 51104936 1.10
tpch_q02/datafusion:arrow 19246456 18755494 1.03
tpch_q03/datafusion:arrow 🚨 33149652 29364261 1.13
tpch_q04/datafusion:arrow 🚨 28802538 25068991 1.15
tpch_q05/datafusion:arrow 🚨 90656531 71561349 1.27
tpch_q06/datafusion:arrow 🚨 22181712 19912841 1.11
tpch_q07/datafusion:arrow 109768176 99840358 1.10
tpch_q08/datafusion:arrow 🚨 48601131 42736821 1.14
tpch_q09/datafusion:arrow 68337810 65311419 1.05
tpch_q10/datafusion:arrow 51296446 48323219 1.06
tpch_q11/datafusion:arrow 9684378 9231281 1.05
tpch_q12/datafusion:arrow 57426527 52993164 1.08
tpch_q13/datafusion:arrow 51342288 47407291 1.08
tpch_q14/datafusion:arrow 🚨 25077090 21252114 1.18
tpch_q15/datafusion:arrow 🚨 46272826 40987222 1.13
tpch_q16/datafusion:arrow 19348284 18090209 1.07
tpch_q17/datafusion:arrow 73527817 66876594 1.10
tpch_q18/datafusion:arrow 🚨 149922046 135254104 1.11
tpch_q19/datafusion:arrow 41128158 37621336 1.09
tpch_q20/datafusion:arrow 🚨 38686697 34668065 1.12
tpch_q21/datafusion:arrow 160322315 148483632 1.08
tpch_q22/datafusion:arrow 18459770 17087211 1.08
duckdb / vortex-file-compressed (1.064x ➖, 0↑ 4↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 32133442 31448126 1.02
tpch_q02/duckdb:vortex-file-compressed 25516267 25163111 1.01
tpch_q03/duckdb:vortex-file-compressed 31642430 29630629 1.07
tpch_q04/duckdb:vortex-file-compressed 30883435 29451856 1.05
tpch_q05/duckdb:vortex-file-compressed 34818483 32733580 1.06
tpch_q06/duckdb:vortex-file-compressed 11361984 10329338 1.10
tpch_q07/duckdb:vortex-file-compressed 40244791 36772295 1.09
tpch_q08/duckdb:vortex-file-compressed 39986680 38160219 1.05
tpch_q09/duckdb:vortex-file-compressed 🚨 80875481 73012461 1.11
tpch_q10/duckdb:vortex-file-compressed 36821319 34482356 1.07
tpch_q11/duckdb:vortex-file-compressed 15321196 14091025 1.09
tpch_q12/duckdb:vortex-file-compressed 22468722 21972766 1.02
tpch_q13/duckdb:vortex-file-compressed 🚨 38484355 34449858 1.12
tpch_q14/duckdb:vortex-file-compressed 22689544 22319331 1.02
tpch_q15/duckdb:vortex-file-compressed 17393149 16251465 1.07
tpch_q16/duckdb:vortex-file-compressed 29391373 28282572 1.04
tpch_q17/duckdb:vortex-file-compressed 26112930 24527869 1.06
tpch_q18/duckdb:vortex-file-compressed 52042681 48829804 1.07
tpch_q19/duckdb:vortex-file-compressed 29406106 28716942 1.02
tpch_q20/duckdb:vortex-file-compressed 🚨 36900482 33398353 1.10
tpch_q21/duckdb:vortex-file-compressed 113456875 105708403 1.07
tpch_q22/duckdb:vortex-file-compressed 🚨 18735089 16890086 1.11
duckdb / vortex-compact (1.068x ➖, 0↑ 5↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 38575542 37558781 1.03
tpch_q02/duckdb:vortex-compact 37128516 36405316 1.02
tpch_q03/duckdb:vortex-compact 🚨 35029371 31393407 1.12
tpch_q04/duckdb:vortex-compact 36073992 34989194 1.03
tpch_q05/duckdb:vortex-compact 39006318 37202352 1.05
tpch_q06/duckdb:vortex-compact 16179701 15253038 1.06
tpch_q07/duckdb:vortex-compact 44279746 42486597 1.04
tpch_q08/duckdb:vortex-compact 47921379 45277556 1.06
tpch_q09/duckdb:vortex-compact 89605946 81837928 1.09
tpch_q10/duckdb:vortex-compact 41480850 39295225 1.06
tpch_q11/duckdb:vortex-compact 20413787 18825397 1.08
tpch_q12/duckdb:vortex-compact 36139199 34490582 1.05
tpch_q13/duckdb:vortex-compact 46907664 43582398 1.08
tpch_q14/duckdb:vortex-compact 🚨 31929438 28959802 1.10
tpch_q15/duckdb:vortex-compact 20480518 19442962 1.05
tpch_q16/duckdb:vortex-compact 35986651 34142292 1.05
tpch_q17/duckdb:vortex-compact 31787189 30401259 1.05
tpch_q18/duckdb:vortex-compact 51566759 49344166 1.05
tpch_q19/duckdb:vortex-compact 🚨 37341528 33557157 1.11
tpch_q20/duckdb:vortex-compact 44719015 41398191 1.08
tpch_q21/duckdb:vortex-compact 🚨 120632861 109131157 1.11
tpch_q22/duckdb:vortex-compact 🚨 22068463 19459483 1.13
duckdb / parquet (1.032x ➖, 0↑ 0↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 77107050 76748210 1.00
tpch_q02/duckdb:parquet 39896680 38325103 1.04
tpch_q03/duckdb:parquet 71469904 69629687 1.03
tpch_q04/duckdb:parquet 48067640 47335102 1.02
tpch_q05/duckdb:parquet 68234209 66144456 1.03
tpch_q06/duckdb:parquet 20495635 19951536 1.03
tpch_q07/duckdb:parquet 70104820 69448109 1.01
tpch_q08/duckdb:parquet 87348779 86886565 1.01
tpch_q09/duckdb:parquet 151292556 155778954 0.97
tpch_q10/duckdb:parquet 125805386 115896771 1.09
tpch_q11/duckdb:parquet 23298583 22461822 1.04
tpch_q12/duckdb:parquet 46679878 45169614 1.03
tpch_q13/duckdb:parquet 269097900 246201782 1.09
tpch_q14/duckdb:parquet 50639058 48682513 1.04
tpch_q15/duckdb:parquet 25009514 24192489 1.03
tpch_q16/duckdb:parquet 58965117 55069029 1.07
tpch_q17/duckdb:parquet 51730187 51889104 1.00
tpch_q18/duckdb:parquet 115868068 111287408 1.04
tpch_q19/duckdb:parquet 66624002 66327881 1.00
tpch_q20/duckdb:parquet 65147092 63173570 1.03
tpch_q21/duckdb:parquet 180965626 166300065 1.09
tpch_q22/duckdb:parquet 53373179 51724885 1.03
duckdb / duckdb (1.053x ➖, 0↑ 3↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 16831697 16050990 1.05
tpch_q02/duckdb:duckdb 13102095 12464907 1.05
tpch_q03/duckdb:duckdb 20499434 18877852 1.09
tpch_q04/duckdb:duckdb 20014140 19426179 1.03
tpch_q05/duckdb:duckdb 21128716 20938665 1.01
tpch_q06/duckdb:duckdb 5552077 5434178 1.02
tpch_q07/duckdb:duckdb 23614542 22295644 1.06
tpch_q08/duckdb:duckdb 21720857 21234697 1.02
tpch_q09/duckdb:duckdb 58429819 55013246 1.06
tpch_q10/duckdb:duckdb 🚨 46936974 42491844 1.10
tpch_q11/duckdb:duckdb 🚨 6320721 5690629 1.11
tpch_q12/duckdb:duckdb 14382228 13584267 1.06
tpch_q13/duckdb:duckdb 38870707 38394370 1.01
tpch_q14/duckdb:duckdb 🚨 19437924 16522975 1.18
tpch_q15/duckdb:duckdb 12358158 11655459 1.06
tpch_q16/duckdb:duckdb 24376057 22546213 1.08
tpch_q17/duckdb:duckdb 14456248 13534161 1.07
tpch_q18/duckdb:duckdb 40130428 38869469 1.03
tpch_q19/duckdb:duckdb 27944003 28348364 0.99
tpch_q20/duckdb:duckdb 23420345 23226974 1.01
tpch_q21/duckdb:duckdb 60576480 57750160 1.05
tpch_q22/duckdb:duckdb 25451937 24451515 1.04
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow +9.8% +4.9% +4.7% +21.0% ➖ noise
1 datafusion:vortex-compact +8.8% +4.9% +3.7% +18.8% ➖ noise
1 datafusion:vortex-file-compressed +9.1% +4.9% +4.0% +19.6% ➖ noise
1 duckdb:duckdb +4.9% +4.9% -0.0% +19.2% ➖ noise
1 duckdb:vortex-compact +2.7% +4.9% -2.1% +18.1% ➖ noise
1 duckdb:vortex-file-compressed +2.2% +4.9% -2.6% +22.1% ➖ noise
2 datafusion:arrow +2.6% +4.8% -2.0% +10.0% ➖ noise
2 datafusion:vortex-compact +7.0% +4.8% +2.1% +10.0% ➖ noise
2 datafusion:vortex-file-compressed +4.5% +4.8% -0.2% +11.5% ➖ noise
2 duckdb:duckdb +5.1% +4.8% +0.3% +10.7% ➖ noise
2 duckdb:vortex-compact +2.0% +4.8% -2.6% +10.0% ➖ noise
2 duckdb:vortex-file-compressed +1.4% +4.8% -3.2% +10.0% ➖ noise
3 datafusion:arrow +12.9% +3.3% +9.3% +10.0% ➖ noise
3 datafusion:vortex-compact +7.4% +3.3% +3.9% +10.0% ➖ noise
3 datafusion:vortex-file-compressed +5.1% +3.3% +1.8% +10.0% ➖ noise
3 duckdb:duckdb +8.6% +3.3% +5.1% +12.7% ➖ noise
3 duckdb:vortex-compact +11.6% +3.3% +8.0% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +6.8% +3.3% +3.4% +12.5% ➖ noise
4 datafusion:arrow +14.9% +2.6% +12.0% +10.0% 🚨 regression
4 datafusion:vortex-compact +6.5% +2.6% +3.8% +10.0% ➖ noise
4 datafusion:vortex-file-compressed +10.0% +2.6% +7.2% +10.0% ➖ noise
4 duckdb:duckdb +3.0% +2.6% +0.4% +10.0% ➖ noise
4 duckdb:vortex-compact +3.1% +2.6% +0.5% +10.6% ➖ noise
4 duckdb:vortex-file-compressed +4.9% +2.6% +2.2% +10.0% ➖ noise
5 datafusion:arrow +26.7% +4.3% +21.5% +10.0% 🚨 regression
5 datafusion:vortex-compact +7.2% +4.3% +2.8% +10.0% ➖ noise
5 datafusion:vortex-file-compressed +7.3% +4.3% +2.9% +10.0% ➖ noise
5 duckdb:duckdb +0.9% +4.3% -3.2% +10.6% ➖ noise
5 duckdb:vortex-compact +4.8% +4.3% +0.5% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +6.4% +4.3% +2.0% +11.2% ➖ noise
6 datafusion:arrow +11.4% +7.5% +3.6% +14.2% ➖ noise
6 datafusion:vortex-compact +7.7% +7.5% +0.2% +15.3% ➖ noise
6 datafusion:vortex-file-compressed +3.1% +7.5% -4.1% +16.9% ➖ noise
6 duckdb:duckdb +2.2% +7.5% -5.0% +16.3% ➖ noise
6 duckdb:vortex-compact +6.1% +7.5% -1.3% +27.4% ➖ noise
6 duckdb:vortex-file-compressed +10.0% +7.5% +2.3% +16.1% ➖ noise
7 datafusion:arrow +9.9% +4.0% +5.7% +10.2% ➖ noise
7 datafusion:vortex-compact +9.1% +4.0% +4.9% +10.0% ➖ noise
7 datafusion:vortex-file-compressed +10.3% +4.0% +6.0% +10.0% ➖ noise
7 duckdb:duckdb +5.9% +4.0% +1.8% +11.1% ➖ noise
7 duckdb:vortex-compact +4.2% +4.0% +0.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed +9.4% +4.0% +5.2% +10.0% ➖ noise
8 datafusion:arrow +13.7% +0.8% +12.8% +10.0% 🚨 regression
8 datafusion:vortex-compact +8.0% +0.8% +7.1% +10.0% ➖ noise
8 datafusion:vortex-file-compressed +4.9% +0.8% +4.1% +10.2% ➖ noise
8 duckdb:duckdb +2.3% +0.8% +1.5% +10.4% ➖ noise
8 duckdb:vortex-compact +5.8% +0.8% +5.0% +10.4% ➖ noise
8 duckdb:vortex-file-compressed +4.8% +0.8% +4.0% +10.0% ➖ noise
9 datafusion:arrow +4.6% +0.7% +3.9% +11.2% ➖ noise
9 datafusion:vortex-compact +9.5% +0.7% +8.7% +10.0% ➖ noise
9 datafusion:vortex-file-compressed +7.5% +0.7% +6.7% +10.0% ➖ noise
9 duckdb:duckdb +6.2% +0.7% +5.5% +10.0% ➖ noise
9 duckdb:vortex-compact +9.5% +0.7% +8.7% +10.0% ➖ noise
9 duckdb:vortex-file-compressed +10.8% +0.7% +10.0% +10.0% ➖ noise
10 datafusion:arrow +6.2% +7.4% -1.2% +10.0% ➖ noise
10 datafusion:vortex-compact +6.1% +7.4% -1.2% +10.0% ➖ noise
10 datafusion:vortex-file-compressed +9.1% +7.4% +1.6% +10.0% ➖ noise
10 duckdb:duckdb +10.5% +7.4% +2.8% +11.7% ➖ noise
10 duckdb:vortex-compact +5.6% +7.4% -1.8% +10.0% ➖ noise
10 duckdb:vortex-file-compressed +6.8% +7.4% -0.6% +11.9% ➖ noise
11 datafusion:arrow +4.9% +5.3% -0.3% +10.0% ➖ noise
11 datafusion:vortex-compact +5.5% +5.3% +0.2% +10.0% ➖ noise
11 datafusion:vortex-file-compressed +6.8% +5.3% +1.5% +10.0% ➖ noise
11 duckdb:duckdb +11.1% +5.3% +5.5% +11.0% ➖ noise
11 duckdb:vortex-compact +8.4% +5.3% +3.0% +10.0% ➖ noise
11 duckdb:vortex-file-compressed +8.7% +5.3% +3.3% +10.2% ➖ noise
12 datafusion:arrow +8.4% +10.6% -2.0% +17.4% ➖ noise
12 datafusion:vortex-compact +4.4% +10.6% -5.6% +10.7% ➖ noise
12 datafusion:vortex-file-compressed +9.6% +10.6% -0.9% +10.0% ➖ noise
12 duckdb:duckdb +5.9% +10.6% -4.2% +10.0% ➖ noise
12 duckdb:vortex-compact +4.8% +10.6% -5.2% +10.4% ➖ noise
12 duckdb:vortex-file-compressed +2.3% +10.6% -7.5% +10.0% ➖ noise
13 datafusion:arrow +8.3% +9.5% -1.1% +10.0% ➖ noise
13 datafusion:vortex-compact +6.1% +9.5% -3.1% +10.0% ➖ noise
13 datafusion:vortex-file-compressed +4.3% +9.5% -4.8% +10.0% ➖ noise
13 duckdb:duckdb +1.2% +9.5% -7.6% +10.2% ➖ noise
13 duckdb:vortex-compact +7.6% +9.5% -1.7% +10.0% ➖ noise
13 duckdb:vortex-file-compressed +11.7% +9.5% +2.0% +10.0% ➖ noise
14 datafusion:arrow +18.0% +4.5% +12.9% +11.8% 🚨 regression
14 datafusion:vortex-compact +8.2% +4.5% +3.6% +10.0% ➖ noise
14 datafusion:vortex-file-compressed +6.5% +4.5% +1.9% +10.0% ➖ noise
14 duckdb:duckdb +17.6% +4.5% +12.6% +14.8% ➖ noise
14 duckdb:vortex-compact +10.3% +4.5% +5.5% +10.0% ➖ noise
14 duckdb:vortex-file-compressed +1.7% +4.5% -2.7% +11.3% ➖ noise
15 datafusion:arrow +12.9% +5.6% +6.9% +10.9% ➖ noise
15 datafusion:vortex-compact +4.0% +5.6% -1.6% +10.1% ➖ noise
15 datafusion:vortex-file-compressed +7.0% +5.6% +1.2% +11.3% ➖ noise
15 duckdb:duckdb +6.0% +5.6% +0.4% +13.5% ➖ noise
15 duckdb:vortex-compact +5.3% +5.6% -0.3% +15.3% ➖ noise
15 duckdb:vortex-file-compressed +7.0% +5.6% +1.3% +12.8% ➖ noise
16 datafusion:arrow +7.0% +9.8% -2.6% +10.0% ➖ noise
16 datafusion:vortex-compact +6.5% +9.8% -3.0% +10.0% ➖ noise
16 datafusion:vortex-file-compressed +11.3% +9.8% +1.4% +10.0% ➖ noise
16 duckdb:duckdb +8.1% +9.8% -1.6% +10.8% ➖ noise
16 duckdb:vortex-compact +5.4% +9.8% -4.0% +10.0% ➖ noise
16 duckdb:vortex-file-compressed +3.9% +9.8% -5.4% +10.0% ➖ noise
17 datafusion:arrow +9.9% +3.6% +6.1% +10.7% ➖ noise
17 datafusion:vortex-compact +11.0% +3.6% +7.1% +10.0% ➖ noise
17 datafusion:vortex-file-compressed +8.5% +3.6% +4.7% +11.7% ➖ noise
17 duckdb:duckdb +6.8% +3.6% +3.1% +10.8% ➖ noise
17 duckdb:vortex-compact +4.6% +3.6% +0.9% +12.5% ➖ noise
17 duckdb:vortex-file-compressed +6.5% +3.6% +2.8% +12.4% ➖ noise
18 datafusion:arrow +10.8% +5.9% +4.7% +10.0% ➖ noise
18 datafusion:vortex-compact +9.6% +5.9% +3.5% +10.0% ➖ noise
18 datafusion:vortex-file-compressed +17.7% +5.9% +11.1% +10.0% 🚨 regression
18 duckdb:duckdb +3.2% +5.9% -2.5% +10.0% ➖ noise
18 duckdb:vortex-compact +4.5% +5.9% -1.3% +10.0% ➖ noise
18 duckdb:vortex-file-compressed +6.6% +5.9% +0.7% +10.0% ➖ noise
19 datafusion:arrow +9.3% -2.8% +12.5% +14.8% ➖ noise
19 datafusion:vortex-compact +4.9% -2.8% +8.0% +12.6% ➖ noise
19 datafusion:vortex-file-compressed +5.0% -2.8% +8.0% +12.5% ➖ noise
19 duckdb:duckdb -1.4% -2.8% +1.4% +14.1% ➖ noise
19 duckdb:vortex-compact +11.3% -2.8% +14.5% +12.3% 🚨 regression
19 duckdb:vortex-file-compressed +2.4% -2.8% +5.4% +12.3% ➖ noise
20 datafusion:arrow +11.6% +3.6% +7.7% +10.0% ➖ noise
20 datafusion:vortex-compact +3.1% +3.6% -0.6% +10.0% ➖ noise
20 datafusion:vortex-file-compressed +8.1% +3.6% +4.3% +10.0% ➖ noise
20 duckdb:duckdb +0.8% +3.6% -2.7% +10.0% ➖ noise
20 duckdb:vortex-compact +8.0% +3.6% +4.2% +10.0% ➖ noise
20 duckdb:vortex-file-compressed +10.5% +3.6% +6.6% +11.0% ➖ noise
21 datafusion:arrow +8.0% +7.2% +0.7% +10.0% ➖ noise
21 datafusion:vortex-compact +8.1% +7.2% +0.8% +10.0% ➖ noise
21 datafusion:vortex-file-compressed +5.6% +7.2% -1.5% +10.0% ➖ noise
21 duckdb:duckdb +4.9% +7.2% -2.2% +10.0% ➖ noise
21 duckdb:vortex-compact +10.5% +7.2% +3.1% +10.0% ➖ noise
21 duckdb:vortex-file-compressed +7.3% +7.2% +0.1% +10.0% ➖ noise
22 datafusion:arrow +8.0% +2.2% +5.7% +10.0% ➖ noise
22 datafusion:vortex-compact +6.4% +2.2% +4.1% +13.4% ➖ noise
22 datafusion:vortex-file-compressed +5.3% +2.2% +3.1% +10.0% ➖ noise
22 duckdb:duckdb +4.1% +2.2% +1.9% +10.0% ➖ noise
22 duckdb:vortex-compact +13.4% +2.2% +11.0% +10.0% 🚨 regression
22 duckdb:vortex-file-compressed +10.9% +2.2% +8.6% +12.5% ➖ noise

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

File Sizes: TPC-H SF=1 on NVME

No baseline file sizes found for base commit.

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨

Benchmark Clickbench on NVME failed! Check the workflow run for details.

@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Benchmarks: Random Access

Vortex (geomean): 1.046x ➖
Parquet (geomean): 1.039x ➖


unknown / unknown (1.051x ➖, 0↑ 5↓)
name PR 861457f (ns) base 40c2c7f (ns) ratio (PR/base)
random-access/feature-vectors/correlated/lance-tokio-local-disk 2345654 2511136 0.93
random-access/feature-vectors/correlated/lance-tokio-local-disk-footer 1513561 1432204 1.06
random-access/feature-vectors/correlated/parquet-tokio-local-disk 8823083864 8610042712 1.02
random-access/feature-vectors/correlated/parquet-tokio-local-disk-footer 8989543316 8652659258 1.04
random-access/feature-vectors/correlated/vortex-tokio-local-disk 8631060 8503480 1.02
random-access/feature-vectors/correlated/vortex-tokio-local-disk-footer 8125276 7802351 1.04
random-access/feature-vectors/uniform/lance-tokio-local-disk 6335672 5904143 1.07
random-access/feature-vectors/uniform/lance-tokio-local-disk-footer 7140693 6611512 1.08
random-access/feature-vectors/uniform/parquet-tokio-local-disk 8873955359 8591870473 1.03
random-access/feature-vectors/uniform/parquet-tokio-local-disk-footer 8835779246 8636623457 1.02
random-access/feature-vectors/uniform/vortex-tokio-local-disk 14163487 13752138 1.03
random-access/feature-vectors/uniform/vortex-tokio-local-disk-footer 13991045 13551340 1.03
random-access/lance-tokio-local-disk 784997 747624 1.05
random-access/lance-tokio-local-disk-footer 1373580 1280203 1.07
random-access/nested-lists/correlated/lance-tokio-local-disk 266904 254798 1.05
random-access/nested-lists/correlated/lance-tokio-local-disk-footer 🚨 738499 659769 1.12
random-access/nested-lists/correlated/parquet-tokio-local-disk 139433512 132516985 1.05
random-access/nested-lists/correlated/parquet-tokio-local-disk-footer 139398864 132299998 1.05
random-access/nested-lists/correlated/vortex-tokio-local-disk 🚨 716726 651530 1.10
random-access/nested-lists/correlated/vortex-tokio-local-disk-footer 🚨 718035 651776 1.10
random-access/nested-lists/uniform/lance-tokio-local-disk 1158164 1069754 1.08
random-access/nested-lists/uniform/lance-tokio-local-disk-footer 🚨 1646613 1492055 1.10
random-access/nested-lists/uniform/parquet-tokio-local-disk 137467924 132712533 1.04
random-access/nested-lists/uniform/parquet-tokio-local-disk-footer 138980114 131863470 1.05
random-access/nested-lists/uniform/vortex-tokio-local-disk 2274275 2142563 1.06
random-access/nested-lists/uniform/vortex-tokio-local-disk-footer 2288837 2140390 1.07
random-access/nested-structs/correlated/lance-tokio-local-disk 417787 393633 1.06
random-access/nested-structs/correlated/lance-tokio-local-disk-footer 646325 606281 1.07
random-access/nested-structs/correlated/parquet-tokio-local-disk 28112928 27285728 1.03
random-access/nested-structs/correlated/parquet-tokio-local-disk-footer 28268961 27240839 1.04
random-access/nested-structs/correlated/vortex-tokio-local-disk 802817 771800 1.04
random-access/nested-structs/correlated/vortex-tokio-local-disk-footer 870593 797760 1.09
random-access/nested-structs/uniform/lance-tokio-local-disk 🚨 2946430 2636917 1.12
random-access/nested-structs/uniform/lance-tokio-local-disk-footer 3149875 2878418 1.09
random-access/nested-structs/uniform/parquet-tokio-local-disk 29127397 27793709 1.05
random-access/nested-structs/uniform/parquet-tokio-local-disk-footer 29247360 27824054 1.05
random-access/nested-structs/uniform/vortex-tokio-local-disk 1786474 1633481 1.09
random-access/nested-structs/uniform/vortex-tokio-local-disk-footer 1903818 1734992 1.10
random-access/parquet-tokio-local-disk 187082048 181093243 1.03
random-access/parquet-tokio-local-disk-footer 188333762 182301856 1.03
random-access/taxi/correlated/lance-tokio-local-disk 992867 941340 1.05
random-access/taxi/correlated/lance-tokio-local-disk-footer 1691507 1574763 1.07
random-access/taxi/correlated/parquet-tokio-local-disk 284515171 270581634 1.05
random-access/taxi/correlated/parquet-tokio-local-disk-footer 280622867 272232054 1.03
random-access/taxi/correlated/vortex-tokio-local-disk 1846382 1918677 0.96
random-access/taxi/correlated/vortex-tokio-local-disk-footer 2064307 1939516 1.06
random-access/taxi/uniform/lance-tokio-local-disk 10619799 9799810 1.08
random-access/taxi/uniform/lance-tokio-local-disk-footer 11300466 10469715 1.08
random-access/taxi/uniform/parquet-tokio-local-disk 293420285 286915573 1.02
random-access/taxi/uniform/parquet-tokio-local-disk-footer 299400961 287137153 1.04
random-access/taxi/uniform/vortex-tokio-local-disk 4931026 4842568 1.02
random-access/taxi/uniform/vortex-tokio-local-disk-footer 4886935 4803496 1.02
random-access/vortex-tokio-local-disk 1328365 1336035 0.99
random-access/vortex-tokio-local-disk-footer 1386406 1364168 1.02

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 23, 2026
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
…-execution-path-0qvq2

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>

# Conflicts:
#	vortex-array/src/executor.rs
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions

github-actions Bot commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

File Sizes: Clickbench on NVME

File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
File Scale Format Base HEAD Change %
duckdb.db 1.0 vortex-compact 268.00 KB 0 B 268.00 KB -100.0%

Totals:

  • vortex-compact: 7.06 GB → 7.06 GB (-0.0%)
  • vortex-file-compressed: 14.01 GB → 14.01 GB (0.0%)

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
…-execution-path-0qvq2

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@joseph-isaacs joseph-isaacs changed the title Add builder-based execution path (AppendSlot + builder kernels) feat: iterative execution ExecutionStep::AppendChild and Chunked impl Apr 27, 2026
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants