Skip to content

Add OnPair string compression encoding with predicate pushdown#7927

Open
joseph-isaacs wants to merge 22 commits into
developfrom
claude/vortex-array-rust-bindings-FQfIX
Open

Add OnPair string compression encoding with predicate pushdown#7927
joseph-isaacs wants to merge 22 commits into
developfrom
claude/vortex-array-rust-bindings-FQfIX

Conversation

@joseph-isaacs
Copy link
Copy Markdown
Contributor

@joseph-isaacs joseph-isaacs commented May 14, 2026

Summary

This PR introduces a new vortex-onpair encoding that integrates the OnPair short-string compression library into Vortex. OnPair is a dictionary-based compressor optimized for string data with two key features:

  1. Fast random access: Individual rows can be decompressed without scanning the entire column
  2. Compressed-domain predicate evaluation: Equality, prefix matching (LIKE 'prefix%'), and substring matching (LIKE '%substr%') can be evaluated directly on compressed data without decompression

Changes

  • vortex-onpair-sys: Low-level FFI bindings to the OnPair C++ library

    • C ABI shim (onpair_shim.h/cpp) wrapping the OnPair C++ API
    • CMake build configuration that fetches and builds onpair_cpp via FetchContent
    • Boost dependency stripping (replaces boost::unordered_flat_map with std::unordered_map)
    • Safe Rust wrapper (Column type) around the C++ OnPairColumn handle
  • vortex-onpair: Vortex array encoding and compute kernels

    • OnPairArray type implementing the VTable trait for Vortex integration
    • Compression entry point (onpair_compress) with configurable bit-width (9-16 bits, default 12)
    • Canonicalization to VarBinViewArray via bulk decompression
    • Compute kernel implementations:
      • CompareKernel: Pushdown of Eq/NotEq to compressed-domain equals()
      • LikeKernel: Pushdown of LIKE patterns to starts_with() and contains()
      • CastKernel: Nullability-only casts between Utf8/Binary
      • FilterKernel and SliceReduce: Fall back to canonicalization
    • Serialization/deserialization with metadata persistence
    • Lazy column materialization for cheap clones

Design Notes

  • The C++ OnPairColumn is lazily reconstructed on first use (e.g., canonicalization or predicate pushdown), keeping clone-only paths cheap
  • Null entries are indexed by the column (mapped to empty payloads) with nullness preserved on the outer array's validity slot
  • The default preset is "dict-12": 12-bit codes with a dictionary capped at 4,096 entries
  • Predicate pushdown is wired through standard Vortex compute kernels, enabling automatic filter optimization

Testing

  • Added roundtrip tests verifying compression and decompression correctness
  • Added nullable array handling tests
  • Added scalar access tests
  • Metadata serialization tests with golden file validation
  • All tests pass with the new encoding integrated into the Vortex array system

claude added 2 commits May 14, 2026 14:46
Introduces two new crates that integrate the OnPair C++ short-string
compression library (gargiulofrancesco/onpair_cpp, arXiv:2508.02280) as
a first-class Vortex array.

* `encodings/onpair-sys`: build.rs uses cmake-rs to FetchContent the
  upstream onpair_cpp at configure time, applies a small in-tree patch
  that swaps `boost::unordered_flat_map` for `std::unordered_map` (plus
  a `std::hash<std::pair<...>>` specialisation), and links a C-ABI shim
  (`cxx/onpair_shim.{h,cpp}`) into a static archive. Safe Rust wraps
  the shim in a `Column` owning handle exposing compress / serialise /
  decompress and the compressed-domain predicates.

* `encodings/onpair`: Vortex `Array` impl mirroring `vortex-fsst`.
  Stores the serialised OnPair column (`ONPAIR01` magic + dictionary +
  bit-packed token stream) as a single opaque buffer plus an
  `uncompressed_lengths` child for cheap canonicalisation. Default
  preset is "dict-12" (12-bit codes, dictionary capped at 4 096 entries).

  Wires equals / starts-with / contains pushdown straight through to
  the C++ scan implementation via `CompareKernel` and `LikeKernel`, so
  `arr = const` and `arr LIKE 'prefix%' / '%substr%'` evaluate on the
  compressed stream without decoding rows.

* Tests cover roundtrip, nullable canonicalisation, scalar_at, and all
  three pushdown predicates end-to-end through the C++ stack (7/7
  pass locally with cmake + g++).

Build requirements: cmake >= 3.21, a C++20 compiler, and network access
on the first build (subsequent builds are cached under
`$OUT_DIR/onpair-build/_deps`). No Boost dependency at build time.

Signed-off-by: Claude <noreply@anthropic.com>
Exercises the C++ → FFI → Vortex stack on a realistic-shape corpus
(synthetic URL / HTTP-log strings). Validates roundtrip byte-equality
on all 100 000 rows and checks each pushdown predicate result against
a brute-force scan.

Local results (release build):
  100 000 rows, 4 332 157 -> 1 385 145 bytes (3.13x), compress 136 ms,
  canonicalize 5 ms; equals / starts_with / contains all match the
  reference counts exactly.

Signed-off-by: Claude <noreply@anthropic.com>
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented May 14, 2026

Merging this PR will not alter performance

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

✅ 1216 untouched benchmarks


Comparing claude/vortex-array-rust-bindings-FQfIX (cd71c15) with develop (1f6fb0a)

Open in CodSpeed

…code

Replaces the previous opaque-blob layout with one that mirrors how FSST
splits its symbols-as-buffer / codes-as-child encoding, and shifts every
read path off the C++ FFI.

Layout
------
  Buffer 0  dict_bytes              — dictionary blob built by C++ training
  Slot 0    dict_offsets   u32[]    — len = dict_size + 1
  Slot 1    codes          u16[]    — one token id per element, low `bits`
                                       bits populated (FastLanes-bit-packable)
  Slot 2    codes_offsets  u32[]    — per-row token offsets, len = n + 1
  Slot 3    uncompressed_lengths    — i32[], len = n
  Slot 4    validity                — optional Bool child

  metadata = { bits: u32, uncompressed_lengths_ptype: i32 }

Decode path
-----------
At compress time we call OnPair's C++ trainer to produce the dictionary
and bit-packed token stream, then immediately unpack the stream into u16
codes in Rust (`vortex_onpair_sys::unpack_codes_to_u16`) and drop the
C++ column. After that, nothing on the read path touches C++:

  decode_row(r):
      for c in codes[codes_offsets[r] .. codes_offsets[r+1]]:
          out.extend_from_slice(
              dict_bytes[dict_offsets[c] .. dict_offsets[c+1]]
          )

`canonicalize`, `scalar_at`, and the compute kernels all share a
`DecodeView` over the materialised children.

Compute kernels (pure Rust, no C++ scan)
----------------------------------------
* compare (Eq / NotEq): streams dict slices per row, short-circuits on
  the first mismatch.
* like ('lit', 'pre%', '%sub%'): same streaming approach for prefix; a
  full row decode + memmem for contains.
* filter: canonical round-trip + recompress (unchanged).
* slice: zero-copy — narrows codes_offsets / uncompressed_lengths /
  validity and shares the dict blob + codes child.
* cast: identity rewrap, no payload touched.

Tests
-----
All 7 unit tests + the 100 000-row big_data smoke test pass. On the
smoke corpus (release): compress 147 ms, full canonicalize 7.5 ms,
equals / starts_with / contains pushdown counts match a brute-force
reference exactly.

Signed-off-by: Claude <noreply@anthropic.com>
@a10y
Copy link
Copy Markdown
Contributor

a10y commented May 14, 2026

curious how it would do if wired into the compressor

* Extract a small `parts_to_children` helper in `vortex-onpair`'s
  `compress.rs` so the lift-out-of-C++ step reads top-to-bottom rather
  than via a block-and-drop dance.

* Add `OnPairScheme` to `vortex-btrblocks::schemes::string`. The scheme
  matches utf8 strings, declares its four primitive children
  (dict_offsets / codes / codes_offsets / uncompressed_lengths) so the
  cascading compressor can re-encode them downstream
  (FastLanes-bit-pack on `codes`, etc.), defers the compression-ratio
  estimate to the sample-based path (same as FSST / Zstd), and
  reassembles the result via `OnPair::try_new`.

* Feature-gate it via a new `onpair` Cargo feature, enabled by default,
  so out-of-the-box `BtrBlocksCompressorBuilder::default()` includes it
  in `ALL_SCHEMES` and consumers without a C++ toolchain can opt out
  with `default-features = false`.

* Update the FSST scheme-selection test to accept either FSST or OnPair
  as the winning encoding — both target the same workload (short
  strings with high lexical overlap) and the sample-based selector now
  picks the one with the better ratio on the test corpus.

Test results
  vortex-onpair       7 unit + 1 100k smoke   all green
  vortex-btrblocks   36 unit + 3 doctests     all green (incl. new
                                              `test_onpair_in_default_scheme_list`)

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Polar Signals Profiling Results

Latest Run

Status Commit Job Attempt Link
🟢 Done c3bcb2e 2 Explore Profiling Data
Previous Runs (11)
Status Commit Job Attempt Link
🟢 Done c3bcb2e 1 Explore Profiling Data
🟢 Done a1ba67f 2 Explore Profiling Data
🟢 Done a1ba67f 1 Explore Profiling Data
🟢 Done 18f0cf2 1 Explore Profiling Data
🟢 Done adeda19 1 Explore Profiling Data
🟢 Done d9a6c8c 1 Explore Profiling Data
🟢 Done 5432766 1 Explore Profiling Data
🟢 Done f0e03a3 1 Explore Profiling Data
🟢 Done 83651e4 1 Explore Profiling Data
🟢 Done 803bc4e 1 Explore Profiling Data
🟢 Done 70947a8 1 Explore Profiling Data

Powered by Polar Signals Cloud

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: TPC-H SF=1 on NVME

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -0.1%
Vortex (geomean): 1.021x ➖
Parquet (geomean): 1.022x ➖
Shifts: Parquet (control) +2.2% · Median polish +1.8%


datafusion / vortex-file-compressed (1.023x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 50268342 49945471 1.01
tpch_q02/datafusion:vortex-file-compressed 22186847 21903809 1.01
tpch_q03/datafusion:vortex-file-compressed 29860567 27841591 1.07
tpch_q04/datafusion:vortex-file-compressed 21056975 20461512 1.03
tpch_q05/datafusion:vortex-file-compressed 49535045 46875250 1.06
tpch_q06/datafusion:vortex-file-compressed 11940173 11718207 1.02
tpch_q07/datafusion:vortex-file-compressed 54995445 55887025 0.98
tpch_q08/datafusion:vortex-file-compressed 40289038 38859818 1.04
tpch_q09/datafusion:vortex-file-compressed 51206931 51307193 1.00
tpch_q10/datafusion:vortex-file-compressed 🚨 44460664 39412469 1.13
tpch_q11/datafusion:vortex-file-compressed 16050768 15466030 1.04
tpch_q12/datafusion:vortex-file-compressed 25150036 24536753 1.02
tpch_q13/datafusion:vortex-file-compressed 25764071 24846923 1.04
tpch_q14/datafusion:vortex-file-compressed 17225380 16637387 1.04
tpch_q15/datafusion:vortex-file-compressed 26191255 25994120 1.01
tpch_q16/datafusion:vortex-file-compressed 18772744 19053741 0.99
tpch_q17/datafusion:vortex-file-compressed 66922271 65443149 1.02
tpch_q18/datafusion:vortex-file-compressed 80409576 81708455 0.98
tpch_q19/datafusion:vortex-file-compressed 23532310 23231271 1.01
tpch_q20/datafusion:vortex-file-compressed 29607333 28795269 1.03
tpch_q21/datafusion:vortex-file-compressed 72268153 70205828 1.03
tpch_q22/datafusion:vortex-file-compressed 11731648 12169872 0.96
datafusion / vortex-compact (1.017x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 57884821 57481599 1.01
tpch_q02/datafusion:vortex-compact 25949255 25269997 1.03
tpch_q03/datafusion:vortex-compact 29324222 28966658 1.01
tpch_q04/datafusion:vortex-compact 23371875 22861491 1.02
tpch_q05/datafusion:vortex-compact 52129783 50140002 1.04
tpch_q06/datafusion:vortex-compact 14147709 13326387 1.06
tpch_q07/datafusion:vortex-compact 59697931 59201934 1.01
tpch_q08/datafusion:vortex-compact 43474297 43140067 1.01
tpch_q09/datafusion:vortex-compact 55668575 56363789 0.99
tpch_q10/datafusion:vortex-compact 47106377 45369859 1.04
tpch_q11/datafusion:vortex-compact 16931995 16745845 1.01
tpch_q12/datafusion:vortex-compact 30483317 30561263 1.00
tpch_q13/datafusion:vortex-compact 31680981 31219928 1.01
tpch_q14/datafusion:vortex-compact 19796245 19924457 0.99
tpch_q15/datafusion:vortex-compact 31916995 31179124 1.02
tpch_q16/datafusion:vortex-compact 23816537 23998891 0.99
tpch_q17/datafusion:vortex-compact 67960439 69011613 0.98
tpch_q18/datafusion:vortex-compact 81688376 81986575 1.00
tpch_q19/datafusion:vortex-compact 30519953 30116644 1.01
tpch_q20/datafusion:vortex-compact 33787911 34055721 0.99
tpch_q21/datafusion:vortex-compact 74799222 74124128 1.01
tpch_q22/datafusion:vortex-compact 🚨 14621278 12658993 1.16
datafusion / parquet (1.031x ➖, 0↑ 4↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 🚨 135522460 100087434 1.35
tpch_q02/datafusion:parquet 61015474 60396905 1.01
tpch_q03/datafusion:parquet 🚨 72705870 62837431 1.16
tpch_q04/datafusion:parquet 43404591 42919185 1.01
tpch_q05/datafusion:parquet 93796992 92359147 1.02
tpch_q06/datafusion:parquet 41236920 39028643 1.06
tpch_q07/datafusion:parquet 106535887 103582348 1.03
tpch_q08/datafusion:parquet 🚨 99742149 89208582 1.12
tpch_q09/datafusion:parquet 129901050 128114233 1.01
tpch_q10/datafusion:parquet 110969711 108258005 1.03
tpch_q11/datafusion:parquet 40842102 40620116 1.01
tpch_q12/datafusion:parquet 86780903 86931667 1.00
tpch_q13/datafusion:parquet 196444657 195885151 1.00
tpch_q14/datafusion:parquet 43691724 46346399 0.94
tpch_q15/datafusion:parquet 57122635 60310939 0.95
tpch_q16/datafusion:parquet 40322807 39679425 1.02
tpch_q17/datafusion:parquet 131894591 137171958 0.96
tpch_q18/datafusion:parquet 159817362 165850159 0.96
tpch_q19/datafusion:parquet 🚨 77764299 69898094 1.11
tpch_q20/datafusion:parquet 66498148 68405296 0.97
tpch_q21/datafusion:parquet 133788286 130715540 1.02
tpch_q22/datafusion:parquet 31257313 30493072 1.03
datafusion / arrow (1.023x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 50407064 50034420 1.01
tpch_q02/datafusion:arrow 18809005 18682210 1.01
tpch_q03/datafusion:arrow 28944597 29886017 0.97
tpch_q04/datafusion:arrow 25682141 24983621 1.03
tpch_q05/datafusion:arrow 🚨 81469370 73079168 1.11
tpch_q06/datafusion:arrow 20785771 19168450 1.08
tpch_q07/datafusion:arrow 104534753 98878936 1.06
tpch_q08/datafusion:arrow 43079862 42173687 1.02
tpch_q09/datafusion:arrow 63749194 62415419 1.02
tpch_q10/datafusion:arrow 45162299 47270579 0.96
tpch_q11/datafusion:arrow 9034453 9410948 0.96
tpch_q12/datafusion:arrow 51314648 51438188 1.00
tpch_q13/datafusion:arrow 47160705 46860331 1.01
tpch_q14/datafusion:arrow 21534372 21057101 1.02
tpch_q15/datafusion:arrow 42702477 41437176 1.03
tpch_q16/datafusion:arrow 19216582 18668804 1.03
tpch_q17/datafusion:arrow 67307524 67311359 1.00
tpch_q18/datafusion:arrow 137341357 133261669 1.03
tpch_q19/datafusion:arrow 36863663 33765206 1.09
tpch_q20/datafusion:arrow 35773908 33142370 1.08
tpch_q21/datafusion:arrow 153868986 150122594 1.02
tpch_q22/datafusion:arrow 17685438 17765336 1.00
duckdb / vortex-file-compressed (1.024x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 31287348 31632079 0.99
tpch_q02/duckdb:vortex-file-compressed 24651319 23887602 1.03
tpch_q03/duckdb:vortex-file-compressed 29508400 28702119 1.03
tpch_q04/duckdb:vortex-file-compressed 30152124 28632687 1.05
tpch_q05/duckdb:vortex-file-compressed 32507006 32026824 1.01
tpch_q06/duckdb:vortex-file-compressed 10163481 10204640 1.00
tpch_q07/duckdb:vortex-file-compressed 35632876 35803827 1.00
tpch_q08/duckdb:vortex-file-compressed 37881693 37020294 1.02
tpch_q09/duckdb:vortex-file-compressed 74976434 71819709 1.04
tpch_q10/duckdb:vortex-file-compressed 34014022 33232297 1.02
tpch_q11/duckdb:vortex-file-compressed 14245393 14069926 1.01
tpch_q12/duckdb:vortex-file-compressed 22677942 21603614 1.05
tpch_q13/duckdb:vortex-file-compressed 36611755 34209884 1.07
tpch_q14/duckdb:vortex-file-compressed 21341774 20449405 1.04
tpch_q15/duckdb:vortex-file-compressed 16494471 16166758 1.02
tpch_q16/duckdb:vortex-file-compressed 27767771 27334682 1.02
tpch_q17/duckdb:vortex-file-compressed 24801899 25198498 0.98
tpch_q18/duckdb:vortex-file-compressed 49577380 48553035 1.02
tpch_q19/duckdb:vortex-file-compressed 28992532 28164871 1.03
tpch_q20/duckdb:vortex-file-compressed 33808367 32768284 1.03
tpch_q21/duckdb:vortex-file-compressed 104210290 103698761 1.00
tpch_q22/duckdb:vortex-file-compressed 17622013 16753486 1.05
duckdb / vortex-compact (1.019x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 37699944 37707630 1.00
tpch_q02/duckdb:vortex-compact 34857835 36007005 0.97
tpch_q03/duckdb:vortex-compact 31719777 31511227 1.01
tpch_q04/duckdb:vortex-compact 35547812 34575544 1.03
tpch_q05/duckdb:vortex-compact 37835274 37533689 1.01
tpch_q06/duckdb:vortex-compact 14626788 14528270 1.01
tpch_q07/duckdb:vortex-compact 41762691 41457531 1.01
tpch_q08/duckdb:vortex-compact 45007744 44641156 1.01
tpch_q09/duckdb:vortex-compact 83153725 82868770 1.00
tpch_q10/duckdb:vortex-compact 40946182 38489706 1.06
tpch_q11/duckdb:vortex-compact 19222552 19736792 0.97
tpch_q12/duckdb:vortex-compact 34513251 34662480 1.00
tpch_q13/duckdb:vortex-compact 44324402 43139911 1.03
tpch_q14/duckdb:vortex-compact 28623903 27708919 1.03
tpch_q15/duckdb:vortex-compact 19832463 19196617 1.03
tpch_q16/duckdb:vortex-compact 35160885 34968001 1.01
tpch_q17/duckdb:vortex-compact 29240796 29302231 1.00
tpch_q18/duckdb:vortex-compact 50204912 49761412 1.01
tpch_q19/duckdb:vortex-compact 33695883 34177868 0.99
tpch_q20/duckdb:vortex-compact 41230617 41224476 1.00
tpch_q21/duckdb:vortex-compact 112711907 108590323 1.04
tpch_q22/duckdb:vortex-compact 🚨 23834525 19024087 1.25
duckdb / parquet (1.014x ➖, 1↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 🚀 78356680 87788248 0.89
tpch_q02/duckdb:parquet 38761300 37511639 1.03
tpch_q03/duckdb:parquet 67998806 68543964 0.99
tpch_q04/duckdb:parquet 46753646 46168506 1.01
tpch_q05/duckdb:parquet 65246741 64537427 1.01
tpch_q06/duckdb:parquet 20639797 19797327 1.04
tpch_q07/duckdb:parquet 71347713 72802371 0.98
tpch_q08/duckdb:parquet 79043714 80558930 0.98
tpch_q09/duckdb:parquet 133089933 130759608 1.02
tpch_q10/duckdb:parquet 127743647 122750022 1.04
tpch_q11/duckdb:parquet 20852352 20779987 1.00
tpch_q12/duckdb:parquet 45574635 48015721 0.95
tpch_q13/duckdb:parquet 251218840 246659954 1.02
tpch_q14/duckdb:parquet 49616846 48088181 1.03
tpch_q15/duckdb:parquet 🚨 33032468 23939218 1.38
tpch_q16/duckdb:parquet 55307983 54382248 1.02
tpch_q17/duckdb:parquet 51070950 49704112 1.03
tpch_q18/duckdb:parquet 114307357 116511570 0.98
tpch_q19/duckdb:parquet 67322402 67437235 1.00
tpch_q20/duckdb:parquet 62923033 63301603 0.99
tpch_q21/duckdb:parquet 160998694 166922635 0.96
tpch_q22/duckdb:parquet 52091828 52008461 1.00
duckdb / duckdb (1.022x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 16406429 15872444 1.03
tpch_q02/duckdb:duckdb 12545968 12571089 1.00
tpch_q03/duckdb:duckdb 19051481 18019806 1.06
tpch_q04/duckdb:duckdb 19737450 19671077 1.00
tpch_q05/duckdb:duckdb 20639768 19390385 1.06
tpch_q06/duckdb:duckdb 5324540 5279314 1.01
tpch_q07/duckdb:duckdb 22211260 22079939 1.01
tpch_q08/duckdb:duckdb 21163088 20626369 1.03
tpch_q09/duckdb:duckdb 56956974 55236291 1.03
tpch_q10/duckdb:duckdb 44253616 44492609 0.99
tpch_q11/duckdb:duckdb 5910298 5727764 1.03
tpch_q12/duckdb:duckdb 13952434 13699726 1.02
tpch_q13/duckdb:duckdb 37646229 37774131 1.00
tpch_q14/duckdb:duckdb 🚨 18863801 16478324 1.14
tpch_q15/duckdb:duckdb 13123717 13308435 0.99
tpch_q16/duckdb:duckdb 23550395 22697591 1.04
tpch_q17/duckdb:duckdb 13949892 13680782 1.02
tpch_q18/duckdb:duckdb 38610158 38853547 0.99
tpch_q19/duckdb:duckdb 26793374 26483175 1.01
tpch_q20/duckdb:duckdb 22699254 23618578 0.96
tpch_q21/duckdb:duckdb 57426770 54716932 1.05
tpch_q22/duckdb:duckdb 24690822 24149681 1.02
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow +0.7% +9.9% -8.4% +21.3% ➖ noise
1 datafusion:vortex-compact +0.7% +9.9% -8.4% +20.0% ➖ noise
1 datafusion:vortex-file-compressed +0.6% +9.9% -8.4% +20.0% ➖ noise
1 duckdb:duckdb +3.4% +9.9% -6.0% +19.4% ➖ noise
1 duckdb:vortex-compact -0.0% +9.9% -9.1% +18.7% ➖ noise
1 duckdb:vortex-file-compressed -1.1% +9.9% -10.0% +21.6% ➖ noise
2 datafusion:arrow +0.7% +2.2% -1.5% +10.7% ➖ noise
2 datafusion:vortex-compact +2.7% +2.2% +0.5% +10.7% ➖ noise
2 datafusion:vortex-file-compressed +1.3% +2.2% -0.9% +10.7% ➖ noise
2 duckdb:duckdb -0.2% +2.2% -2.3% +10.9% ➖ noise
2 duckdb:vortex-compact -3.2% +2.2% -5.2% +10.7% ➖ noise
2 duckdb:vortex-file-compressed +3.2% +2.2% +1.0% +10.7% ➖ noise
3 datafusion:arrow -3.2% +7.1% -9.6% +10.7% ➖ noise
3 datafusion:vortex-compact +1.2% +7.1% -5.5% +10.7% ➖ noise
3 datafusion:vortex-file-compressed +7.3% +7.1% +0.1% +10.7% ➖ noise
3 duckdb:duckdb +5.7% +7.1% -1.3% +11.8% ➖ noise
3 duckdb:vortex-compact +0.7% +7.1% -6.0% +10.7% ➖ noise
3 duckdb:vortex-file-compressed +2.8% +7.1% -4.0% +13.1% ➖ noise
4 datafusion:arrow +2.8% +1.2% +1.6% +10.7% ➖ noise
4 datafusion:vortex-compact +2.2% +1.2% +1.0% +10.7% ➖ noise
4 datafusion:vortex-file-compressed +2.9% +1.2% +1.7% +10.7% ➖ noise
4 duckdb:duckdb +0.3% +1.2% -0.9% +10.7% ➖ noise
4 duckdb:vortex-compact +2.8% +1.2% +1.6% +10.7% ➖ noise
4 duckdb:vortex-file-compressed +5.3% +1.2% +4.1% +10.7% ➖ noise
5 datafusion:arrow +11.5% +1.3% +10.0% +10.7% ➖ noise
5 datafusion:vortex-compact +4.0% +1.3% +2.6% +10.7% ➖ noise
5 datafusion:vortex-file-compressed +5.7% +1.3% +4.3% +10.7% ➖ noise
5 duckdb:duckdb +6.4% +1.3% +5.0% +10.7% ➖ noise
5 duckdb:vortex-compact +0.8% +1.3% -0.5% +10.7% ➖ noise
5 duckdb:vortex-file-compressed +1.5% +1.3% +0.2% +12.4% ➖ noise
6 datafusion:arrow +8.4% +5.0% +3.3% +16.5% ➖ noise
6 datafusion:vortex-compact +6.2% +5.0% +1.2% +15.1% ➖ noise
6 datafusion:vortex-file-compressed +1.9% +5.0% -2.9% +16.3% ➖ noise
6 duckdb:duckdb +0.9% +5.0% -3.9% +18.7% ➖ noise
6 duckdb:vortex-compact +0.7% +5.0% -4.1% +19.8% ➖ noise
6 duckdb:vortex-file-compressed -0.4% +5.0% -5.1% +17.4% ➖ noise
7 datafusion:arrow +5.7% +0.4% +5.3% +10.7% ➖ noise
7 datafusion:vortex-compact +0.8% +0.4% +0.4% +10.7% ➖ noise
7 datafusion:vortex-file-compressed -1.6% +0.4% -2.0% +10.7% ➖ noise
7 duckdb:duckdb +0.6% +0.4% +0.2% +10.7% ➖ noise
7 duckdb:vortex-compact +0.7% +0.4% +0.3% +10.7% ➖ noise
7 duckdb:vortex-file-compressed -0.5% +0.4% -0.9% +10.7% ➖ noise
8 datafusion:arrow +2.1% +4.7% -2.5% +10.7% ➖ noise
8 datafusion:vortex-compact +0.8% +4.7% -3.8% +10.7% ➖ noise
8 datafusion:vortex-file-compressed +3.7% +4.7% -1.0% +10.7% ➖ noise
8 duckdb:duckdb +2.6% +4.7% -2.0% +13.0% ➖ noise
8 duckdb:vortex-compact +0.8% +4.7% -3.7% +11.0% ➖ noise
8 duckdb:vortex-file-compressed +2.3% +4.7% -2.3% +10.7% ➖ noise
9 datafusion:arrow +2.1% +1.6% +0.5% +10.7% ➖ noise
9 datafusion:vortex-compact -1.2% +1.6% -2.8% +10.7% ➖ noise
9 datafusion:vortex-file-compressed -0.2% +1.6% -1.8% +10.7% ➖ noise
9 duckdb:duckdb +3.1% +1.6% +1.5% +10.7% ➖ noise
9 duckdb:vortex-compact +0.3% +1.6% -1.2% +10.7% ➖ noise
9 duckdb:vortex-file-compressed +4.4% +1.6% +2.8% +10.7% ➖ noise
10 datafusion:arrow -4.5% +3.3% -7.5% +10.7% ➖ noise
10 datafusion:vortex-compact +3.8% +3.3% +0.5% +10.7% ➖ noise
10 datafusion:vortex-file-compressed +12.8% +3.3% +9.2% +10.7% ➖ noise
10 duckdb:duckdb -0.5% +3.3% -3.7% +11.5% ➖ noise
10 duckdb:vortex-compact +6.4% +3.3% +3.0% +10.7% ➖ noise
10 duckdb:vortex-file-compressed +2.4% +3.3% -0.9% +10.7% ➖ noise
11 datafusion:arrow -4.0% +0.4% -4.4% +13.8% ➖ noise
11 datafusion:vortex-compact +1.1% +0.4% +0.7% +10.7% ➖ noise
11 datafusion:vortex-file-compressed +3.8% +0.4% +3.3% +10.7% ➖ noise
11 duckdb:duckdb +3.2% +0.4% +2.7% +11.9% ➖ noise
11 duckdb:vortex-compact -2.6% +0.4% -3.0% +10.7% ➖ noise
11 duckdb:vortex-file-compressed +1.2% +0.4% +0.8% +10.7% ➖ noise
12 datafusion:arrow -0.2% -2.7% +2.5% +20.7% ➖ noise
12 datafusion:vortex-compact -0.3% -2.7% +2.5% +10.7% ➖ noise
12 datafusion:vortex-file-compressed +2.5% -2.7% +5.3% +10.8% ➖ noise
12 duckdb:duckdb +1.8% -2.7% +4.6% +10.7% ➖ noise
12 duckdb:vortex-compact -0.4% -2.7% +2.3% +10.7% ➖ noise
12 duckdb:vortex-file-compressed +5.0% -2.7% +7.8% +12.0% ➖ noise
13 datafusion:arrow +0.6% +1.1% -0.4% +10.7% ➖ noise
13 datafusion:vortex-compact +1.5% +1.1% +0.4% +10.7% ➖ noise
13 datafusion:vortex-file-compressed +3.7% +1.1% +2.6% +10.7% ➖ noise
13 duckdb:duckdb -0.3% +1.1% -1.4% +11.0% ➖ noise
13 duckdb:vortex-compact +2.7% +1.1% +1.7% +10.7% ➖ noise
13 duckdb:vortex-file-compressed +7.0% +1.1% +5.9% +10.7% ➖ noise
14 datafusion:arrow +2.3% -1.4% +3.7% +13.0% ➖ noise
14 datafusion:vortex-compact -0.6% -1.4% +0.7% +10.9% ➖ noise
14 datafusion:vortex-file-compressed +3.5% -1.4% +5.0% +13.9% ➖ noise
14 duckdb:duckdb +14.5% -1.4% +16.1% +17.9% ➖ noise
14 duckdb:vortex-compact +3.3% -1.4% +4.7% +11.7% ➖ noise
14 duckdb:vortex-file-compressed +4.4% -1.4% +5.8% +14.7% ➖ noise
15 datafusion:arrow +3.1% +14.3% -9.9% +11.7% ➖ noise
15 datafusion:vortex-compact +2.4% +14.3% -10.5% +12.0% ➖ noise
15 datafusion:vortex-file-compressed +0.8% +14.3% -11.9% +12.8% ✅ faster
15 duckdb:duckdb -1.4% +14.3% -13.7% +26.7% ➖ noise
15 duckdb:vortex-compact +3.3% +14.3% -9.6% +15.0% ➖ noise
15 duckdb:vortex-file-compressed +2.0% +14.3% -10.8% +12.0% ✅ faster
16 datafusion:arrow +2.9% +1.7% +1.3% +10.7% ➖ noise
16 datafusion:vortex-compact -0.8% +1.7% -2.4% +10.7% ➖ noise
16 datafusion:vortex-file-compressed -1.5% +1.7% -3.1% +10.7% ➖ noise
16 duckdb:duckdb +3.8% +1.7% +2.1% +10.7% ➖ noise
16 duckdb:vortex-compact +0.6% +1.7% -1.1% +10.7% ➖ noise
16 duckdb:vortex-file-compressed +1.6% +1.7% -0.1% +10.7% ➖ noise
17 datafusion:arrow -0.0% -0.6% +0.6% +11.1% ➖ noise
17 datafusion:vortex-compact -1.5% -0.6% -0.9% +11.9% ➖ noise
17 datafusion:vortex-file-compressed +2.3% -0.6% +2.9% +12.9% ➖ noise
17 duckdb:duckdb +2.0% -0.6% +2.6% +12.1% ➖ noise
17 duckdb:vortex-compact -0.2% -0.6% +0.4% +14.9% ➖ noise
17 duckdb:vortex-file-compressed -1.6% -0.6% -1.0% +14.1% ➖ noise
18 datafusion:arrow +3.1% -2.8% +6.0% +10.7% ➖ noise
18 datafusion:vortex-compact -0.4% -2.8% +2.5% +10.7% ➖ noise
18 datafusion:vortex-file-compressed -1.6% -2.8% +1.2% +10.7% ➖ noise
18 duckdb:duckdb -0.6% -2.8% +2.2% +10.7% ➖ noise
18 duckdb:vortex-compact +0.9% -2.8% +3.8% +10.7% ➖ noise
18 duckdb:vortex-file-compressed +2.1% -2.8% +5.0% +10.7% ➖ noise
19 datafusion:arrow +9.2% +5.4% +3.6% +15.8% ➖ noise
19 datafusion:vortex-compact +1.3% +5.4% -3.8% +12.7% ➖ noise
19 datafusion:vortex-file-compressed +1.3% +5.4% -3.9% +13.1% ➖ noise
19 duckdb:duckdb +1.2% +5.4% -4.0% +13.5% ➖ noise
19 duckdb:vortex-compact -1.4% +5.4% -6.4% +12.3% ➖ noise
19 duckdb:vortex-file-compressed +2.9% +5.4% -2.3% +11.6% ➖ noise
20 datafusion:arrow +7.9% -1.7% +9.8% +10.7% ➖ noise
20 datafusion:vortex-compact -0.8% -1.7% +0.9% +10.7% ➖ noise
20 datafusion:vortex-file-compressed +2.8% -1.7% +4.6% +10.7% ➖ noise
20 duckdb:duckdb -3.9% -1.7% -2.2% +10.7% ➖ noise
20 duckdb:vortex-compact +0.0% -1.7% +1.7% +10.7% ➖ noise
20 duckdb:vortex-file-compressed +3.2% -1.7% +5.0% +10.7% ➖ noise
21 datafusion:arrow +2.5% -0.6% +3.2% +10.7% ➖ noise
21 datafusion:vortex-compact +0.9% -0.6% +1.6% +10.7% ➖ noise
21 datafusion:vortex-file-compressed +2.9% -0.6% +3.6% +10.7% ➖ noise
21 duckdb:duckdb +5.0% -0.6% +5.6% +10.7% ➖ noise
21 duckdb:vortex-compact +3.8% -0.6% +4.5% +10.7% ➖ noise
21 duckdb:vortex-file-compressed +0.5% -0.6% +1.1% +10.7% ➖ noise
22 datafusion:arrow -0.4% +1.3% -1.8% +10.7% ➖ noise
22 datafusion:vortex-compact +15.5% +1.3% +14.0% +10.7% 🚨 regression
22 datafusion:vortex-file-compressed -3.6% +1.3% -4.9% +10.7% ➖ noise
22 duckdb:duckdb +2.2% +1.3% +0.9% +10.7% ➖ noise
22 duckdb:vortex-compact +25.3% +1.3% +23.6% +10.7% 🚨 regression
22 duckdb:vortex-file-compressed +5.2% +1.3% +3.8% +10.7% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: TPC-H SF=1 on S3

Verdict: No clear signal (environment too noisy confidence)
Attributed Vortex impact: -3.4%
Vortex (geomean): 1.034x ➖
Parquet (geomean): 1.071x ➖
Shifts: Parquet (control) +7.1% · Median polish +1.9%


datafusion / vortex-file-compressed (1.220x ➖, 0↑ 6↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 260771338 265815906 0.98
tpch_q02/datafusion:vortex-file-compressed 461802002 471378319 0.98
tpch_q03/datafusion:vortex-file-compressed 463779507 415646171 1.12
tpch_q04/datafusion:vortex-file-compressed 🚨 330504090 242369875 1.36
tpch_q05/datafusion:vortex-file-compressed 🚨 539376797 399126953 1.35
tpch_q06/datafusion:vortex-file-compressed 402578608 332438698 1.21
tpch_q07/datafusion:vortex-file-compressed 399177836 372860899 1.07
tpch_q08/datafusion:vortex-file-compressed 647862830 519194586 1.25
tpch_q09/datafusion:vortex-file-compressed 🚨 462501289 349248756 1.32
tpch_q10/datafusion:vortex-file-compressed 🚨 969816665 463045220 2.09
tpch_q11/datafusion:vortex-file-compressed 296956694 259598197 1.14
tpch_q12/datafusion:vortex-file-compressed 477102391 467235591 1.02
tpch_q13/datafusion:vortex-file-compressed 🚨 213668891 141754398 1.51
tpch_q14/datafusion:vortex-file-compressed 302270905 255858863 1.18
tpch_q15/datafusion:vortex-file-compressed 535784592 500729941 1.07
tpch_q16/datafusion:vortex-file-compressed 159994287 195620031 0.82
tpch_q17/datafusion:vortex-file-compressed 410063099 333833177 1.23
tpch_q18/datafusion:vortex-file-compressed 334764823 313777991 1.07
tpch_q19/datafusion:vortex-file-compressed 511822593 412749443 1.24
tpch_q20/datafusion:vortex-file-compressed 434611671 423251676 1.03
tpch_q21/datafusion:vortex-file-compressed 718018878 570462861 1.26
tpch_q22/datafusion:vortex-file-compressed 🚨 260717904 111953032 2.33
datafusion / vortex-compact (0.996x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 254128309 248746969 1.02
tpch_q02/datafusion:vortex-compact 449629077 420112739 1.07
tpch_q03/datafusion:vortex-compact 387914580 368310260 1.05
tpch_q04/datafusion:vortex-compact 209039337 219998296 0.95
tpch_q05/datafusion:vortex-compact 367211863 347969541 1.06
tpch_q06/datafusion:vortex-compact 294632881 332411485 0.89
tpch_q07/datafusion:vortex-compact 369979853 397967348 0.93
tpch_q08/datafusion:vortex-compact 536928473 484481764 1.11
tpch_q09/datafusion:vortex-compact 429003696 373424626 1.15
tpch_q10/datafusion:vortex-compact 443802544 517683646 0.86
tpch_q11/datafusion:vortex-compact 336690857 298377276 1.13
tpch_q12/datafusion:vortex-compact 504582789 497533281 1.01
tpch_q13/datafusion:vortex-compact 158038191 160348403 0.99
tpch_q14/datafusion:vortex-compact 291808193 277434299 1.05
tpch_q15/datafusion:vortex-compact 557046504 458287269 1.22
tpch_q16/datafusion:vortex-compact 170511703 206228081 0.83
tpch_q17/datafusion:vortex-compact 348333805 377318975 0.92
tpch_q18/datafusion:vortex-compact 272825532 277134443 0.98
tpch_q19/datafusion:vortex-compact 472738322 507349361 0.93
tpch_q20/datafusion:vortex-compact 435536342 445052958 0.98
tpch_q21/datafusion:vortex-compact 537289700 518931458 1.04
tpch_q22/datafusion:vortex-compact 99802317 114667481 0.87
datafusion / parquet (1.115x ➖, 0↑ 3↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 231134994 219837595 1.05
tpch_q02/datafusion:parquet 393790299 410338420 0.96
tpch_q03/datafusion:parquet 281837122 290560179 0.97
tpch_q04/datafusion:parquet 143970067 145271204 0.99
tpch_q05/datafusion:parquet 444698543 418139714 1.06
tpch_q06/datafusion:parquet 139905295 133899676 1.04
tpch_q07/datafusion:parquet 472837688 435000312 1.09
tpch_q08/datafusion:parquet 531450665 550248617 0.97
tpch_q09/datafusion:parquet 464635906 455877673 1.02
tpch_q10/datafusion:parquet 510185757 494183317 1.03
tpch_q11/datafusion:parquet 316268751 316519630 1.00
tpch_q12/datafusion:parquet 239972447 212688524 1.13
tpch_q13/datafusion:parquet 463487909 424880444 1.09
tpch_q14/datafusion:parquet 🚨 234486750 171501219 1.37
tpch_q15/datafusion:parquet 🚨 416563434 292276126 1.43
tpch_q16/datafusion:parquet 176117022 162866339 1.08
tpch_q17/datafusion:parquet 460763487 355122452 1.30
tpch_q18/datafusion:parquet 477090754 413269579 1.15
tpch_q19/datafusion:parquet 352555143 299363276 1.18
tpch_q20/datafusion:parquet 365867268 288927663 1.27
tpch_q21/datafusion:parquet 🚨 575018070 435838702 1.32
tpch_q22/datafusion:parquet 132163698 109549989 1.21
duckdb / vortex-file-compressed (0.989x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 283175940 276781568 1.02
tpch_q02/duckdb:vortex-file-compressed 1020060136 951684032 1.07
tpch_q03/duckdb:vortex-file-compressed 675766127 709754452 0.95
tpch_q04/duckdb:vortex-file-compressed 429011211 421110309 1.02
tpch_q05/duckdb:vortex-file-compressed 981401214 869342123 1.13
tpch_q06/duckdb:vortex-file-compressed 395950510 415375672 0.95
tpch_q07/duckdb:vortex-file-compressed 911415835 822265543 1.11
tpch_q08/duckdb:vortex-file-compressed 972256617 1033317794 0.94
tpch_q09/duckdb:vortex-file-compressed 899796931 858564892 1.05
tpch_q10/duckdb:vortex-file-compressed 764360947 771919719 0.99
tpch_q11/duckdb:vortex-file-compressed 499403707 493451418 1.01
tpch_q12/duckdb:vortex-file-compressed 461088901 454145453 1.02
tpch_q13/duckdb:vortex-file-compressed 502044549 483970902 1.04
tpch_q14/duckdb:vortex-file-compressed 436067827 488308755 0.89
tpch_q15/duckdb:vortex-file-compressed 307568097 313505971 0.98
tpch_q16/duckdb:vortex-file-compressed 375141787 415019121 0.90
tpch_q17/duckdb:vortex-file-compressed 739057529 678703849 1.09
tpch_q18/duckdb:vortex-file-compressed 540387529 608315044 0.89
tpch_q19/duckdb:vortex-file-compressed 375574755 470522261 0.80
tpch_q20/duckdb:vortex-file-compressed 902814759 897549789 1.01
tpch_q21/duckdb:vortex-file-compressed 1135184126 1138509903 1.00
tpch_q22/duckdb:vortex-file-compressed 375161326 383665899 0.98
duckdb / vortex-compact (0.952x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 283971738 296643276 0.96
tpch_q02/duckdb:vortex-compact 979092780 1017931682 0.96
tpch_q03/duckdb:vortex-compact 643546771 690725017 0.93
tpch_q04/duckdb:vortex-compact 375998766 347807109 1.08
tpch_q05/duckdb:vortex-compact 864156134 867367399 1.00
tpch_q06/duckdb:vortex-compact 371107698 417850963 0.89
tpch_q07/duckdb:vortex-compact 816586597 804963782 1.01
tpch_q08/duckdb:vortex-compact 987154502 1006509299 0.98
tpch_q09/duckdb:vortex-compact 851490916 932349548 0.91
tpch_q10/duckdb:vortex-compact 696753367 824746314 0.84
tpch_q11/duckdb:vortex-compact 476180298 483102893 0.99
tpch_q12/duckdb:vortex-compact 454669689 442316604 1.03
tpch_q13/duckdb:vortex-compact 441985892 480886920 0.92
tpch_q14/duckdb:vortex-compact 462571295 458570412 1.01
tpch_q15/duckdb:vortex-compact 328037644 355124912 0.92
tpch_q16/duckdb:vortex-compact 375822619 371596097 1.01
tpch_q17/duckdb:vortex-compact 686060722 757660011 0.91
tpch_q18/duckdb:vortex-compact 450631098 541598023 0.83
tpch_q19/duckdb:vortex-compact 481780238 420729445 1.15
tpch_q20/duckdb:vortex-compact 790612254 854638790 0.93
tpch_q21/duckdb:vortex-compact 1014911795 1221505723 0.83
tpch_q22/duckdb:vortex-compact 369805414 398702328 0.93
duckdb / parquet (1.029x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 490062756 439040465 1.12
tpch_q02/duckdb:parquet 1237573129 1066942766 1.16
tpch_q03/duckdb:parquet 1048123486 1109703398 0.94
tpch_q04/duckdb:parquet 637201661 636466833 1.00
tpch_q05/duckdb:parquet 1231241462 1193275342 1.03
tpch_q06/duckdb:parquet 420641504 399842381 1.05
tpch_q07/duckdb:parquet 1177349644 1122250596 1.05
tpch_q08/duckdb:parquet 1466618627 1662593822 0.88
tpch_q09/duckdb:parquet 1361751435 1327913671 1.03
tpch_q10/duckdb:parquet 1220246964 1195072816 1.02
tpch_q11/duckdb:parquet 659813530 609639355 1.08
tpch_q12/duckdb:parquet 726679108 760330848 0.96
tpch_q13/duckdb:parquet 925013044 893453341 1.04
tpch_q14/duckdb:parquet 678082069 677996393 1.00
tpch_q15/duckdb:parquet 527527539 476666462 1.11
tpch_q16/duckdb:parquet 639997239 682886628 0.94
tpch_q17/duckdb:parquet 760986367 793656290 0.96
tpch_q18/duckdb:parquet 954975808 882136287 1.08
tpch_q19/duckdb:parquet 774810152 770523921 1.01
tpch_q20/duckdb:parquet 1272540675 1186133678 1.07
tpch_q21/duckdb:parquet 1138114840 1117755003 1.02
tpch_q22/duckdb:parquet 586471144 512539980 1.14
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +2.2% +8.3% -5.7% +71.5% ➖ noise
1 datafusion:vortex-file-compressed -1.9% +8.3% -9.4% +78.7% ➖ noise
1 duckdb:vortex-compact -4.3% +8.3% -11.6% +41.1% ➖ noise
1 duckdb:vortex-file-compressed +2.3% +8.3% -5.6% +50.1% ➖ noise
2 datafusion:vortex-compact +7.0% +5.5% +1.4% +30.0% ➖ noise
2 datafusion:vortex-file-compressed -2.0% +5.5% -7.1% +30.0% ➖ noise
2 duckdb:vortex-compact -3.8% +5.5% -8.8% +30.0% ➖ noise
2 duckdb:vortex-file-compressed +7.2% +5.5% +1.6% +30.0% ➖ noise
3 datafusion:vortex-compact +5.3% -4.3% +10.0% +41.1% ➖ noise
3 datafusion:vortex-file-compressed +11.6% -4.3% +16.6% +51.4% ➖ noise
3 duckdb:vortex-compact -6.8% -4.3% -2.7% +41.9% ➖ noise
3 duckdb:vortex-file-compressed -4.8% -4.3% -0.5% +30.0% ➖ noise
4 datafusion:vortex-compact -5.0% -0.4% -4.6% +30.9% ➖ noise
4 datafusion:vortex-file-compressed +36.4% -0.4% +36.9% +30.4% 🚨 regression
4 duckdb:vortex-compact +8.1% -0.4% +8.5% +30.0% ➖ noise
4 duckdb:vortex-file-compressed +1.9% -0.4% +2.3% +41.8% ➖ noise
5 datafusion:vortex-compact +5.5% +4.8% +0.7% +30.0% ➖ noise
5 datafusion:vortex-file-compressed +35.1% +4.8% +29.0% +30.0% ➖ noise
5 duckdb:vortex-compact -0.4% +4.8% -4.9% +30.0% ➖ noise
5 duckdb:vortex-file-compressed +12.9% +4.8% +7.8% +30.0% ➖ noise
6 datafusion:vortex-compact -11.4% +4.8% -15.5% +30.0% ➖ noise
6 datafusion:vortex-file-compressed +21.1% +4.8% +15.5% +30.0% ➖ noise
6 duckdb:vortex-compact -11.2% +4.8% -15.3% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -4.7% +4.8% -9.1% +30.0% ➖ noise
7 datafusion:vortex-compact -7.0% +6.8% -12.9% +30.0% ➖ noise
7 datafusion:vortex-file-compressed +7.1% +6.8% +0.3% +30.0% ➖ noise
7 duckdb:vortex-compact +1.4% +6.8% -5.0% +30.0% ➖ noise
7 duckdb:vortex-file-compressed +10.8% +6.8% +3.8% +30.0% ➖ noise
8 datafusion:vortex-compact +10.8% -7.7% +20.1% +30.0% ➖ noise
8 datafusion:vortex-file-compressed +24.8% -7.7% +35.2% +30.0% 🚨 regression
8 duckdb:vortex-compact -1.9% -7.7% +6.3% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -5.9% -7.7% +1.9% +30.0% ➖ noise
9 datafusion:vortex-compact +14.9% +2.2% +12.4% +30.0% ➖ noise
9 datafusion:vortex-file-compressed +32.4% +2.2% +29.5% +38.4% ➖ noise
9 duckdb:vortex-compact -8.7% +2.2% -10.7% +30.0% ➖ noise
9 duckdb:vortex-file-compressed +4.8% +2.2% +2.5% +30.0% ➖ noise
10 datafusion:vortex-compact -14.3% +2.7% -16.5% +30.0% ➖ noise
10 datafusion:vortex-file-compressed +109.4% +2.7% +104.0% +35.7% 🚨 regression
10 duckdb:vortex-compact -15.5% +2.7% -17.7% +30.0% ➖ noise
10 duckdb:vortex-file-compressed -1.0% +2.7% -3.6% +30.0% ➖ noise
11 datafusion:vortex-compact +12.8% +4.0% +8.5% +30.0% ➖ noise
11 datafusion:vortex-file-compressed +14.4% +4.0% +10.0% +42.8% ➖ noise
11 duckdb:vortex-compact -1.4% +4.0% -5.2% +30.0% ➖ noise
11 duckdb:vortex-file-compressed +1.2% +4.0% -2.7% +30.0% ➖ noise
12 datafusion:vortex-compact +1.4% +3.8% -2.3% +30.0% ➖ noise
12 datafusion:vortex-file-compressed +2.1% +3.8% -1.7% +30.0% ➖ noise
12 duckdb:vortex-compact +2.8% +3.8% -1.0% +30.0% ➖ noise
12 duckdb:vortex-file-compressed +1.5% +3.8% -2.2% +30.0% ➖ noise
13 datafusion:vortex-compact -1.4% +6.3% -7.3% +72.1% ➖ noise
13 datafusion:vortex-file-compressed +50.7% +6.3% +41.8% +63.3% ➖ noise
13 duckdb:vortex-compact -8.1% +6.3% -13.5% +30.0% ➖ noise
13 duckdb:vortex-file-compressed +3.7% +6.3% -2.4% +30.0% ➖ noise
14 datafusion:vortex-compact +5.2% +16.9% -10.1% +34.7% ➖ noise
14 datafusion:vortex-file-compressed +18.1% +16.9% +1.0% +30.2% ➖ noise
14 duckdb:vortex-compact +0.9% +16.9% -13.7% +41.5% ➖ noise
14 duckdb:vortex-file-compressed -10.7% +16.9% -23.6% +30.0% ✅ faster
15 datafusion:vortex-compact +21.5% +25.6% -3.2% +30.0% ➖ noise
15 datafusion:vortex-file-compressed +7.0% +25.6% -14.8% +30.0% ➖ noise
15 duckdb:vortex-compact -7.6% +25.6% -26.4% +30.0% ✅ faster
15 duckdb:vortex-file-compressed -1.9% +25.6% -21.9% +30.8% ➖ noise
16 datafusion:vortex-compact -17.3% +0.7% -17.9% +30.0% ➖ noise
16 datafusion:vortex-file-compressed -18.2% +0.7% -18.8% +30.0% ➖ noise
16 duckdb:vortex-compact +1.1% +0.7% +0.5% +30.0% ➖ noise
16 duckdb:vortex-file-compressed -9.6% +0.7% -10.2% +30.0% ➖ noise
17 datafusion:vortex-compact -7.7% +11.5% -17.2% +30.0% ➖ noise
17 datafusion:vortex-file-compressed +22.8% +11.5% +10.1% +32.5% ➖ noise
17 duckdb:vortex-compact -9.5% +11.5% -18.8% +30.0% ➖ noise
17 duckdb:vortex-file-compressed +8.9% +11.5% -2.4% +30.0% ➖ noise
18 datafusion:vortex-compact -1.6% +11.8% -11.9% +30.0% ➖ noise
18 datafusion:vortex-file-compressed +6.7% +11.8% -4.6% +30.0% ➖ noise
18 duckdb:vortex-compact -16.8% +11.8% -25.6% +30.0% ✅ faster
18 duckdb:vortex-file-compressed -11.2% +11.8% -20.5% +30.0% ➖ noise
19 datafusion:vortex-compact -6.8% +8.8% -14.4% +30.0% ➖ noise
19 datafusion:vortex-file-compressed +24.0% +8.8% +13.9% +30.0% ➖ noise
19 duckdb:vortex-compact +14.5% +8.8% +5.2% +30.0% ➖ noise
19 duckdb:vortex-file-compressed -20.2% +8.8% -26.7% +30.0% ✅ faster
20 datafusion:vortex-compact -2.1% +16.6% -16.0% +30.0% ➖ noise
20 datafusion:vortex-file-compressed +2.7% +16.6% -11.9% +30.0% ➖ noise
20 duckdb:vortex-compact -7.5% +16.6% -20.6% +30.0% ➖ noise
20 duckdb:vortex-file-compressed +0.6% +16.6% -13.7% +30.0% ➖ noise
21 datafusion:vortex-compact +3.5% +15.9% -10.7% +30.0% ➖ noise
21 datafusion:vortex-file-compressed +25.9% +15.9% +8.6% +39.4% ➖ noise
21 duckdb:vortex-compact -16.9% +15.9% -28.3% +30.0% ✅ faster
21 duckdb:vortex-file-compressed -0.3% +15.9% -14.0% +30.0% ➖ noise
22 datafusion:vortex-compact -13.0% +17.5% -25.9% +30.0% ✅ faster
22 datafusion:vortex-file-compressed +132.9% +17.5% +98.2% +34.0% 🚨 regression
22 duckdb:vortex-compact -7.2% +17.5% -21.1% +30.0% ➖ noise
22 duckdb:vortex-file-compressed -2.2% +17.5% -16.8% +30.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: FineWeb S3

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -7.3%
Vortex (geomean): 0.955x ➖
Parquet (geomean): 1.031x ➖
Shifts: Parquet (control) +3.1% · Median polish +1.2%


datafusion / vortex-file-compressed (0.843x ➖, 1↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 🚀 32718742 51921015 0.63
fineweb_q01/datafusion:vortex-file-compressed 517108242 584530848 0.88
fineweb_q02/datafusion:vortex-file-compressed 490726356 433427441 1.13
fineweb_q03/datafusion:vortex-file-compressed 1128370099 1344299175 0.84
fineweb_q04/datafusion:vortex-file-compressed 1129838731 1349778403 0.84
fineweb_q05/datafusion:vortex-file-compressed 1090020591 1350654431 0.81
fineweb_q06/datafusion:vortex-file-compressed 1285531342 1506829353 0.85
fineweb_q07/datafusion:vortex-file-compressed 1101091372 1372853916 0.80
fineweb_q08/datafusion:vortex-file-compressed 426337692 484115082 0.88
datafusion / vortex-compact (0.996x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 35646758 35024598 1.02
fineweb_q01/datafusion:vortex-compact 688065038 622901201 1.10
fineweb_q02/datafusion:vortex-compact 583307782 622939735 0.94
fineweb_q03/datafusion:vortex-compact 1310016402 1366580372 0.96
fineweb_q04/datafusion:vortex-compact 1538204003 1563202215 0.98
fineweb_q05/datafusion:vortex-compact 1337495015 1375056452 0.97
fineweb_q06/datafusion:vortex-compact 1263855981 1241380122 1.02
fineweb_q07/datafusion:vortex-compact 1125236334 1165138245 0.97
fineweb_q08/datafusion:vortex-compact 360894242 356674922 1.01
datafusion / parquet (1.061x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 1093842950 1143385774 0.96
fineweb_q01/datafusion:parquet 1796415035 1818120374 0.99
fineweb_q02/datafusion:parquet 1857171468 1717637650 1.08
fineweb_q03/datafusion:parquet 1819133400 1637255209 1.11
fineweb_q04/datafusion:parquet 1974321116 1716028458 1.15
fineweb_q05/datafusion:parquet 1946943145 1861226631 1.05
fineweb_q06/datafusion:parquet 1857832107 1673138691 1.11
fineweb_q07/datafusion:parquet 1787925562 1750459065 1.02
fineweb_q08/datafusion:parquet 1916242915 1747559475 1.10
duckdb / vortex-file-compressed (0.950x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 88967393 90121212 0.99
fineweb_q01/duckdb:vortex-file-compressed 610555637 586317814 1.04
fineweb_q02/duckdb:vortex-file-compressed 🚨 629228350 471968024 1.33
fineweb_q03/duckdb:vortex-file-compressed 1396539232 1554075900 0.90
fineweb_q04/duckdb:vortex-file-compressed 1353892170 1551778287 0.87
fineweb_q05/duckdb:vortex-file-compressed 1312956990 1484114024 0.88
fineweb_q06/duckdb:vortex-file-compressed 1367869348 1699053742 0.81
fineweb_q07/duckdb:vortex-file-compressed 1301975725 1477708998 0.88
fineweb_q08/duckdb:vortex-file-compressed 570574532 608213084 0.94
duckdb / vortex-compact (1.044x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 105815922 81902331 1.29
fineweb_q01/duckdb:vortex-compact 549916222 521568553 1.05
fineweb_q02/duckdb:vortex-compact 616424787 591585755 1.04
fineweb_q03/duckdb:vortex-compact 1712346697 1703720856 1.01
fineweb_q04/duckdb:vortex-compact 1707679971 1811344761 0.94
fineweb_q05/duckdb:vortex-compact 1636720949 1612667777 1.01
fineweb_q06/duckdb:vortex-compact 1508116685 1545894201 0.98
fineweb_q07/duckdb:vortex-compact 1417708175 1297187354 1.09
fineweb_q08/duckdb:vortex-compact 465775946 461137178 1.01
duckdb / parquet (1.001x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 1104329192 1045110942 1.06
fineweb_q01/duckdb:parquet 1411288486 1353102117 1.04
fineweb_q02/duckdb:parquet 1322733809 1521707344 0.87
fineweb_q03/duckdb:parquet 3506347796 3600149083 0.97
fineweb_q04/duckdb:parquet 1864505092 1897811114 0.98
fineweb_q05/duckdb:parquet 2197730287 2259329098 0.97
fineweb_q06/duckdb:parquet 4457647434 4161346466 1.07
fineweb_q07/duckdb:parquet 2615833460 2595656549 1.01
fineweb_q08/duckdb:parquet 1169177235 1112394065 1.05
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact +1.8% +0.5% +1.2% +298.3% ➖ noise
0 datafusion:vortex-file-compressed -37.0% +0.5% -37.3% +223.7% ➖ noise
0 duckdb:vortex-compact +29.2% +0.5% +28.5% +60.0% ➖ noise
0 duckdb:vortex-file-compressed -1.3% +0.5% -1.8% +31.5% ➖ noise
1 datafusion:vortex-compact +10.5% +1.5% +8.8% +43.9% ➖ noise
1 datafusion:vortex-file-compressed -11.5% +1.5% -12.9% +49.2% ➖ noise
1 duckdb:vortex-compact +5.4% +1.5% +3.9% +30.0% ➖ noise
1 duckdb:vortex-file-compressed +4.1% +1.5% +2.6% +30.0% ➖ noise
2 datafusion:vortex-compact -6.4% -3.1% -3.4% +30.0% ➖ noise
2 datafusion:vortex-file-compressed +13.2% -3.1% +16.8% +30.0% ➖ noise
2 duckdb:vortex-compact +4.2% -3.1% +7.5% +30.0% ➖ noise
2 duckdb:vortex-file-compressed +33.3% -3.1% +37.5% +49.5% ➖ noise
3 datafusion:vortex-compact -4.1% +4.0% -7.8% +30.0% ➖ noise
3 datafusion:vortex-file-compressed -16.1% +4.0% -19.3% +30.0% ➖ noise
3 duckdb:vortex-compact +0.5% +4.0% -3.4% +30.0% ➖ noise
3 duckdb:vortex-file-compressed -10.1% +4.0% -13.6% +40.4% ➖ noise
4 datafusion:vortex-compact -1.6% +6.3% -7.4% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -16.3% +6.3% -21.3% +30.0% ➖ noise
4 duckdb:vortex-compact -5.7% +6.3% -11.3% +30.0% ➖ noise
4 duckdb:vortex-file-compressed -12.8% +6.3% -17.9% +30.0% ➖ noise
5 datafusion:vortex-compact -2.7% +0.9% -3.6% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -19.3% +0.9% -20.0% +30.0% ➖ noise
5 duckdb:vortex-compact +1.5% +0.9% +0.6% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -11.5% +0.9% -12.3% +30.0% ➖ noise
6 datafusion:vortex-compact +1.8% +9.1% -6.6% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -14.7% +9.1% -21.8% +30.0% ➖ noise
6 duckdb:vortex-compact -2.4% +9.1% -10.5% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -19.5% +9.1% -26.2% +30.0% ✅ faster
7 datafusion:vortex-compact -3.4% +1.5% -4.8% +30.0% ➖ noise
7 datafusion:vortex-file-compressed -19.8% +1.5% -20.9% +30.0% ➖ noise
7 duckdb:vortex-compact +9.3% +1.5% +7.7% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -11.9% +1.5% -13.2% +30.0% ➖ noise
8 datafusion:vortex-compact +1.2% +7.4% -5.7% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -11.9% +7.4% -18.0% +30.0% ➖ noise
8 duckdb:vortex-compact +1.0% +7.4% -5.9% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -6.2% +7.4% -12.6% +30.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: FineWeb NVMe

Verdict: Likely regression (high confidence)
Attributed Vortex impact: +34.5%
Vortex (geomean): 1.350x ❌
Parquet (geomean): 1.004x ➖
Shifts: Parquet (control) +0.4% · Median polish +27.3%


datafusion / vortex-file-compressed (1.421x ❌, 0↑ 7↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 5533356 5162953 1.07
fineweb_q01/datafusion:vortex-file-compressed 🚨 30766608 20120457 1.53
fineweb_q02/datafusion:vortex-file-compressed 🚨 30547213 22101303 1.38
fineweb_q03/datafusion:vortex-file-compressed 🚨 160325387 77988407 2.06
fineweb_q04/datafusion:vortex-file-compressed 🚨 261293839 223696942 1.17
fineweb_q05/datafusion:vortex-file-compressed 🚨 241959179 213066635 1.14
fineweb_q06/datafusion:vortex-file-compressed 🚨 104004858 49942629 2.08
fineweb_q07/datafusion:vortex-file-compressed 🚨 110274204 56070852 1.97
fineweb_q08/datafusion:vortex-file-compressed 19352058 20698235 0.93
datafusion / vortex-compact (1.337x ❌, 0↑ 8↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 6164835 5716263 1.08
fineweb_q01/datafusion:vortex-compact 🚨 154350410 88278306 1.75
fineweb_q02/datafusion:vortex-compact 🚨 157731403 101393291 1.56
fineweb_q03/datafusion:vortex-compact 🚨 1207066138 853788410 1.41
fineweb_q04/datafusion:vortex-compact 🚨 1300112496 903731554 1.44
fineweb_q05/datafusion:vortex-compact 🚨 1102964798 813226990 1.36
fineweb_q06/datafusion:vortex-compact 🚨 565799952 459405201 1.23
fineweb_q07/datafusion:vortex-compact 🚨 571639780 471255223 1.21
fineweb_q08/datafusion:vortex-compact 🚨 19514958 17231430 1.13
datafusion / parquet (0.994x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 6495292 6754721 0.96
fineweb_q01/datafusion:parquet 278679869 286886286 0.97
fineweb_q02/datafusion:parquet 288882071 287568155 1.00
fineweb_q03/datafusion:parquet 287828512 277504070 1.04
fineweb_q04/datafusion:parquet 298136570 292178824 1.02
fineweb_q05/datafusion:parquet 293375300 299016451 0.98
fineweb_q06/datafusion:parquet 281163770 288604267 0.97
fineweb_q07/datafusion:parquet 279375103 278165924 1.00
fineweb_q08/datafusion:parquet 276148173 277368035 1.00
duckdb / vortex-file-compressed (1.374x ❌, 1↑ 7↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 🚀 3167373 3545394 0.89
fineweb_q01/duckdb:vortex-file-compressed 🚨 31469413 21812349 1.44
fineweb_q02/duckdb:vortex-file-compressed 🚨 34848058 23297889 1.50
fineweb_q03/duckdb:vortex-file-compressed 🚨 186865288 115720864 1.61
fineweb_q04/duckdb:vortex-file-compressed 🚨 269906985 220348500 1.22
fineweb_q05/duckdb:vortex-file-compressed 🚨 234481631 205202412 1.14
fineweb_q06/duckdb:vortex-file-compressed 🚨 103995228 50344582 2.07
fineweb_q07/duckdb:vortex-file-compressed 🚨 109729046 52432070 2.09
fineweb_q08/duckdb:vortex-file-compressed 20573402 22189205 0.93
duckdb / vortex-compact (1.272x ❌, 0↑ 7↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 3966371 3819314 1.04
fineweb_q01/duckdb:vortex-compact 🚨 156766284 106276778 1.48
fineweb_q02/duckdb:vortex-compact 🚨 162868390 121525289 1.34
fineweb_q03/duckdb:vortex-compact 🚨 1194395190 852119943 1.40
fineweb_q04/duckdb:vortex-compact 🚨 1276358209 897355050 1.42
fineweb_q05/duckdb:vortex-compact 🚨 1077223200 800255877 1.35
fineweb_q06/duckdb:vortex-compact 🚨 557096738 454480138 1.23
fineweb_q07/duckdb:vortex-compact 🚨 575438856 471110137 1.22
fineweb_q08/duckdb:vortex-compact 21996940 20846393 1.06
duckdb / parquet (1.014x ➖, 0↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 30229046 28781447 1.05
fineweb_q01/duckdb:parquet 83394811 84176703 0.99
fineweb_q02/duckdb:parquet 82340096 84055023 0.98
fineweb_q03/duckdb:parquet 307732484 307900274 1.00
fineweb_q04/duckdb:parquet 435765035 439386501 0.99
fineweb_q05/duckdb:parquet 409202593 409966460 1.00
fineweb_q06/duckdb:parquet 197683020 197339684 1.00
fineweb_q07/duckdb:parquet 207611650 207524909 1.00
fineweb_q08/duckdb:parquet 🚨 32501489 29075220 1.12
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact +7.8% +0.5% +7.3% +51.1% ➖ noise
0 datafusion:vortex-file-compressed +7.2% +0.5% +6.6% +54.0% ➖ noise
0 duckdb:vortex-compact +3.9% +0.5% +3.3% +49.5% ➖ noise
0 duckdb:vortex-file-compressed -10.7% +0.5% -11.1% +87.0% ➖ noise
1 datafusion:vortex-compact +74.8% -1.9% +78.2% +14.5% 🚨 regression
1 datafusion:vortex-file-compressed +52.9% -1.9% +55.9% +27.0% 🚨 regression
1 duckdb:vortex-compact +47.5% -1.9% +50.4% +16.3% 🚨 regression
1 duckdb:vortex-file-compressed +44.3% -1.9% +47.1% +61.7% ➖ noise
2 datafusion:vortex-compact +55.6% -0.8% +56.8% +10.0% 🚨 regression
2 datafusion:vortex-file-compressed +38.2% -0.8% +39.3% +10.0% 🚨 regression
2 duckdb:vortex-compact +34.0% -0.8% +35.1% +10.0% 🚨 regression
2 duckdb:vortex-file-compressed +49.6% -0.8% +50.8% +11.1% 🚨 regression
3 datafusion:vortex-compact +41.4% +1.8% +38.9% +10.0% 🚨 regression
3 datafusion:vortex-file-compressed +105.6% +1.8% +101.9% +15.7% 🚨 regression
3 duckdb:vortex-compact +40.2% +1.8% +37.7% +10.0% 🚨 regression
3 duckdb:vortex-file-compressed +61.5% +1.8% +58.6% +28.2% 🚨 regression
4 datafusion:vortex-compact +43.9% +0.6% +43.0% +10.0% 🚨 regression
4 datafusion:vortex-file-compressed +16.8% +0.6% +16.1% +10.0% 🚨 regression
4 duckdb:vortex-compact +42.2% +0.6% +41.4% +10.0% 🚨 regression
4 duckdb:vortex-file-compressed +22.5% +0.6% +21.8% +10.0% 🚨 regression
5 datafusion:vortex-compact +35.6% -1.0% +37.1% +10.0% 🚨 regression
5 datafusion:vortex-file-compressed +13.6% -1.0% +14.8% +10.0% 🚨 regression
5 duckdb:vortex-compact +34.6% -1.0% +36.0% +10.0% 🚨 regression
5 duckdb:vortex-file-compressed +14.3% -1.0% +15.5% +10.0% 🚨 regression
6 datafusion:vortex-compact +23.2% -1.2% +24.7% +10.0% 🚨 regression
6 datafusion:vortex-file-compressed +108.2% -1.2% +110.8% +10.0% 🚨 regression
6 duckdb:vortex-compact +22.6% -1.2% +24.1% +10.0% 🚨 regression
6 duckdb:vortex-file-compressed +106.6% -1.2% +109.1% +10.0% 🚨 regression
7 datafusion:vortex-compact +21.3% +0.2% +21.0% +10.0% 🚨 regression
7 datafusion:vortex-file-compressed +96.7% +0.2% +96.2% +10.0% 🚨 regression
7 duckdb:vortex-compact +22.1% +0.2% +21.9% +10.0% 🚨 regression
7 duckdb:vortex-file-compressed +109.3% +0.2% +108.8% +17.6% 🚨 regression
8 datafusion:vortex-compact +13.3% +5.5% +7.4% +13.8% ➖ noise
8 datafusion:vortex-file-compressed -6.5% +5.5% -11.4% +10.9% ✅ faster
8 duckdb:vortex-compact +5.5% +5.5% +0.0% +39.6% ➖ noise
8 duckdb:vortex-file-compressed -7.3% +5.5% -12.1% +12.1% ✅ faster

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: TPC-H SF=10 on S3

Verdict: No clear signal (environment too noisy confidence)
Attributed Vortex impact: -2.6%
Vortex (geomean): 0.993x ➖
Parquet (geomean): 1.019x ➖
Shifts: Parquet (control) +1.9% · Median polish +0.9%


datafusion / vortex-file-compressed (0.982x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 655403217 662817249 0.99
tpch_q02/datafusion:vortex-file-compressed 805926733 673139253 1.20
tpch_q03/datafusion:vortex-file-compressed 796658423 755396059 1.05
tpch_q04/datafusion:vortex-file-compressed 557226789 609711433 0.91
tpch_q05/datafusion:vortex-file-compressed 880175848 932847147 0.94
tpch_q06/datafusion:vortex-file-compressed 636216418 646113567 0.98
tpch_q07/datafusion:vortex-file-compressed 1027726643 998921236 1.03
tpch_q08/datafusion:vortex-file-compressed 1142837752 1131696905 1.01
tpch_q09/datafusion:vortex-file-compressed 1434742555 1410149389 1.02
tpch_q10/datafusion:vortex-file-compressed 957361522 1035865912 0.92
tpch_q11/datafusion:vortex-file-compressed 562708339 443631705 1.27
tpch_q12/datafusion:vortex-file-compressed 983936462 1218413907 0.81
tpch_q13/datafusion:vortex-file-compressed 386545930 445242027 0.87
tpch_q14/datafusion:vortex-file-compressed 577714185 738222365 0.78
tpch_q15/datafusion:vortex-file-compressed 1040733769 1230961097 0.85
tpch_q16/datafusion:vortex-file-compressed 363022276 385497691 0.94
tpch_q17/datafusion:vortex-file-compressed 1261048992 1130385126 1.12
tpch_q18/datafusion:vortex-file-compressed 1283103933 1258074243 1.02
tpch_q19/datafusion:vortex-file-compressed 818522948 940791358 0.87
tpch_q20/datafusion:vortex-file-compressed 928454474 954936995 0.97
tpch_q21/datafusion:vortex-file-compressed 1547762773 1536359498 1.01
tpch_q22/datafusion:vortex-file-compressed 393340372 326726217 1.20
datafusion / vortex-compact (0.971x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 665447217 682025873 0.98
tpch_q02/datafusion:vortex-compact 692839881 621207526 1.12
tpch_q03/datafusion:vortex-compact 686372662 667267053 1.03
tpch_q04/datafusion:vortex-compact 543102644 565475582 0.96
tpch_q05/datafusion:vortex-compact 812655718 877592403 0.93
tpch_q06/datafusion:vortex-compact 587623841 625608101 0.94
tpch_q07/datafusion:vortex-compact 892096759 955519214 0.93
tpch_q08/datafusion:vortex-compact 1031969867 1091152734 0.95
tpch_q09/datafusion:vortex-compact 1104748391 1151678118 0.96
tpch_q10/datafusion:vortex-compact 826815411 995624541 0.83
tpch_q11/datafusion:vortex-compact 479400577 378558794 1.27
tpch_q12/datafusion:vortex-compact 783831392 1069562305 0.73
tpch_q13/datafusion:vortex-compact 404326300 423759824 0.95
tpch_q14/datafusion:vortex-compact 564551953 670970925 0.84
tpch_q15/datafusion:vortex-compact 1161952000 1129315990 1.03
tpch_q16/datafusion:vortex-compact 372284388 352311944 1.06
tpch_q17/datafusion:vortex-compact 1212022875 1280479873 0.95
tpch_q18/datafusion:vortex-compact 1178177739 1233230724 0.96
tpch_q19/datafusion:vortex-compact 872856221 764891469 1.14
tpch_q20/datafusion:vortex-compact 1107700155 1125380359 0.98
tpch_q21/datafusion:vortex-compact 1547283434 1748322240 0.89
tpch_q22/datafusion:vortex-compact 459162479 423258096 1.08
datafusion / parquet (1.038x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 834998808 823489908 1.01
tpch_q02/datafusion:parquet 884154577 777118810 1.14
tpch_q03/datafusion:parquet 1022210911 878497725 1.16
tpch_q04/datafusion:parquet 465164729 488639877 0.95
tpch_q05/datafusion:parquet 1142720430 1122113815 1.02
tpch_q06/datafusion:parquet 540126876 554081926 0.97
tpch_q07/datafusion:parquet 1255612006 1169711411 1.07
tpch_q08/datafusion:parquet 1454557981 1456443425 1.00
tpch_q09/datafusion:parquet 1768246837 1728171333 1.02
tpch_q10/datafusion:parquet 1961100041 1903133636 1.03
tpch_q11/datafusion:parquet 588382781 474844425 1.24
tpch_q12/datafusion:parquet 725823065 775487851 0.94
tpch_q13/datafusion:parquet 844962450 664983082 1.27
tpch_q14/datafusion:parquet 780211053 742995456 1.05
tpch_q15/datafusion:parquet 1217355413 1204845467 1.01
tpch_q16/datafusion:parquet 314649044 335268961 0.94
tpch_q17/datafusion:parquet 1275723368 1271053465 1.00
tpch_q18/datafusion:parquet 1434329868 1403161813 1.02
tpch_q19/datafusion:parquet 934858727 861954555 1.08
tpch_q20/datafusion:parquet 1162778566 1140177658 1.02
tpch_q21/datafusion:parquet 1705154969 1794684841 0.95
tpch_q22/datafusion:parquet 666902506 667419096 1.00
duckdb / vortex-file-compressed (0.974x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 615411463 625759898 0.98
tpch_q02/duckdb:vortex-file-compressed 1144235204 1188848489 0.96
tpch_q03/duckdb:vortex-file-compressed 818907106 917648580 0.89
tpch_q04/duckdb:vortex-file-compressed 649648245 592184481 1.10
tpch_q05/duckdb:vortex-file-compressed 1067357553 1071712864 1.00
tpch_q06/duckdb:vortex-file-compressed 755853533 845555346 0.89
tpch_q07/duckdb:vortex-file-compressed 1196386920 1177872233 1.02
tpch_q08/duckdb:vortex-file-compressed 1412980110 1349138574 1.05
tpch_q09/duckdb:vortex-file-compressed 1422020233 1471434428 0.97
tpch_q10/duckdb:vortex-file-compressed 1036649455 1048651459 0.99
tpch_q11/duckdb:vortex-file-compressed 648155603 632234022 1.03
tpch_q12/duckdb:vortex-file-compressed 728979516 683439768 1.07
tpch_q13/duckdb:vortex-file-compressed 748249877 910607366 0.82
tpch_q14/duckdb:vortex-file-compressed 813884711 802020523 1.01
tpch_q15/duckdb:vortex-file-compressed 513938344 513669025 1.00
tpch_q16/duckdb:vortex-file-compressed 474201225 543881201 0.87
tpch_q17/duckdb:vortex-file-compressed 946574879 1003274099 0.94
tpch_q18/duckdb:vortex-file-compressed 849661319 911324272 0.93
tpch_q19/duckdb:vortex-file-compressed 744905271 809497612 0.92
tpch_q20/duckdb:vortex-file-compressed 1217147079 1312090915 0.93
tpch_q21/duckdb:vortex-file-compressed 1936149065 1907057668 1.02
tpch_q22/duckdb:vortex-file-compressed 680011326 617225483 1.10
duckdb / vortex-compact (1.046x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 610260544 609656835 1.00
tpch_q02/duckdb:vortex-compact 1155242154 1002077010 1.15
tpch_q03/duckdb:vortex-compact 885111979 863835486 1.02
tpch_q04/duckdb:vortex-compact 505750714 487513649 1.04
tpch_q05/duckdb:vortex-compact 1089020499 1027993993 1.06
tpch_q06/duckdb:vortex-compact 688413549 780776205 0.88
tpch_q07/duckdb:vortex-compact 1057237094 1019154534 1.04
tpch_q08/duckdb:vortex-compact 1423036416 1367463419 1.04
tpch_q09/duckdb:vortex-compact 1391605828 1321808276 1.05
tpch_q10/duckdb:vortex-compact 1047655939 950009686 1.10
tpch_q11/duckdb:vortex-compact 751149717 615352200 1.22
tpch_q12/duckdb:vortex-compact 678630522 602174461 1.13
tpch_q13/duckdb:vortex-compact 881991798 821367693 1.07
tpch_q14/duckdb:vortex-compact 839640271 796395230 1.05
tpch_q15/duckdb:vortex-compact 544720980 535010505 1.02
tpch_q16/duckdb:vortex-compact 442976098 433028504 1.02
tpch_q17/duckdb:vortex-compact 863208659 864343229 1.00
tpch_q18/duckdb:vortex-compact 793021653 715240181 1.11
tpch_q19/duckdb:vortex-compact 734999335 724201713 1.01
tpch_q20/duckdb:vortex-compact 1167601860 1098094390 1.06
tpch_q21/duckdb:vortex-compact 1614876239 1587724953 1.02
tpch_q22/duckdb:vortex-compact 584835813 615197255 0.95
duckdb / parquet (1.001x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 799696360 888941203 0.90
tpch_q02/duckdb:parquet 1351610619 1303778689 1.04
tpch_q03/duckdb:parquet 1748749735 1833696766 0.95
tpch_q04/duckdb:parquet 961442402 951235132 1.01
tpch_q05/duckdb:parquet 1854078834 1857122144 1.00
tpch_q06/duckdb:parquet 724393039 709086920 1.02
tpch_q07/duckdb:parquet 1723153668 1791389446 0.96
tpch_q08/duckdb:parquet 2321068084 2210308331 1.05
tpch_q09/duckdb:parquet 2580925248 2437113127 1.06
tpch_q10/duckdb:parquet 3020929361 2992331586 1.01
tpch_q11/duckdb:parquet 933769712 865685948 1.08
tpch_q12/duckdb:parquet 1130935455 1168639129 0.97
tpch_q13/duckdb:parquet 1152938400 1155974420 1.00
tpch_q14/duckdb:parquet 1251977870 1159468286 1.08
tpch_q15/duckdb:parquet 811458589 873802917 0.93
tpch_q16/duckdb:parquet 810115252 923705397 0.88
tpch_q17/duckdb:parquet 1228510936 1243777094 0.99
tpch_q18/duckdb:parquet 1435492893 1323699626 1.08
tpch_q19/duckdb:parquet 1463064564 1377071319 1.06
tpch_q20/duckdb:parquet 1805846367 1814285471 1.00
tpch_q21/duckdb:parquet 1700898044 1688085040 1.01
tpch_q22/duckdb:parquet 1063542837 1066543523 1.00
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact -2.4% -4.5% +2.2% +39.4% ➖ noise
1 datafusion:vortex-file-compressed -1.1% -4.5% +3.5% +42.8% ➖ noise
1 duckdb:vortex-compact +0.1% -4.5% +4.8% +30.0% ➖ noise
1 duckdb:vortex-file-compressed -1.7% -4.5% +3.0% +30.0% ➖ noise
2 datafusion:vortex-compact +11.5% +8.6% +2.7% +37.8% ➖ noise
2 datafusion:vortex-file-compressed +19.7% +8.6% +10.2% +36.0% ➖ noise
2 duckdb:vortex-compact +15.3% +8.6% +6.2% +30.0% ➖ noise
2 duckdb:vortex-file-compressed -3.8% +8.6% -11.4% +30.0% ➖ noise
3 datafusion:vortex-compact +2.9% +5.3% -2.4% +40.1% ➖ noise
3 datafusion:vortex-file-compressed +5.5% +5.3% +0.1% +44.9% ➖ noise
3 duckdb:vortex-compact +2.5% +5.3% -2.7% +35.7% ➖ noise
3 duckdb:vortex-file-compressed -10.8% +5.3% -15.3% +36.3% ➖ noise
4 datafusion:vortex-compact -4.0% -1.9% -2.1% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -8.6% -1.9% -6.8% +30.0% ➖ noise
4 duckdb:vortex-compact +3.7% -1.9% +5.8% +30.0% ➖ noise
4 duckdb:vortex-file-compressed +9.7% -1.9% +11.8% +30.0% ➖ noise
5 datafusion:vortex-compact -7.4% +0.8% -8.2% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -5.6% +0.8% -6.4% +30.0% ➖ noise
5 duckdb:vortex-compact +5.9% +0.8% +5.1% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -0.4% +0.8% -1.2% +30.0% ➖ noise
6 datafusion:vortex-compact -6.1% -0.2% -5.9% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -1.5% -0.2% -1.3% +30.0% ➖ noise
6 duckdb:vortex-compact -11.8% -0.2% -11.6% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -10.6% -0.2% -10.4% +30.0% ➖ noise
7 datafusion:vortex-compact -6.6% +1.6% -8.1% +30.0% ➖ noise
7 datafusion:vortex-file-compressed +2.9% +1.6% +1.2% +30.0% ➖ noise
7 duckdb:vortex-compact +3.7% +1.6% +2.1% +30.0% ➖ noise
7 duckdb:vortex-file-compressed +1.6% +1.6% -0.0% +30.0% ➖ noise
8 datafusion:vortex-compact -5.4% +2.4% -7.6% +30.0% ➖ noise
8 datafusion:vortex-file-compressed +1.0% +2.4% -1.4% +30.0% ➖ noise
8 duckdb:vortex-compact +4.1% +2.4% +1.6% +30.0% ➖ noise
8 duckdb:vortex-file-compressed +4.7% +2.4% +2.3% +30.0% ➖ noise
9 datafusion:vortex-compact -4.1% +4.1% -7.8% +30.0% ➖ noise
9 datafusion:vortex-file-compressed +1.7% +4.1% -2.3% +30.0% ➖ noise
9 duckdb:vortex-compact +5.3% +4.1% +1.1% +30.0% ➖ noise
9 duckdb:vortex-file-compressed -3.4% +4.1% -7.2% +30.0% ➖ noise
10 datafusion:vortex-compact -17.0% +2.0% -18.6% +30.0% ➖ noise
10 datafusion:vortex-file-compressed -7.6% +2.0% -9.4% +30.0% ➖ noise
10 duckdb:vortex-compact +10.3% +2.0% +8.1% +30.0% ➖ noise
10 duckdb:vortex-file-compressed -1.1% +2.0% -3.1% +30.0% ➖ noise
11 datafusion:vortex-compact +26.6% +15.6% +9.5% +30.0% ➖ noise
11 datafusion:vortex-file-compressed +26.8% +15.6% +9.7% +30.0% ➖ noise
11 duckdb:vortex-compact +22.1% +15.6% +5.6% +30.0% ➖ noise
11 duckdb:vortex-file-compressed +2.5% +15.6% -11.3% +30.0% ➖ noise
12 datafusion:vortex-compact -26.7% -4.8% -23.0% +30.0% ➖ noise
12 datafusion:vortex-file-compressed -19.2% -4.8% -15.1% +31.9% ➖ noise
12 duckdb:vortex-compact +12.7% -4.8% +18.4% +30.0% ➖ noise
12 duckdb:vortex-file-compressed +6.7% -4.8% +12.1% +30.0% ➖ noise
13 datafusion:vortex-compact -4.6% +12.6% -15.2% +30.0% ➖ noise
13 datafusion:vortex-file-compressed -13.2% +12.6% -22.9% +30.0% ➖ noise
13 duckdb:vortex-compact +7.4% +12.6% -4.6% +36.9% ➖ noise
13 duckdb:vortex-file-compressed -17.8% +12.6% -27.0% +32.7% ✅ faster
14 datafusion:vortex-compact -15.9% +6.5% -21.0% +30.0% ➖ noise
14 datafusion:vortex-file-compressed -21.7% +6.5% -26.5% +30.0% ✅ faster
14 duckdb:vortex-compact +5.4% +6.5% -1.0% +30.0% ➖ noise
14 duckdb:vortex-file-compressed +1.5% +6.5% -4.7% +30.0% ➖ noise
15 datafusion:vortex-compact +2.9% -3.1% +6.2% +30.0% ➖ noise
15 datafusion:vortex-file-compressed -15.5% -3.1% -12.7% +30.0% ➖ noise
15 duckdb:vortex-compact +1.8% -3.1% +5.1% +30.0% ➖ noise
15 duckdb:vortex-file-compressed +0.1% -3.1% +3.3% +30.0% ➖ noise
16 datafusion:vortex-compact +5.7% -9.3% +16.5% +30.0% ➖ noise
16 datafusion:vortex-file-compressed -5.8% -9.3% +3.8% +34.9% ➖ noise
16 duckdb:vortex-compact +2.3% -9.3% +12.8% +30.0% ➖ noise
16 duckdb:vortex-file-compressed -12.8% -9.3% -3.9% +30.0% ➖ noise
17 datafusion:vortex-compact -5.3% -0.4% -4.9% +30.0% ➖ noise
17 datafusion:vortex-file-compressed +11.6% -0.4% +12.0% +37.6% ➖ noise
17 duckdb:vortex-compact -0.1% -0.4% +0.3% +30.0% ➖ noise
17 duckdb:vortex-file-compressed -5.7% -0.4% -5.2% +30.0% ➖ noise
18 datafusion:vortex-compact -4.5% +5.3% -9.3% +30.0% ➖ noise
18 datafusion:vortex-file-compressed +2.0% +5.3% -3.1% +30.0% ➖ noise
18 duckdb:vortex-compact +10.9% +5.3% +5.3% +30.0% ➖ noise
18 duckdb:vortex-file-compressed -6.8% +5.3% -11.4% +30.0% ➖ noise
19 datafusion:vortex-compact +14.1% +7.3% +6.3% +30.0% ➖ noise
19 datafusion:vortex-file-compressed -13.0% +7.3% -18.9% +30.0% ➖ noise
19 duckdb:vortex-compact +1.5% +7.3% -5.5% +30.0% ➖ noise
19 duckdb:vortex-file-compressed -8.0% +7.3% -14.3% +30.0% ➖ noise
20 datafusion:vortex-compact -1.6% +0.8% -2.3% +30.0% ➖ noise
20 datafusion:vortex-file-compressed -2.8% +0.8% -3.5% +30.0% ➖ noise
20 duckdb:vortex-compact +6.3% +0.8% +5.5% +30.0% ➖ noise
20 duckdb:vortex-file-compressed -7.2% +0.8% -7.9% +30.0% ➖ noise
21 datafusion:vortex-compact -11.5% -2.2% -9.5% +30.0% ➖ noise
21 datafusion:vortex-file-compressed +0.7% -2.2% +3.0% +30.0% ➖ noise
21 duckdb:vortex-compact +1.7% -2.2% +4.0% +30.0% ➖ noise
21 duckdb:vortex-file-compressed +1.5% -2.2% +3.8% +30.0% ➖ noise
22 datafusion:vortex-compact +8.5% -0.2% +8.7% +33.3% ➖ noise
22 datafusion:vortex-file-compressed +20.4% -0.2% +20.6% +32.4% ➖ noise
22 duckdb:vortex-compact -4.9% -0.2% -4.8% +30.0% ➖ noise
22 duckdb:vortex-file-compressed +10.2% -0.2% +10.4% +30.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: TPC-DS SF=1 on NVME

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -3.3%
Vortex (geomean): 0.995x ➖
Parquet (geomean): 1.030x ➖
Shifts: Parquet (control) +3.0% · Median polish +0.3%


datafusion / vortex-file-compressed (0.983x ➖, 3↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-file-compressed 25216884 24079692 1.05
tpcds_q02/datafusion:vortex-file-compressed 43435620 47106453 0.92
tpcds_q03/datafusion:vortex-file-compressed 15904007 14587319 1.09
tpcds_q04/datafusion:vortex-file-compressed 246906924 247600416 1.00
tpcds_q05/datafusion:vortex-file-compressed 42928761 42167631 1.02
tpcds_q06/datafusion:vortex-file-compressed 🚀 33383994 62522471 0.53
tpcds_q07/datafusion:vortex-file-compressed 40172900 42166566 0.95
tpcds_q08/datafusion:vortex-file-compressed 28591170 28764309 0.99
tpcds_q09/datafusion:vortex-file-compressed 43053133 43020165 1.00
tpcds_q10/datafusion:vortex-file-compressed 38136774 39552939 0.96
tpcds_q11/datafusion:vortex-file-compressed 130253282 130415237 1.00
tpcds_q12/datafusion:vortex-file-compressed 18478171 20399992 0.91
tpcds_q13/datafusion:vortex-file-compressed 44138862 43868590 1.01
tpcds_q14/datafusion:vortex-file-compressed 165936066 171687973 0.97
tpcds_q15/datafusion:vortex-file-compressed 27665404 28144893 0.98
tpcds_q16/datafusion:vortex-file-compressed 27549441 28028903 0.98
tpcds_q17/datafusion:vortex-file-compressed 61785874 61503871 1.00
tpcds_q18/datafusion:vortex-file-compressed 67538731 68437370 0.99
tpcds_q19/datafusion:vortex-file-compressed 21401642 21340136 1.00
tpcds_q20/datafusion:vortex-file-compressed 20405651 22219280 0.92
tpcds_q21/datafusion:vortex-file-compressed 33995465 35486292 0.96
tpcds_q22/datafusion:vortex-file-compressed 117700229 108673872 1.08
tpcds_q23/datafusion:vortex-file-compressed 145804868 150698896 0.97
tpcds_q24/datafusion:vortex-file-compressed 82752271 81576695 1.01
tpcds_q25/datafusion:vortex-file-compressed 64383724 65839680 0.98
tpcds_q26/datafusion:vortex-file-compressed 33178488 33052337 1.00
tpcds_q27/datafusion:vortex-file-compressed 99151802 100176760 0.99
tpcds_q28/datafusion:vortex-file-compressed 40195075 41829799 0.96
tpcds_q29/datafusion:vortex-file-compressed 60185465 60251313 1.00
tpcds_q30/datafusion:vortex-file-compressed 22883299 22533531 1.02
tpcds_q31/datafusion:vortex-file-compressed 70752891 71190803 0.99
tpcds_q32/datafusion:vortex-file-compressed 19489904 20212114 0.96
tpcds_q33/datafusion:vortex-file-compressed 29289628 29381827 1.00
tpcds_q34/datafusion:vortex-file-compressed 24276532 23892621 1.02
tpcds_q35/datafusion:vortex-file-compressed 43688724 43857078 1.00
tpcds_q36/datafusion:vortex-file-compressed 56432049 56851977 0.99
tpcds_q37/datafusion:vortex-file-compressed 25193094 25649280 0.98
tpcds_q38/datafusion:vortex-file-compressed 44198818 42508596 1.04
tpcds_q39/datafusion:vortex-file-compressed 105774501 104320672 1.01
tpcds_q40/datafusion:vortex-file-compressed 31966999 32704357 0.98
tpcds_q41/datafusion:vortex-file-compressed 15123716 15163309 1.00
tpcds_q42/datafusion:vortex-file-compressed 13547703 14293498 0.95
tpcds_q43/datafusion:vortex-file-compressed 18121982 18728135 0.97
tpcds_q44/datafusion:vortex-file-compressed 30405403 30942625 0.98
tpcds_q45/datafusion:vortex-file-compressed 26853569 26991029 0.99
tpcds_q46/datafusion:vortex-file-compressed 33777312 34167078 0.99
tpcds_q47/datafusion:vortex-file-compressed 131952847 130810795 1.01
tpcds_q48/datafusion:vortex-file-compressed 40183210 37543416 1.07
tpcds_q49/datafusion:vortex-file-compressed 58490553 56304267 1.04
tpcds_q50/datafusion:vortex-file-compressed 38169984 40736778 0.94
tpcds_q51/datafusion:vortex-file-compressed 85189357 87917327 0.97
tpcds_q52/datafusion:vortex-file-compressed 14258178 13822028 1.03
tpcds_q53/datafusion:vortex-file-compressed 20676498 21116175 0.98
tpcds_q54/datafusion:vortex-file-compressed 33814468 34445754 0.98
tpcds_q55/datafusion:vortex-file-compressed 13450364 13553487 0.99
tpcds_q56/datafusion:vortex-file-compressed 29103354 30714388 0.95
tpcds_q57/datafusion:vortex-file-compressed 106101249 105565228 1.01
tpcds_q58/datafusion:vortex-file-compressed 51310260 52506797 0.98
tpcds_q59/datafusion:vortex-file-compressed 🚀 50886593 57496913 0.89
tpcds_q60/datafusion:vortex-file-compressed 28883122 29266918 0.99
tpcds_q61/datafusion:vortex-file-compressed 39646679 41468875 0.96
tpcds_q62/datafusion:vortex-file-compressed 🚀 22208892 25705253 0.86
tpcds_q63/datafusion:vortex-file-compressed 20629559 20780321 0.99
tpcds_q64/datafusion:vortex-file-compressed 406398200 417389951 0.97
tpcds_q65/datafusion:vortex-file-compressed 38780511 41239784 0.94
tpcds_q66/datafusion:vortex-file-compressed 71461591 71220845 1.00
tpcds_q67/datafusion:vortex-file-compressed 142875362 144376567 0.99
tpcds_q68/datafusion:vortex-file-compressed 31668193 32319470 0.98
tpcds_q69/datafusion:vortex-file-compressed 37181771 36295452 1.02
tpcds_q70/datafusion:vortex-file-compressed 86304502 83765418 1.03
tpcds_q71/datafusion:vortex-file-compressed 22499124 22728322 0.99
tpcds_q72/datafusion:vortex-file-compressed 2122413568 2152327291 0.99
tpcds_q73/datafusion:vortex-file-compressed 22655770 22771963 0.99
tpcds_q74/datafusion:vortex-file-compressed 78309708 80729355 0.97
tpcds_q75/datafusion:vortex-file-compressed 104604144 105907850 0.99
tpcds_q76/datafusion:vortex-file-compressed 23104006 23590086 0.98
tpcds_q77/datafusion:vortex-file-compressed 38270717 39975225 0.96
tpcds_q78/datafusion:vortex-file-compressed 122004796 122009608 1.00
tpcds_q79/datafusion:vortex-file-compressed 27405945 29132636 0.94
tpcds_q80/datafusion:vortex-file-compressed 90558353 91651667 0.99
tpcds_q81/datafusion:vortex-file-compressed 23864692 23634586 1.01
tpcds_q82/datafusion:vortex-file-compressed 26973683 25632845 1.05
tpcds_q83/datafusion:vortex-file-compressed 34549987 33457123 1.03
tpcds_q84/datafusion:vortex-file-compressed 12638913 12989846 0.97
tpcds_q85/datafusion:vortex-file-compressed 94223882 94795562 0.99
tpcds_q86/datafusion:vortex-file-compressed 16308222 17315129 0.94
tpcds_q87/datafusion:vortex-file-compressed 45176151 44013173 1.03
tpcds_q88/datafusion:vortex-file-compressed 54334257 56375570 0.96
tpcds_q89/datafusion:vortex-file-compressed 23966973 24215789 0.99
tpcds_q90/datafusion:vortex-file-compressed 14401721 14476796 0.99
tpcds_q91/datafusion:vortex-file-compressed 17455314 18437001 0.95
tpcds_q92/datafusion:vortex-file-compressed 17447506 17821129 0.98
tpcds_q93/datafusion:vortex-file-compressed 33528153 32938016 1.02
tpcds_q94/datafusion:vortex-file-compressed 22669342 22474870 1.01
tpcds_q95/datafusion:vortex-file-compressed 60853527 61157156 1.00
tpcds_q96/datafusion:vortex-file-compressed 13416015 13677622 0.98
tpcds_q97/datafusion:vortex-file-compressed 32710698 31567740 1.04
tpcds_q98/datafusion:vortex-file-compressed 22989305 23862670 0.96
tpcds_q99/datafusion:vortex-file-compressed 🚨 32299724 27844250 1.16
datafusion / vortex-compact (0.990x ➖, 5↑ 3↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-compact 🚨 28396800 24359042 1.17
tpcds_q02/datafusion:vortex-compact 52358560 54773446 0.96
tpcds_q03/datafusion:vortex-compact 19226464 20088251 0.96
tpcds_q04/datafusion:vortex-compact 294226655 294984672 1.00
tpcds_q05/datafusion:vortex-compact 48941471 46588407 1.05
tpcds_q06/datafusion:vortex-compact 60658042 60992689 0.99
tpcds_q07/datafusion:vortex-compact 50978611 53684821 0.95
tpcds_q08/datafusion:vortex-compact 35261454 35611027 0.99
tpcds_q09/datafusion:vortex-compact 60948459 62005724 0.98
tpcds_q10/datafusion:vortex-compact 48725045 50265423 0.97
tpcds_q11/datafusion:vortex-compact 146450738 150362124 0.97
tpcds_q12/datafusion:vortex-compact 🚀 22395222 26494944 0.85
tpcds_q13/datafusion:vortex-compact 🚀 90581322 111371611 0.81
tpcds_q14/datafusion:vortex-compact 197579102 195001336 1.01
tpcds_q15/datafusion:vortex-compact 31609470 30381013 1.04
tpcds_q16/datafusion:vortex-compact 32237751 32386177 1.00
tpcds_q17/datafusion:vortex-compact 71863546 72498522 0.99
tpcds_q18/datafusion:vortex-compact 77874120 76547688 1.02
tpcds_q19/datafusion:vortex-compact 30426172 29708116 1.02
tpcds_q20/datafusion:vortex-compact 26205467 26124718 1.00
tpcds_q21/datafusion:vortex-compact 39456025 39452292 1.00
tpcds_q22/datafusion:vortex-compact 🚨 156331412 119385477 1.31
tpcds_q23/datafusion:vortex-compact 164844448 159741172 1.03
tpcds_q24/datafusion:vortex-compact 93277701 96325400 0.97
tpcds_q25/datafusion:vortex-compact 77314677 78394386 0.99
tpcds_q26/datafusion:vortex-compact 43212145 43748877 0.99
tpcds_q27/datafusion:vortex-compact 123111264 120564859 1.02
tpcds_q28/datafusion:vortex-compact 78117314 79450627 0.98
tpcds_q29/datafusion:vortex-compact 72428973 73196463 0.99
tpcds_q30/datafusion:vortex-compact 26309704 26984007 0.98
tpcds_q31/datafusion:vortex-compact 96920697 99341419 0.98
tpcds_q32/datafusion:vortex-compact 25066070 24576115 1.02
tpcds_q33/datafusion:vortex-compact 36206479 37155008 0.97
tpcds_q34/datafusion:vortex-compact 30765462 31158779 0.99
tpcds_q35/datafusion:vortex-compact 50625811 51030039 0.99
tpcds_q36/datafusion:vortex-compact 72321823 74839342 0.97
tpcds_q37/datafusion:vortex-compact 38955394 39858397 0.98
tpcds_q38/datafusion:vortex-compact 49006762 52796752 0.93
tpcds_q39/datafusion:vortex-compact 112127274 111850769 1.00
tpcds_q40/datafusion:vortex-compact 35884730 37263640 0.96
tpcds_q41/datafusion:vortex-compact 17143558 17713053 0.97
tpcds_q42/datafusion:vortex-compact 18121156 17815058 1.02
tpcds_q43/datafusion:vortex-compact 25462713 25080262 1.02
tpcds_q44/datafusion:vortex-compact 48243900 46987060 1.03
tpcds_q45/datafusion:vortex-compact 29443850 32338311 0.91
tpcds_q46/datafusion:vortex-compact 43343852 44119375 0.98
tpcds_q47/datafusion:vortex-compact 147065049 147610776 1.00
tpcds_q48/datafusion:vortex-compact 71039300 71253679 1.00
tpcds_q49/datafusion:vortex-compact 68796333 68000626 1.01
tpcds_q50/datafusion:vortex-compact 47483212 47058952 1.01
tpcds_q51/datafusion:vortex-compact 94069476 93841647 1.00
tpcds_q52/datafusion:vortex-compact 18167853 18470149 0.98
tpcds_q53/datafusion:vortex-compact 27854814 27469383 1.01
tpcds_q54/datafusion:vortex-compact 41630475 41760714 1.00
tpcds_q55/datafusion:vortex-compact 17800441 18563512 0.96
tpcds_q56/datafusion:vortex-compact 35854314 35745278 1.00
tpcds_q57/datafusion:vortex-compact 120024450 112302638 1.07
tpcds_q58/datafusion:vortex-compact 61269032 61678360 0.99
tpcds_q59/datafusion:vortex-compact 68703104 70517539 0.97
tpcds_q60/datafusion:vortex-compact 34937131 35173114 0.99
tpcds_q61/datafusion:vortex-compact 57149080 54702251 1.04
tpcds_q62/datafusion:vortex-compact 🚀 24358181 28110124 0.87
tpcds_q63/datafusion:vortex-compact 27365207 27583386 0.99
tpcds_q64/datafusion:vortex-compact 447131040 447933600 1.00
tpcds_q65/datafusion:vortex-compact 54673905 53516415 1.02
tpcds_q66/datafusion:vortex-compact 77183672 78801672 0.98
tpcds_q67/datafusion:vortex-compact 152143981 151775467 1.00
tpcds_q68/datafusion:vortex-compact 43737797 44240596 0.99
tpcds_q69/datafusion:vortex-compact 47907214 47004991 1.02
tpcds_q70/datafusion:vortex-compact 96929212 95530604 1.01
tpcds_q71/datafusion:vortex-compact 🚀 28681235 32254525 0.89
tpcds_q72/datafusion:vortex-compact 2122966989 2101477256 1.01
tpcds_q73/datafusion:vortex-compact 29769140 29841084 1.00
tpcds_q74/datafusion:vortex-compact 90300026 94046875 0.96
tpcds_q75/datafusion:vortex-compact 124570589 124289660 1.00
tpcds_q76/datafusion:vortex-compact 32683553 32300959 1.01
tpcds_q77/datafusion:vortex-compact 49792460 50634692 0.98
tpcds_q78/datafusion:vortex-compact 134563043 138163225 0.97
tpcds_q79/datafusion:vortex-compact 37199384 37274122 1.00
tpcds_q80/datafusion:vortex-compact 101289108 101452223 1.00
tpcds_q81/datafusion:vortex-compact 28327696 27337420 1.04
tpcds_q82/datafusion:vortex-compact 39585477 41257507 0.96
tpcds_q83/datafusion:vortex-compact 32944148 32613694 1.01
tpcds_q84/datafusion:vortex-compact 13994764 14227728 0.98
tpcds_q85/datafusion:vortex-compact 129173629 132043938 0.98
tpcds_q86/datafusion:vortex-compact 🚨 22076639 19791274 1.12
tpcds_q87/datafusion:vortex-compact 50574831 49327845 1.03
tpcds_q88/datafusion:vortex-compact 76658088 76108944 1.01
tpcds_q89/datafusion:vortex-compact 30596685 31811509 0.96
tpcds_q90/datafusion:vortex-compact 14782450 15755646 0.94
tpcds_q91/datafusion:vortex-compact 32063343 32260623 0.99
tpcds_q92/datafusion:vortex-compact 23636195 23670577 1.00
tpcds_q93/datafusion:vortex-compact 37624830 38534851 0.98
tpcds_q94/datafusion:vortex-compact 24907694 27536984 0.90
tpcds_q95/datafusion:vortex-compact 64867297 66104429 0.98
tpcds_q96/datafusion:vortex-compact 16863775 17671906 0.95
tpcds_q97/datafusion:vortex-compact 37289134 37043530 1.01
tpcds_q98/datafusion:vortex-compact 29087429 30607790 0.95
tpcds_q99/datafusion:vortex-compact 🚀 31530777 35435868 0.89
datafusion / parquet (1.059x ➖, 0↑ 34↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/datafusion:parquet 32387188 29546412 1.10
tpcds_q02/datafusion:parquet 46188334 42143680 1.10
tpcds_q03/datafusion:parquet 14256621 13277147 1.07
tpcds_q04/datafusion:parquet 🚨 295681373 265542469 1.11
tpcds_q05/datafusion:parquet 🚨 45669281 40868937 1.12
tpcds_q06/datafusion:parquet 60964313 59967735 1.02
tpcds_q07/datafusion:parquet 🚨 87539759 76940487 1.14
tpcds_q08/datafusion:parquet 🚨 30742239 25087679 1.23
tpcds_q09/datafusion:parquet 🚨 51408178 42056101 1.22
tpcds_q10/datafusion:parquet 🚨 76153256 66604942 1.14
tpcds_q11/datafusion:parquet 🚨 168594227 146457996 1.15
tpcds_q12/datafusion:parquet 18064901 17510986 1.03
tpcds_q13/datafusion:parquet 🚨 83046617 74547359 1.11
tpcds_q14/datafusion:parquet 🚨 179171224 157528580 1.14
tpcds_q15/datafusion:parquet 23590996 21456096 1.10
tpcds_q16/datafusion:parquet 🚨 26718610 23833781 1.12
tpcds_q17/datafusion:parquet 66542467 65983771 1.01
tpcds_q18/datafusion:parquet 🚨 125484922 111691987 1.12
tpcds_q19/datafusion:parquet 23660854 22292032 1.06
tpcds_q20/datafusion:parquet 🚨 18611377 15949582 1.17
tpcds_q21/datafusion:parquet 🚨 20441181 17984687 1.14
tpcds_q22/datafusion:parquet 169469011 162407490 1.04
tpcds_q23/datafusion:parquet 🚨 164585722 142634662 1.15
tpcds_q24/datafusion:parquet 97452462 88657596 1.10
tpcds_q25/datafusion:parquet 🚨 70461734 62783980 1.12
tpcds_q26/datafusion:parquet 🚨 71735358 65096158 1.10
tpcds_q27/datafusion:parquet 🚨 164361708 142385005 1.15
tpcds_q28/datafusion:parquet 47702217 43532818 1.10
tpcds_q29/datafusion:parquet 🚨 71784112 63080645 1.14
tpcds_q30/datafusion:parquet 🚨 40291766 33626735 1.20
tpcds_q31/datafusion:parquet 🚨 72311326 62783832 1.15
tpcds_q32/datafusion:parquet 🚨 20144815 17781019 1.13
tpcds_q33/datafusion:parquet 🚨 29422307 26222336 1.12
tpcds_q34/datafusion:parquet 🚨 23853776 20807656 1.15
tpcds_q35/datafusion:parquet 🚨 83082650 68049611 1.22
tpcds_q36/datafusion:parquet 🚨 66249607 56296876 1.18
tpcds_q37/datafusion:parquet 🚨 21222893 18036320 1.18
tpcds_q38/datafusion:parquet 🚨 44249268 39954852 1.11
tpcds_q39/datafusion:parquet 🚨 89128649 72637257 1.23
tpcds_q40/datafusion:parquet 🚨 26878283 23297997 1.15
tpcds_q41/datafusion:parquet 🚨 15314597 12914544 1.19
tpcds_q42/datafusion:parquet 🚨 12772595 11158794 1.14
tpcds_q43/datafusion:parquet 🚨 18894240 16668002 1.13
tpcds_q44/datafusion:parquet 35262615 32240438 1.09
tpcds_q45/datafusion:parquet 🚨 31013811 27918544 1.11
tpcds_q46/datafusion:parquet 31579783 31504990 1.00
tpcds_q47/datafusion:parquet 124031169 122834416 1.01
tpcds_q48/datafusion:parquet 68410079 68228084 1.00
tpcds_q49/datafusion:parquet 54570719 53205006 1.03
tpcds_q50/datafusion:parquet 43476071 41910916 1.04
tpcds_q51/datafusion:parquet 82036398 82148281 1.00
tpcds_q52/datafusion:parquet 12403017 11811766 1.05
tpcds_q53/datafusion:parquet 17430727 17043336 1.02
tpcds_q54/datafusion:parquet 33033297 33876354 0.98
tpcds_q55/datafusion:parquet 11029618 11055430 1.00
tpcds_q56/datafusion:parquet 27206954 26383418 1.03
tpcds_q57/datafusion:parquet 🚨 102482432 92649883 1.11
tpcds_q58/datafusion:parquet 47090210 50466751 0.93
tpcds_q59/datafusion:parquet 56360524 56217474 1.00
tpcds_q60/datafusion:parquet 26518059 26977959 0.98
tpcds_q61/datafusion:parquet 43631263 42289456 1.03
tpcds_q62/datafusion:parquet 25435293 24146266 1.05
tpcds_q63/datafusion:parquet 17065205 17196541 0.99
tpcds_q64/datafusion:parquet 503460886 501399969 1.00
tpcds_q65/datafusion:parquet 36384079 36296809 1.00
tpcds_q66/datafusion:parquet 69536465 65438458 1.06
tpcds_q67/datafusion:parquet 140364047 142080976 0.99
tpcds_q68/datafusion:parquet 30811830 31135771 0.99
tpcds_q69/datafusion:parquet 64203539 64190377 1.00
tpcds_q70/datafusion:parquet 88023640 87978626 1.00
tpcds_q71/datafusion:parquet 21245155 21552624 0.99
tpcds_q72/datafusion:parquet 600193200 585788119 1.02
tpcds_q73/datafusion:parquet 20052140 19987134 1.00
tpcds_q74/datafusion:parquet 82313136 84149001 0.98
tpcds_q75/datafusion:parquet 97884065 95352451 1.03
tpcds_q76/datafusion:parquet 29824290 28200407 1.06
tpcds_q77/datafusion:parquet 37568777 39342687 0.95
tpcds_q78/datafusion:parquet 112320342 110543458 1.02
tpcds_q79/datafusion:parquet 25249501 25338375 1.00
tpcds_q80/datafusion:parquet 76771752 76593212 1.00
tpcds_q81/datafusion:parquet 31481770 31568903 1.00
tpcds_q82/datafusion:parquet 18551813 18883483 0.98
tpcds_q83/datafusion:parquet 34573291 35806202 0.97
tpcds_q84/datafusion:parquet 37691338 38177528 0.99
tpcds_q85/datafusion:parquet 145853367 147887479 0.99
tpcds_q86/datafusion:parquet 15426062 15364843 1.00
tpcds_q87/datafusion:parquet 38735388 40135099 0.97
tpcds_q88/datafusion:parquet 57811205 58349802 0.99
tpcds_q89/datafusion:parquet 20609988 20229104 1.02
tpcds_q90/datafusion:parquet 13639312 13970099 0.98
tpcds_q91/datafusion:parquet 56604927 57216306 0.99
tpcds_q92/datafusion:parquet 17176614 17206121 1.00
tpcds_q93/datafusion:parquet 33087674 31532487 1.05
tpcds_q94/datafusion:parquet 19842724 19706937 1.01
tpcds_q95/datafusion:parquet 59111237 57193797 1.03
tpcds_q96/datafusion:parquet 11950098 11119962 1.07
tpcds_q97/datafusion:parquet 29224601 30450726 0.96
tpcds_q98/datafusion:parquet 21647191 21187454 1.02
tpcds_q99/datafusion:parquet 25205553 25824354 0.98
duckdb / vortex-file-compressed (1.007x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-file-compressed 21387285 20854735 1.03
tpcds_q02/duckdb:vortex-file-compressed 36067267 33110419 1.09
tpcds_q03/duckdb:vortex-file-compressed 31729057 33667316 0.94
tpcds_q04/duckdb:vortex-file-compressed 105326174 107017826 0.98
tpcds_q05/duckdb:vortex-file-compressed 37051280 37117225 1.00
tpcds_q06/duckdb:vortex-file-compressed 31690219 31065537 1.02
tpcds_q07/duckdb:vortex-file-compressed 18825143 18770609 1.00
tpcds_q08/duckdb:vortex-file-compressed 27280253 29947946 0.91
tpcds_q09/duckdb:vortex-file-compressed 36861801 36679577 1.00
tpcds_q10/duckdb:vortex-file-compressed 38790507 39379701 0.99
tpcds_q11/duckdb:vortex-file-compressed 62597145 58634177 1.07
tpcds_q12/duckdb:vortex-file-compressed 13737872 13638128 1.01
tpcds_q13/duckdb:vortex-file-compressed 31747706 31120548 1.02
tpcds_q14/duckdb:vortex-file-compressed 104292161 105191453 0.99
tpcds_q15/duckdb:vortex-file-compressed 26032054 26350436 0.99
tpcds_q16/duckdb:vortex-file-compressed 26213180 26090918 1.00
tpcds_q17/duckdb:vortex-file-compressed 42278803 42382220 1.00
tpcds_q18/duckdb:vortex-file-compressed 46545923 46176994 1.01
tpcds_q19/duckdb:vortex-file-compressed 32677536 32437774 1.01
tpcds_q20/duckdb:vortex-file-compressed 14230158 15174592 0.94
tpcds_q21/duckdb:vortex-file-compressed 15664296 16190860 0.97
tpcds_q22/duckdb:vortex-file-compressed 73609629 73172109 1.01
tpcds_q23/duckdb:vortex-file-compressed 105547630 100843401 1.05
tpcds_q24/duckdb:vortex-file-compressed 48453143 48800159 0.99
tpcds_q25/duckdb:vortex-file-compressed 48124712 48279056 1.00
tpcds_q26/duckdb:vortex-file-compressed 37893776 39242687 0.97
tpcds_q27/duckdb:vortex-file-compressed 47222530 46648000 1.01
tpcds_q28/duckdb:vortex-file-compressed 35773396 35574328 1.01
tpcds_q29/duckdb:vortex-file-compressed 41366704 40468043 1.02
tpcds_q30/duckdb:vortex-file-compressed 23878739 23080443 1.03
tpcds_q31/duckdb:vortex-file-compressed 35705322 35243113 1.01
tpcds_q32/duckdb:vortex-file-compressed 13528962 13353835 1.01
tpcds_q33/duckdb:vortex-file-compressed 23819600 23733483 1.00
tpcds_q34/duckdb:vortex-file-compressed 23054552 22876476 1.01
tpcds_q35/duckdb:vortex-file-compressed 63084733 61067786 1.03
tpcds_q36/duckdb:vortex-file-compressed 24841668 25451210 0.98
tpcds_q37/duckdb:vortex-file-compressed 15043859 14823156 1.01
tpcds_q38/duckdb:vortex-file-compressed 35861928 35722637 1.00
tpcds_q39/duckdb:vortex-file-compressed 34012051 34023946 1.00
tpcds_q40/duckdb:vortex-file-compressed 19000268 20401187 0.93
tpcds_q41/duckdb:vortex-file-compressed 12804347 12872119 0.99
tpcds_q42/duckdb:vortex-file-compressed 12414688 12491603 0.99
tpcds_q43/duckdb:vortex-file-compressed 24245507 23292930 1.04
tpcds_q44/duckdb:vortex-file-compressed 20134222 21639002 0.93
tpcds_q45/duckdb:vortex-file-compressed 27582974 27944785 0.99
tpcds_q46/duckdb:vortex-file-compressed 51728601 49726013 1.04
tpcds_q47/duckdb:vortex-file-compressed 45699480 46515301 0.98
tpcds_q48/duckdb:vortex-file-compressed 29641137 29633642 1.00
tpcds_q49/duckdb:vortex-file-compressed 36072811 33640526 1.07
tpcds_q50/duckdb:vortex-file-compressed 33671725 34555116 0.97
tpcds_q51/duckdb:vortex-file-compressed 95900387 99008700 0.97
tpcds_q52/duckdb:vortex-file-compressed 12562463 12349457 1.02
tpcds_q53/duckdb:vortex-file-compressed 22822605 22342308 1.02
tpcds_q54/duckdb:vortex-file-compressed 27592907 27405871 1.01
tpcds_q55/duckdb:vortex-file-compressed 12664885 13366777 0.95
tpcds_q56/duckdb:vortex-file-compressed 22981431 23321742 0.99
tpcds_q57/duckdb:vortex-file-compressed 40686716 39529668 1.03
tpcds_q58/duckdb:vortex-file-compressed 31154281 30644617 1.02
tpcds_q59/duckdb:vortex-file-compressed 67703644 66521066 1.02
tpcds_q60/duckdb:vortex-file-compressed 25097214 25149131 1.00
tpcds_q61/duckdb:vortex-file-compressed 30469927 30659519 0.99
tpcds_q62/duckdb:vortex-file-compressed 16920172 16799423 1.01
tpcds_q63/duckdb:vortex-file-compressed 21063992 20774977 1.01
tpcds_q64/duckdb:vortex-file-compressed 83022850 82879186 1.00
tpcds_q65/duckdb:vortex-file-compressed 21442911 21241960 1.01
tpcds_q66/duckdb:vortex-file-compressed 28418528 29117492 0.98
tpcds_q67/duckdb:vortex-file-compressed 136375807 138102436 0.99
tpcds_q68/duckdb:vortex-file-compressed 40216440 39394957 1.02
tpcds_q69/duckdb:vortex-file-compressed 41711456 41980379 0.99
tpcds_q70/duckdb:vortex-file-compressed 25623713 25379085 1.01
tpcds_q71/duckdb:vortex-file-compressed 20329363 20243254 1.00
tpcds_q72/duckdb:vortex-file-compressed 172940388 172709964 1.00
tpcds_q73/duckdb:vortex-file-compressed 22511608 22436570 1.00
tpcds_q74/duckdb:vortex-file-compressed 78138908 71058844 1.10
tpcds_q75/duckdb:vortex-file-compressed 58441076 54356423 1.08
tpcds_q76/duckdb:vortex-file-compressed 17777183 17582693 1.01
tpcds_q77/duckdb:vortex-file-compressed 25279468 24443744 1.03
tpcds_q78/duckdb:vortex-file-compressed 76740760 72695332 1.06
tpcds_q79/duckdb:vortex-file-compressed 31363041 31685238 0.99
tpcds_q80/duckdb:vortex-file-compressed 46555930 45671155 1.02
tpcds_q81/duckdb:vortex-file-compressed 27775748 26972168 1.03
tpcds_q82/duckdb:vortex-file-compressed 17036076 16467222 1.03
tpcds_q83/duckdb:vortex-file-compressed 25243574 24365284 1.04
tpcds_q84/duckdb:vortex-file-compressed 19689187 17916241 1.10
tpcds_q85/duckdb:vortex-file-compressed 45489326 43407239 1.05
tpcds_q86/duckdb:vortex-file-compressed 15888857 15730108 1.01
tpcds_q87/duckdb:vortex-file-compressed 36914331 39535724 0.93
tpcds_q88/duckdb:vortex-file-compressed 32251984 31748520 1.02
tpcds_q89/duckdb:vortex-file-compressed 22374974 21783156 1.03
tpcds_q90/duckdb:vortex-file-compressed 12216581 12630664 0.97
tpcds_q91/duckdb:vortex-file-compressed 30564623 30103578 1.02
tpcds_q92/duckdb:vortex-file-compressed 21301278 20847470 1.02
tpcds_q93/duckdb:vortex-file-compressed 27705115 27430091 1.01
tpcds_q94/duckdb:vortex-file-compressed 22246448 22501417 0.99
tpcds_q95/duckdb:vortex-file-compressed 147434096 147942338 1.00
tpcds_q96/duckdb:vortex-file-compressed 13293604 12762895 1.04
tpcds_q97/duckdb:vortex-file-compressed 38646392 36028363 1.07
tpcds_q98/duckdb:vortex-file-compressed 17658707 17086402 1.03
tpcds_q99/duckdb:vortex-file-compressed 26293563 27043121 0.97
duckdb / vortex-compact (1.002x ➖, 1↑ 3↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-compact 23872916 22682400 1.05
tpcds_q02/duckdb:vortex-compact 40104304 42334099 0.95
tpcds_q03/duckdb:vortex-compact 56857998 56891354 1.00
tpcds_q04/duckdb:vortex-compact 120051173 117053311 1.03
tpcds_q05/duckdb:vortex-compact 49264023 47986045 1.03
tpcds_q06/duckdb:vortex-compact 39556446 39405094 1.00
tpcds_q07/duckdb:vortex-compact 34178020 33042716 1.03
tpcds_q08/duckdb:vortex-compact 44757169 44573010 1.00
tpcds_q09/duckdb:vortex-compact 56436652 57348333 0.98
tpcds_q10/duckdb:vortex-compact 59798089 59685164 1.00
tpcds_q11/duckdb:vortex-compact 71516947 69400334 1.03
tpcds_q12/duckdb:vortex-compact 22126073 21930127 1.01
tpcds_q13/duckdb:vortex-compact 58246662 56977505 1.02
tpcds_q14/duckdb:vortex-compact 132055625 129988113 1.02
tpcds_q15/duckdb:vortex-compact 30384026 31473741 0.97
tpcds_q16/duckdb:vortex-compact 29165001 29392699 0.99
tpcds_q17/duckdb:vortex-compact 54101372 55043886 0.98
tpcds_q18/duckdb:vortex-compact 57553490 56290429 1.02
tpcds_q19/duckdb:vortex-compact 50350072 49472088 1.02
tpcds_q20/duckdb:vortex-compact 20002666 19571302 1.02
tpcds_q21/duckdb:vortex-compact 18510856 19337250 0.96
tpcds_q22/duckdb:vortex-compact 76932583 77901816 0.99
tpcds_q23/duckdb:vortex-compact 122858661 132101473 0.93
tpcds_q24/duckdb:vortex-compact 61158443 60939742 1.00
tpcds_q25/duckdb:vortex-compact 79198254 81688331 0.97
tpcds_q26/duckdb:vortex-compact 51784987 55592609 0.93
tpcds_q27/duckdb:vortex-compact 67492984 68699452 0.98
tpcds_q28/duckdb:vortex-compact 84461626 85027914 0.99
tpcds_q29/duckdb:vortex-compact 54058807 52473057 1.03
tpcds_q30/duckdb:vortex-compact 🚨 31693964 27335200 1.16
tpcds_q31/duckdb:vortex-compact 45452693 45502247 1.00
tpcds_q32/duckdb:vortex-compact 23031127 22465897 1.03
tpcds_q33/duckdb:vortex-compact 34327459 34015588 1.01
tpcds_q34/duckdb:vortex-compact 38749902 36892728 1.05
tpcds_q35/duckdb:vortex-compact 80955576 82318078 0.98
tpcds_q36/duckdb:vortex-compact 42354334 40420871 1.05
tpcds_q37/duckdb:vortex-compact 23676641 22338872 1.06
tpcds_q38/duckdb:vortex-compact 43502959 46650684 0.93
tpcds_q39/duckdb:vortex-compact 36814426 37786650 0.97
tpcds_q40/duckdb:vortex-compact 23957736 23601460 1.02
tpcds_q41/duckdb:vortex-compact 15277239 15297766 1.00
tpcds_q42/duckdb:vortex-compact 21762450 21049756 1.03
tpcds_q43/duckdb:vortex-compact 34020057 35449333 0.96
tpcds_q44/duckdb:vortex-compact 30189275 30493728 0.99
tpcds_q45/duckdb:vortex-compact 🚨 38408246 34452549 1.11
tpcds_q46/duckdb:vortex-compact 67319374 70906539 0.95
tpcds_q47/duckdb:vortex-compact 62458837 59796994 1.04
tpcds_q48/duckdb:vortex-compact 51712740 50849566 1.02
tpcds_q49/duckdb:vortex-compact 🚨 59096483 53652382 1.10
tpcds_q50/duckdb:vortex-compact 46904646 44854354 1.05
tpcds_q51/duckdb:vortex-compact 106595025 108470575 0.98
tpcds_q52/duckdb:vortex-compact 21446777 21700000 0.99
tpcds_q53/duckdb:vortex-compact 38417303 37174130 1.03
tpcds_q54/duckdb:vortex-compact 40973062 41204328 0.99
tpcds_q55/duckdb:vortex-compact 21714648 21952850 0.99
tpcds_q56/duckdb:vortex-compact 35685549 35295779 1.01
tpcds_q57/duckdb:vortex-compact 44313916 42273343 1.05
tpcds_q58/duckdb:vortex-compact 40863937 42654980 0.96
tpcds_q59/duckdb:vortex-compact 83092430 83828710 0.99
tpcds_q60/duckdb:vortex-compact 37063211 38648602 0.96
tpcds_q61/duckdb:vortex-compact 60161617 59545862 1.01
tpcds_q62/duckdb:vortex-compact 26058726 24949183 1.04
tpcds_q63/duckdb:vortex-compact 37265306 36700790 1.02
tpcds_q64/duckdb:vortex-compact 115104742 113160414 1.02
tpcds_q65/duckdb:vortex-compact 31850485 32045976 0.99
tpcds_q66/duckdb:vortex-compact 38077483 40174521 0.95
tpcds_q67/duckdb:vortex-compact 153153181 150012712 1.02
tpcds_q68/duckdb:vortex-compact 60936078 61385550 0.99
tpcds_q69/duckdb:vortex-compact 61517152 60110656 1.02
tpcds_q70/duckdb:vortex-compact 36788899 36519971 1.01
tpcds_q71/duckdb:vortex-compact 33858296 31800165 1.06
tpcds_q72/duckdb:vortex-compact 192656532 193626925 0.99
tpcds_q73/duckdb:vortex-compact 37654988 37274963 1.01
tpcds_q74/duckdb:vortex-compact 83505114 83230394 1.00
tpcds_q75/duckdb:vortex-compact 70020391 69635945 1.01
tpcds_q76/duckdb:vortex-compact 35499709 34112754 1.04
tpcds_q77/duckdb:vortex-compact 41473530 41322048 1.00
tpcds_q78/duckdb:vortex-compact 86533697 89438804 0.97
tpcds_q79/duckdb:vortex-compact 52168378 53656261 0.97
tpcds_q80/duckdb:vortex-compact 77242391 76736077 1.01
tpcds_q81/duckdb:vortex-compact 32341854 32662214 0.99
tpcds_q82/duckdb:vortex-compact 24575113 26074113 0.94
tpcds_q83/duckdb:vortex-compact 32691331 32183578 1.02
tpcds_q84/duckdb:vortex-compact 25605544 25138347 1.02
tpcds_q85/duckdb:vortex-compact 56961673 56878999 1.00
tpcds_q86/duckdb:vortex-compact 23013692 23803083 0.97
tpcds_q87/duckdb:vortex-compact 45492794 48217722 0.94
tpcds_q88/duckdb:vortex-compact 38750480 39649854 0.98
tpcds_q89/duckdb:vortex-compact 37133758 37309879 1.00
tpcds_q90/duckdb:vortex-compact 15450406 14651855 1.05
tpcds_q91/duckdb:vortex-compact 50500631 49573518 1.02
tpcds_q92/duckdb:vortex-compact 53980376 54521629 0.99
tpcds_q93/duckdb:vortex-compact 31702212 29774225 1.06
tpcds_q94/duckdb:vortex-compact 30767198 31671815 0.97
tpcds_q95/duckdb:vortex-compact 150134392 150091514 1.00
tpcds_q96/duckdb:vortex-compact 16654961 17652887 0.94
tpcds_q97/duckdb:vortex-compact 🚀 41018769 46339268 0.89
tpcds_q98/duckdb:vortex-compact 27491657 28035671 0.98
tpcds_q99/duckdb:vortex-compact 30680831 31122817 0.99
duckdb / parquet (1.002x ➖, 1↑ 2↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/duckdb:parquet 28647464 27092596 1.06
tpcds_q02/duckdb:parquet 22948495 23874768 0.96
tpcds_q03/duckdb:parquet 11257108 11251386 1.00
tpcds_q04/duckdb:parquet 167786742 166312900 1.01
tpcds_q05/duckdb:parquet 29366408 27080255 1.08
tpcds_q06/duckdb:parquet 27864941 28030976 0.99
tpcds_q07/duckdb:parquet 21329389 20901404 1.02
tpcds_q08/duckdb:parquet 26293551 26562954 0.99
tpcds_q09/duckdb:parquet 39018398 39464354 0.99
tpcds_q10/duckdb:parquet 33215642 33239318 1.00
tpcds_q11/duckdb:parquet 86321006 84592886 1.02
tpcds_q12/duckdb:parquet 14149081 14402501 0.98
tpcds_q13/duckdb:parquet 32785346 33181572 0.99
tpcds_q14/duckdb:parquet 99885364 99372331 1.01
tpcds_q15/duckdb:parquet 29957861 30174491 0.99
tpcds_q16/duckdb:parquet 20872979 20818273 1.00
tpcds_q17/duckdb:parquet 37740723 35580096 1.06
tpcds_q18/duckdb:parquet 44907652 44817454 1.00
tpcds_q19/duckdb:parquet 28988487 30291849 0.96
tpcds_q20/duckdb:parquet 15338300 15687799 0.98
tpcds_q21/duckdb:parquet 10393543 10791874 0.96
tpcds_q22/duckdb:parquet 68749071 67850931 1.01
tpcds_q23/duckdb:parquet 79844469 77869229 1.03
tpcds_q24/duckdb:parquet 43019001 43691940 0.98
tpcds_q25/duckdb:parquet 32745431 32260726 1.02
tpcds_q26/duckdb:parquet 36307134 35143904 1.03
tpcds_q27/duckdb:parquet 48370561 47893523 1.01
tpcds_q28/duckdb:parquet 36881866 37230479 0.99
tpcds_q29/duckdb:parquet 36191309 35643438 1.02
tpcds_q30/duckdb:parquet 34452638 34802508 0.99
tpcds_q31/duckdb:parquet 23323716 23067367 1.01
tpcds_q32/duckdb:parquet 11803387 11355271 1.04
tpcds_q33/duckdb:parquet 21206439 20232025 1.05
tpcds_q34/duckdb:parquet 19585447 20188932 0.97
tpcds_q35/duckdb:parquet 56340984 54971113 1.02
tpcds_q36/duckdb:parquet 19747650 19586892 1.01
tpcds_q37/duckdb:parquet 11898651 12260588 0.97
tpcds_q38/duckdb:parquet 32585211 32835021 0.99
tpcds_q39/duckdb:parquet 29113540 28449452 1.02
tpcds_q40/duckdb:parquet 17745057 16716478 1.06
tpcds_q41/duckdb:parquet 7697222 7765182 0.99
tpcds_q42/duckdb:parquet 9320715 9089540 1.03
tpcds_q43/duckdb:parquet 14914916 15002507 0.99
tpcds_q44/duckdb:parquet 22535353 21933438 1.03
tpcds_q45/duckdb:parquet 26504014 27038802 0.98
tpcds_q46/duckdb:parquet 43228490 43658025 0.99
tpcds_q47/duckdb:parquet 44876763 44987608 1.00
tpcds_q48/duckdb:parquet 28831258 28647957 1.01
tpcds_q49/duckdb:parquet 24099295 24421417 0.99
tpcds_q50/duckdb:parquet 24963884 24293219 1.03
tpcds_q51/duckdb:parquet 92689487 93737219 0.99
tpcds_q52/duckdb:parquet 🚀 10108969 11611237 0.87
tpcds_q53/duckdb:parquet 14886959 14949537 1.00
tpcds_q54/duckdb:parquet 24764795 25565379 0.97
tpcds_q55/duckdb:parquet 9673540 9757418 0.99
tpcds_q56/duckdb:parquet 20610821 19700547 1.05
tpcds_q57/duckdb:parquet 33509389 33990236 0.99
tpcds_q58/duckdb:parquet 22397121 23500612 0.95
tpcds_q59/duckdb:parquet 35307747 34211455 1.03
tpcds_q60/duckdb:parquet 21017543 22616553 0.93
tpcds_q61/duckdb:parquet 29651720 29614849 1.00
tpcds_q62/duckdb:parquet 12140433 12463734 0.97
tpcds_q63/duckdb:parquet 13874431 14056387 0.99
tpcds_q64/duckdb:parquet 72189075 73190800 0.99
tpcds_q65/duckdb:parquet 20323179 19354635 1.05
tpcds_q66/duckdb:parquet 28840176 28209998 1.02
tpcds_q67/duckdb:parquet 133181463 134777253 0.99
tpcds_q68/duckdb:parquet 36341299 36348190 1.00
tpcds_q69/duckdb:parquet 35723664 36167617 0.99
tpcds_q70/duckdb:parquet 18824154 18946079 0.99
tpcds_q71/duckdb:parquet 19209924 18333420 1.05
tpcds_q72/duckdb:parquet 165633995 164240424 1.01
tpcds_q73/duckdb:parquet 17205978 17102309 1.01
tpcds_q74/duckdb:parquet 125614490 127340941 0.99
tpcds_q75/duckdb:parquet 51251837 53034940 0.97
tpcds_q76/duckdb:parquet 19320319 18986802 1.02
tpcds_q77/duckdb:parquet 21717519 21032709 1.03
tpcds_q78/duckdb:parquet 75007296 74576473 1.01
tpcds_q79/duckdb:parquet 26813060 26667984 1.01
tpcds_q80/duckdb:parquet 40900638 40046271 1.02
tpcds_q81/duckdb:parquet 31097916 30373450 1.02
tpcds_q82/duckdb:parquet 13167984 13323848 0.99
tpcds_q83/duckdb:parquet 15956834 16018627 1.00
tpcds_q84/duckdb:parquet 19010355 18844811 1.01
tpcds_q85/duckdb:parquet 37374562 39855855 0.94
tpcds_q86/duckdb:parquet 11608513 11785278 0.99
tpcds_q87/duckdb:parquet 🚨 38523624 34994087 1.10
tpcds_q88/duckdb:parquet 48239039 48477841 1.00
tpcds_q89/duckdb:parquet 16171188 16142248 1.00
tpcds_q90/duckdb:parquet 🚨 8103260 7321548 1.11
tpcds_q91/duckdb:parquet 21915737 22585266 0.97
tpcds_q92/duckdb:parquet 11240123 11126146 1.01
tpcds_q93/duckdb:parquet 28120983 28756014 0.98
tpcds_q94/duckdb:parquet 15429245 16429730 0.94
tpcds_q95/duckdb:parquet 142322940 140663321 1.01
tpcds_q96/duckdb:parquet 8737238 8623828 1.01
tpcds_q97/duckdb:parquet 34841576 35848603 0.97
tpcds_q98/duckdb:parquet 17998381 16962033 1.06
tpcds_q99/duckdb:parquet 18606112 19409915 0.96
duckdb / duckdb (0.998x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpcds_q01/duckdb:duckdb 19838685 19576366 1.01
tpcds_q02/duckdb:duckdb 18115084 18108852 1.00
tpcds_q03/duckdb:duckdb 8503996 8344177 1.02
tpcds_q04/duckdb:duckdb 168752391 177477786 0.95
tpcds_q05/duckdb:duckdb 19937849 18832109 1.06
tpcds_q06/duckdb:duckdb 22416343 22013837 1.02
tpcds_q07/duckdb:duckdb 37268360 38120886 0.98
tpcds_q08/duckdb:duckdb 120490493 119602707 1.01
tpcds_q09/duckdb:duckdb 19670657 19739063 1.00
tpcds_q10/duckdb:duckdb 23829228 23401687 1.02
tpcds_q11/duckdb:duckdb 86953212 91303516 0.95
tpcds_q12/duckdb:duckdb 10686492 11375331 0.94
tpcds_q13/duckdb:duckdb 24254964 23704208 1.02
tpcds_q14/duckdb:duckdb 92088629 91265896 1.01
tpcds_q15/duckdb:duckdb 24462095 24113154 1.01
tpcds_q16/duckdb:duckdb 17776339 17092025 1.04
tpcds_q17/duckdb:duckdb 22336790 21406287 1.04
tpcds_q18/duckdb:duckdb 43608744 44424460 0.98
tpcds_q19/duckdb:duckdb 15975387 17723098 0.90
tpcds_q20/duckdb:duckdb 11863661 11679530 1.02
tpcds_q21/duckdb:duckdb 7160874 6574012 1.09
tpcds_q22/duckdb:duckdb 62973910 59820523 1.05
tpcds_q23/duckdb:duckdb 79930715 78741840 1.02
tpcds_q24/duckdb:duckdb 24089692 23749706 1.01
tpcds_q25/duckdb:duckdb 17309260 16390033 1.06
tpcds_q26/duckdb:duckdb 24027259 25149272 0.96
tpcds_q27/duckdb:duckdb 37459435 38625390 0.97
tpcds_q28/duckdb:duckdb 21237981 21337827 1.00
tpcds_q29/duckdb:duckdb 20113902 20413889 0.99
tpcds_q30/duckdb:duckdb 26627652 28749386 0.93
tpcds_q31/duckdb:duckdb 48631896 47087235 1.03
tpcds_q32/duckdb:duckdb 6958158 7170569 0.97
tpcds_q33/duckdb:duckdb 12948528 12330732 1.05
tpcds_q34/duckdb:duckdb 14729820 14667660 1.00
tpcds_q35/duckdb:duckdb 31115729 32668514 0.95
tpcds_q36/duckdb:duckdb 69176595 69951642 0.99
tpcds_q37/duckdb:duckdb 7326888 7665262 0.96
tpcds_q38/duckdb:duckdb 30893995 30118494 1.03
tpcds_q39/duckdb:duckdb 24971441 24920841 1.00
tpcds_q40/duckdb:duckdb 11993227 12850598 0.93
tpcds_q41/duckdb:duckdb 8161505 8407206 0.97
tpcds_q42/duckdb:duckdb 6247501 6452489 0.97
tpcds_q43/duckdb:duckdb 11350754 10998315 1.03
tpcds_q44/duckdb:duckdb 13146592 13094102 1.00
tpcds_q45/duckdb:duckdb 16897290 16777206 1.01
tpcds_q46/duckdb:duckdb 36102405 36007801 1.00
tpcds_q47/duckdb:duckdb 40087969 40124691 1.00
tpcds_q48/duckdb:duckdb 22682254 21291824 1.07
tpcds_q49/duckdb:duckdb 16891283 16332025 1.03
tpcds_q50/duckdb:duckdb 13760808 14207745 0.97
tpcds_q51/duckdb:duckdb 90441131 88952692 1.02
tpcds_q52/duckdb:duckdb 7340583 7291102 1.01
tpcds_q53/duckdb:duckdb 13090138 13426303 0.97
tpcds_q54/duckdb:duckdb 15850082 16038811 0.99
tpcds_q55/duckdb:duckdb 6618106 6796390 0.97
tpcds_q56/duckdb:duckdb 13342515 13255166 1.01
tpcds_q57/duckdb:duckdb 32583279 31912925 1.02
tpcds_q58/duckdb:duckdb 12072779 12307683 0.98
tpcds_q59/duckdb:duckdb 34604037 34976835 0.99
tpcds_q60/duckdb:duckdb 14142181 14453609 0.98
tpcds_q61/duckdb:duckdb 14182522 14422634 0.98
tpcds_q62/duckdb:duckdb 9295393 9236244 1.01
tpcds_q63/duckdb:duckdb 11728354 12012261 0.98
tpcds_q64/duckdb:duckdb 53344405 53925893 0.99
tpcds_q65/duckdb:duckdb 33631368 32190251 1.04
tpcds_q66/duckdb:duckdb 25436308 24897586 1.02
tpcds_q67/duckdb:duckdb 126975566 129510199 0.98
tpcds_q68/duckdb:duckdb 25056006 25189213 0.99
tpcds_q69/duckdb:duckdb 23805330 25691472 0.93
tpcds_q70/duckdb:duckdb 13943394 14905958 0.94
tpcds_q71/duckdb:duckdb 11820348 12605338 0.94
tpcds_q72/duckdb:duckdb 40181382 41892777 0.96
tpcds_q73/duckdb:duckdb 10728439 10834964 0.99
tpcds_q74/duckdb:duckdb 143309577 143623691 1.00
tpcds_q75/duckdb:duckdb 41662666 41355623 1.01
tpcds_q76/duckdb:duckdb 11966386 12067595 0.99
tpcds_q77/duckdb:duckdb 11796325 12178270 0.97
tpcds_q78/duckdb:duckdb 61017889 60015982 1.02
tpcds_q79/duckdb:duckdb 18590661 18532238 1.00
tpcds_q80/duckdb:duckdb 28436997 28002623 1.02
tpcds_q81/duckdb:duckdb 37416798 37351674 1.00
tpcds_q82/duckdb:duckdb 8040836 8413747 0.96
tpcds_q83/duckdb:duckdb 8922616 9090792 0.98
tpcds_q84/duckdb:duckdb 13967072 13314404 1.05
tpcds_q85/duckdb:duckdb 22639094 22909150 0.99
tpcds_q86/duckdb:duckdb 10498692 10395468 1.01
tpcds_q87/duckdb:duckdb 34371665 32777840 1.05
tpcds_q88/duckdb:duckdb 25509956 25694702 0.99
tpcds_q89/duckdb:duckdb 15025862 14130824 1.06
tpcds_q90/duckdb:duckdb 5373600 5343834 1.01
tpcds_q91/duckdb:duckdb 12763533 12062097 1.06
tpcds_q92/duckdb:duckdb 8690018 8610452 1.01
tpcds_q93/duckdb:duckdb 22168112 20451139 1.08
tpcds_q94/duckdb:duckdb 12367586 12687556 0.97
tpcds_q95/duckdb:duckdb 110428918 122012016 0.91
tpcds_q96/duckdb:duckdb 4577439 4474326 1.02
tpcds_q97/duckdb:duckdb 28729787 28903768 0.99
tpcds_q98/duckdb:duckdb 13665715 13288537 1.03
tpcds_q99/duckdb:duckdb 15914795 15768110 1.01
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +16.6% +7.7% +8.3% +25.0% ➖ noise
1 datafusion:vortex-file-compressed +4.7% +7.7% -2.7% +21.4% ➖ noise
1 duckdb:duckdb +1.3% +7.7% -5.9% +22.2% ➖ noise
1 duckdb:vortex-compact +5.2% +7.7% -2.2% +21.7% ➖ noise
1 duckdb:vortex-file-compressed +2.6% +7.7% -4.7% +34.2% ➖ noise
2 datafusion:vortex-compact -4.4% +2.6% -6.9% +10.7% ➖ noise
2 datafusion:vortex-file-compressed -7.8% +2.6% -10.2% +10.7% ✅ faster
2 duckdb:duckdb +0.0% +2.6% -2.5% +10.7% ➖ noise
2 duckdb:vortex-compact -5.3% +2.6% -7.7% +19.1% ➖ noise
2 duckdb:vortex-file-compressed +8.9% +2.6% +6.1% +30.1% ➖ noise
3 datafusion:vortex-compact -4.3% +3.6% -7.7% +13.4% ➖ noise
3 datafusion:vortex-file-compressed +9.0% +3.6% +5.2% +10.7% ➖ noise
3 duckdb:duckdb +1.9% +3.6% -1.7% +16.1% ➖ noise
3 duckdb:vortex-compact -0.1% +3.6% -3.6% +10.7% ➖ noise
3 duckdb:vortex-file-compressed -5.8% +3.6% -9.1% +10.7% ➖ noise
4 datafusion:vortex-compact -0.3% +6.0% -5.9% +10.7% ➖ noise
4 datafusion:vortex-file-compressed -0.3% +6.0% -5.9% +10.7% ➖ noise
4 duckdb:duckdb -4.9% +6.0% -10.3% +10.7% ✅ faster
4 duckdb:vortex-compact +2.6% +6.0% -3.2% +15.2% ➖ noise
4 duckdb:vortex-file-compressed -1.6% +6.0% -7.1% +10.7% ➖ noise
5 datafusion:vortex-compact +5.1% +10.1% -4.6% +13.0% ➖ noise
5 datafusion:vortex-file-compressed +1.8% +10.1% -7.5% +10.8% ➖ noise
5 duckdb:duckdb +5.9% +10.1% -3.8% +13.6% ➖ noise
5 duckdb:vortex-compact +2.7% +10.1% -6.7% +17.9% ➖ noise
5 duckdb:vortex-file-compressed -0.2% +10.1% -9.3% +12.5% ➖ noise
6 datafusion:vortex-compact -0.5% +0.5% -1.1% +11.3% ➖ noise
6 datafusion:vortex-file-compressed -46.6% +0.5% -46.9% +10.7% ✅ faster
6 duckdb:duckdb +1.8% +0.5% +1.3% +13.7% ➖ noise
6 duckdb:vortex-compact +0.4% +0.5% -0.1% +10.7% ➖ noise
6 duckdb:vortex-file-compressed +2.0% +0.5% +1.5% +10.7% ➖ noise
7 datafusion:vortex-compact -5.0% +7.8% -11.9% +10.7% ✅ faster
7 datafusion:vortex-file-compressed -4.7% +7.8% -11.6% +14.3% ➖ noise
7 duckdb:duckdb -2.2% +7.8% -9.3% +17.7% ➖ noise
7 duckdb:vortex-compact +3.4% +7.8% -4.0% +10.7% ➖ noise
7 duckdb:vortex-file-compressed +0.3% +7.8% -6.9% +19.1% ➖ noise
8 datafusion:vortex-compact -1.0% +10.1% -10.1% +16.6% ➖ noise
8 datafusion:vortex-file-compressed -0.6% +10.1% -9.7% +10.7% ✅ faster
8 duckdb:duckdb +0.7% +10.1% -8.5% +10.7% ➖ noise
8 duckdb:vortex-compact +0.4% +10.1% -8.8% +10.7% ➖ noise
8 duckdb:vortex-file-compressed -8.9% +10.1% -17.3% +17.3% ✅ faster
9 datafusion:vortex-compact -1.7% +9.9% -10.6% +10.7% ✅ faster
9 datafusion:vortex-file-compressed +0.1% +9.9% -9.0% +10.7% ➖ noise
9 duckdb:duckdb -0.3% +9.9% -9.4% +10.7% ➖ noise
9 duckdb:vortex-compact -1.6% +9.9% -10.5% +10.7% ✅ faster
9 duckdb:vortex-file-compressed +0.5% +9.9% -8.6% +10.7% ➖ noise
10 datafusion:vortex-compact -3.1% +6.9% -9.3% +10.7% ➖ noise
10 datafusion:vortex-file-compressed -3.6% +6.9% -9.8% +10.7% ✅ faster
10 duckdb:duckdb +1.8% +6.9% -4.7% +10.7% ➖ noise
10 duckdb:vortex-compact +0.2% +6.9% -6.3% +11.4% ➖ noise
10 duckdb:vortex-file-compressed -1.5% +6.9% -7.8% +10.7% ➖ noise
11 datafusion:vortex-compact -2.6% +8.4% -10.1% +11.7% ➖ noise
11 datafusion:vortex-file-compressed -0.1% +8.4% -7.8% +10.7% ➖ noise
11 duckdb:duckdb -4.8% +8.4% -12.1% +10.7% ✅ faster
11 duckdb:vortex-compact +3.0% +8.4% -4.9% +10.7% ➖ noise
11 duckdb:vortex-file-compressed +6.8% +8.4% -1.5% +12.5% ➖ noise
12 datafusion:vortex-compact -15.5% +0.7% -16.0% +14.7% ✅ faster
12 datafusion:vortex-file-compressed -9.4% +0.7% -10.0% +13.3% ➖ noise
12 duckdb:duckdb -6.1% +0.7% -6.7% +13.8% ➖ noise
12 duckdb:vortex-compact +0.9% +0.7% +0.2% +13.1% ➖ noise
12 duckdb:vortex-file-compressed +0.7% +0.7% +0.1% +10.7% ➖ noise
13 datafusion:vortex-compact -18.7% +4.9% -22.5% +15.3% ✅ faster
13 datafusion:vortex-file-compressed +0.6% +4.9% -4.1% +10.7% ➖ noise
13 duckdb:duckdb +2.3% +4.9% -2.5% +10.7% ➖ noise
13 duckdb:vortex-compact +2.2% +4.9% -2.6% +10.7% ➖ noise
13 duckdb:vortex-file-compressed +2.0% +4.9% -2.8% +10.7% ➖ noise
14 datafusion:vortex-compact +1.3% +6.9% -5.2% +10.7% ➖ noise
14 datafusion:vortex-file-compressed -3.4% +6.9% -9.6% +10.7% ➖ noise
14 duckdb:duckdb +0.9% +6.9% -5.6% +10.7% ➖ noise
14 duckdb:vortex-compact +1.6% +6.9% -5.0% +10.7% ➖ noise
14 duckdb:vortex-file-compressed -0.9% +6.9% -7.3% +12.6% ➖ noise
15 datafusion:vortex-compact +4.0% +4.5% -0.4% +15.6% ➖ noise
15 datafusion:vortex-file-compressed -1.7% +4.5% -5.9% +12.9% ➖ noise
15 duckdb:duckdb +1.4% +4.5% -2.9% +10.7% ➖ noise
15 duckdb:vortex-compact -3.5% +4.5% -7.6% +13.6% ➖ noise
15 duckdb:vortex-file-compressed -1.2% +4.5% -5.4% +10.7% ➖ noise
16 datafusion:vortex-compact -0.5% +6.0% -6.1% +19.5% ➖ noise
16 datafusion:vortex-file-compressed -1.7% +6.0% -7.3% +16.5% ➖ noise
16 duckdb:duckdb +4.0% +6.0% -1.9% +12.9% ➖ noise
16 duckdb:vortex-compact -0.8% +6.0% -6.4% +10.7% ➖ noise
16 duckdb:vortex-file-compressed +0.5% +6.0% -5.2% +10.9% ➖ noise
17 datafusion:vortex-compact -0.9% +3.4% -4.2% +10.7% ➖ noise
17 datafusion:vortex-file-compressed +0.5% +3.4% -2.9% +10.7% ➖ noise
17 duckdb:duckdb +4.3% +3.4% +0.9% +10.7% ➖ noise
17 duckdb:vortex-compact -1.7% +3.4% -5.0% +10.7% ➖ noise
17 duckdb:vortex-file-compressed -0.2% +3.4% -3.5% +10.7% ➖ noise
18 datafusion:vortex-compact +1.7% +6.1% -4.1% +10.7% ➖ noise
18 datafusion:vortex-file-compressed -1.3% +6.1% -7.0% +10.7% ➖ noise
18 duckdb:duckdb -1.8% +6.1% -7.5% +10.7% ➖ noise
18 duckdb:vortex-compact +2.2% +6.1% -3.6% +10.7% ➖ noise
18 duckdb:vortex-file-compressed +0.8% +6.1% -5.0% +11.2% ➖ noise
19 datafusion:vortex-compact +2.4% +0.8% +1.6% +12.7% ➖ noise
19 datafusion:vortex-file-compressed +0.3% +0.8% -0.5% +10.7% ➖ noise
19 duckdb:duckdb -9.9% +0.8% -10.6% +15.7% ➖ noise
19 duckdb:vortex-compact +1.8% +0.8% +1.0% +10.7% ➖ noise
19 duckdb:vortex-file-compressed +0.7% +0.8% -0.0% +10.7% ➖ noise
20 datafusion:vortex-compact +0.3% +6.8% -6.1% +25.2% ➖ noise
20 datafusion:vortex-file-compressed -8.2% +6.8% -14.0% +13.4% ✅ faster
20 duckdb:duckdb +1.6% +6.8% -4.9% +12.5% ➖ noise
20 duckdb:vortex-compact +2.2% +6.8% -4.3% +10.8% ➖ noise
20 duckdb:vortex-file-compressed -6.2% +6.8% -12.2% +13.4% ✅ faster
21 datafusion:vortex-compact +0.0% +4.6% -4.4% +15.5% ➖ noise
21 datafusion:vortex-file-compressed -4.2% +4.6% -8.4% +12.7% ➖ noise
21 duckdb:duckdb +8.9% +4.6% +4.1% +17.2% ➖ noise
21 duckdb:vortex-compact -4.3% +4.6% -8.5% +19.4% ➖ noise
21 duckdb:vortex-file-compressed -3.3% +4.6% -7.5% +14.5% ➖ noise
22 datafusion:vortex-compact +30.9% +2.8% +27.3% +26.0% 🚨 regression
22 datafusion:vortex-file-compressed +8.3% +2.8% +5.3% +14.6% ➖ noise
22 duckdb:duckdb +5.3% +2.8% +2.4% +11.7% ➖ noise
22 duckdb:vortex-compact -1.2% +2.8% -4.0% +13.8% ➖ noise
22 duckdb:vortex-file-compressed +0.6% +2.8% -2.2% +15.3% ➖ noise
23 datafusion:vortex-compact +3.2% +8.8% -5.1% +10.7% ➖ noise
23 datafusion:vortex-file-compressed -3.2% +8.8% -11.1% +10.7% ✅ faster
23 duckdb:duckdb +1.5% +8.8% -6.7% +24.0% ➖ noise
23 duckdb:vortex-compact -7.0% +8.8% -14.5% +18.5% ➖ noise
23 duckdb:vortex-file-compressed +4.7% +8.8% -3.8% +13.7% ➖ noise
24 datafusion:vortex-compact -3.2% +4.0% -6.9% +10.7% ➖ noise
24 datafusion:vortex-file-compressed +1.4% +4.0% -2.5% +10.7% ➖ noise
24 duckdb:duckdb +1.4% +4.0% -2.5% +10.7% ➖ noise
24 duckdb:vortex-compact +0.4% +4.0% -3.5% +10.7% ➖ noise
24 duckdb:vortex-file-compressed -0.7% +4.0% -4.6% +10.7% ➖ noise
25 datafusion:vortex-compact -1.4% +6.7% -7.6% +10.7% ➖ noise
25 datafusion:vortex-file-compressed -2.2% +6.7% -8.4% +10.7% ➖ noise
25 duckdb:duckdb +5.6% +6.7% -1.1% +10.7% ➖ noise
25 duckdb:vortex-compact -3.0% +6.7% -9.2% +11.0% ➖ noise
25 duckdb:vortex-file-compressed -0.3% +6.7% -6.6% +10.7% ➖ noise
26 datafusion:vortex-compact -1.2% +6.7% -7.4% +10.7% ➖ noise
26 datafusion:vortex-file-compressed +0.4% +6.7% -5.9% +13.7% ➖ noise
26 duckdb:duckdb -4.5% +6.7% -10.5% +12.6% ➖ noise
26 duckdb:vortex-compact -6.8% +6.7% -12.7% +16.1% ➖ noise
26 duckdb:vortex-file-compressed -3.4% +6.7% -9.5% +11.1% ➖ noise
27 datafusion:vortex-compact +2.1% +8.0% -5.4% +12.6% ➖ noise
27 datafusion:vortex-file-compressed -1.0% +8.0% -8.3% +11.5% ➖ noise
27 duckdb:duckdb -3.0% +8.0% -10.2% +16.4% ➖ noise
27 duckdb:vortex-compact -1.8% +8.0% -9.0% +12.9% ➖ noise
27 duckdb:vortex-file-compressed +1.2% +8.0% -6.2% +13.7% ➖ noise
28 datafusion:vortex-compact -1.7% +4.2% -5.6% +10.7% ➖ noise
28 datafusion:vortex-file-compressed -3.9% +4.2% -7.8% +10.7% ➖ noise
28 duckdb:duckdb -0.5% +4.2% -4.5% +10.7% ➖ noise
28 duckdb:vortex-compact -0.7% +4.2% -4.7% +10.7% ➖ noise
28 duckdb:vortex-file-compressed +0.6% +4.2% -3.5% +10.7% ➖ noise
29 datafusion:vortex-compact -1.0% +7.5% -7.9% +12.3% ➖ noise
29 datafusion:vortex-file-compressed -0.1% +7.5% -7.1% +10.7% ➖ noise
29 duckdb:duckdb -1.5% +7.5% -8.3% +10.7% ➖ noise
29 duckdb:vortex-compact +3.0% +7.5% -4.2% +10.7% ➖ noise
29 duckdb:vortex-file-compressed +2.2% +7.5% -4.9% +10.7% ➖ noise
30 datafusion:vortex-compact -2.5% +8.9% -10.5% +10.7% ✅ faster
30 datafusion:vortex-file-compressed +1.6% +8.9% -6.8% +10.7% ➖ noise
30 duckdb:duckdb -7.4% +8.9% -15.0% +10.7% ✅ faster
30 duckdb:vortex-compact +15.9% +8.9% +6.5% +10.7% ➖ noise
30 duckdb:vortex-file-compressed +3.5% +8.9% -5.0% +10.7% ➖ noise
31 datafusion:vortex-compact -2.4% +7.9% -9.6% +10.7% ➖ noise
31 datafusion:vortex-file-compressed -0.6% +7.9% -7.9% +10.7% ➖ noise
31 duckdb:duckdb +3.3% +7.9% -4.3% +10.7% ➖ noise
31 duckdb:vortex-compact -0.1% +7.9% -7.4% +10.7% ➖ noise
31 duckdb:vortex-file-compressed +1.3% +7.9% -6.1% +17.8% ➖ noise
32 datafusion:vortex-compact +2.0% +8.5% -6.0% +11.7% ➖ noise
32 datafusion:vortex-file-compressed -3.6% +8.5% -11.1% +10.7% ✅ faster
32 duckdb:duckdb -3.0% +8.5% -10.6% +12.7% ➖ noise
32 duckdb:vortex-compact +2.5% +8.5% -5.5% +10.7% ➖ noise
32 duckdb:vortex-file-compressed +1.3% +8.5% -6.6% +10.7% ➖ noise
33 datafusion:vortex-compact -2.6% +8.4% -10.1% +10.7% ✅ faster
33 datafusion:vortex-file-compressed -0.3% +8.4% -8.1% +15.2% ➖ noise
33 duckdb:duckdb +5.0% +8.4% -3.2% +17.6% ➖ noise
33 duckdb:vortex-compact +0.9% +8.4% -6.9% +10.7% ➖ noise
33 duckdb:vortex-file-compressed +0.4% +8.4% -7.5% +10.7% ➖ noise
34 datafusion:vortex-compact -1.3% +5.5% -6.4% +12.0% ➖ noise
34 datafusion:vortex-file-compressed +1.6% +5.5% -3.7% +14.3% ➖ noise
34 duckdb:duckdb +0.4% +5.5% -4.8% +10.7% ➖ noise
34 duckdb:vortex-compact +5.0% +5.5% -0.4% +11.4% ➖ noise
34 duckdb:vortex-file-compressed +0.8% +5.5% -4.4% +10.7% ➖ noise
35 datafusion:vortex-compact -0.8% +11.9% -11.3% +10.7% ✅ faster
35 datafusion:vortex-file-compressed -0.4% +11.9% -10.9% +10.7% ✅ faster
35 duckdb:duckdb -4.8% +11.9% -14.9% +15.4% ✅ faster
35 duckdb:vortex-compact -1.7% +11.9% -12.1% +12.2% ✅ faster
35 duckdb:vortex-file-compressed +3.3% +11.9% -7.7% +10.7% ➖ noise
36 datafusion:vortex-compact -3.4% +8.9% -11.3% +10.7% ✅ faster
36 datafusion:vortex-file-compressed -0.7% +8.9% -8.9% +10.7% ➖ noise
36 duckdb:duckdb -1.1% +8.9% -9.2% +10.7% ➖ noise
36 duckdb:vortex-compact +4.8% +8.9% -3.8% +10.7% ➖ noise
36 duckdb:vortex-file-compressed -2.4% +8.9% -10.4% +10.7% ✅ faster
37 datafusion:vortex-compact -2.3% +6.9% -8.5% +10.7% ➖ noise
37 datafusion:vortex-file-compressed -1.8% +6.9% -8.1% +20.1% ➖ noise
37 duckdb:duckdb -4.4% +6.9% -10.6% +16.7% ➖ noise
37 duckdb:vortex-compact +6.0% +6.9% -0.8% +12.2% ➖ noise
37 duckdb:vortex-file-compressed +1.5% +6.9% -5.0% +12.2% ➖ noise
38 datafusion:vortex-compact -7.2% +4.8% -11.5% +10.7% ✅ faster
38 datafusion:vortex-file-compressed +4.0% +4.8% -0.8% +11.3% ➖ noise
38 duckdb:duckdb +2.6% +4.8% -2.2% +15.0% ➖ noise
38 duckdb:vortex-compact -6.7% +4.8% -11.0% +12.2% ✅ faster
38 duckdb:vortex-file-compressed +0.4% +4.8% -4.2% +11.4% ➖ noise
39 datafusion:vortex-compact +0.2% +12.1% -10.5% +11.5% ✅ faster
39 datafusion:vortex-file-compressed +1.4% +12.1% -9.5% +11.5% ➖ noise
39 duckdb:duckdb +0.2% +12.1% -10.6% +26.4% ➖ noise
39 duckdb:vortex-compact -2.6% +12.1% -13.1% +14.7% ✅ faster
39 duckdb:vortex-file-compressed -0.0% +12.1% -10.8% +10.8% ✅ faster
40 datafusion:vortex-compact -3.7% +10.7% -13.0% +10.7% ✅ faster
40 datafusion:vortex-file-compressed -2.3% +10.7% -11.7% +10.7% ✅ faster
40 duckdb:duckdb -6.7% +10.7% -15.7% +15.9% ✅ faster
40 duckdb:vortex-compact +1.5% +10.7% -8.3% +13.6% ➖ noise
40 duckdb:vortex-file-compressed -6.9% +10.7% -15.8% +20.0% ➖ noise
41 datafusion:vortex-compact -3.2% +8.4% -10.7% +19.1% ➖ noise
41 datafusion:vortex-file-compressed -0.3% +8.4% -8.0% +10.7% ➖ noise
41 duckdb:duckdb -2.9% +8.4% -10.5% +51.7% ➖ noise
41 duckdb:vortex-compact -0.1% +8.4% -7.9% +10.7% ➖ noise
41 duckdb:vortex-file-compressed -0.5% +8.4% -8.3% +10.7% ➖ noise
42 datafusion:vortex-compact +1.7% +8.3% -6.1% +10.7% ➖ noise
42 datafusion:vortex-file-compressed -5.2% +8.3% -12.5% +14.8% ➖ noise
42 duckdb:duckdb -3.2% +8.3% -10.6% +14.6% ➖ noise
42 duckdb:vortex-compact +3.4% +8.3% -4.6% +10.7% ➖ noise
42 duckdb:vortex-file-compressed -0.6% +8.3% -8.3% +12.8% ➖ noise
43 datafusion:vortex-compact +1.5% +6.2% -4.4% +10.7% ➖ noise
43 datafusion:vortex-file-compressed -3.2% +6.2% -8.8% +10.7% ➖ noise
43 duckdb:duckdb +3.2% +6.2% -2.8% +20.0% ➖ noise
43 duckdb:vortex-compact -4.0% +6.2% -9.6% +11.1% ➖ noise
43 duckdb:vortex-file-compressed +4.1% +6.2% -1.9% +13.1% ➖ noise
44 datafusion:vortex-compact +2.7% +6.0% -3.1% +10.7% ➖ noise
44 datafusion:vortex-file-compressed -1.7% +6.0% -7.3% +11.0% ➖ noise
44 duckdb:duckdb +0.4% +6.0% -5.3% +17.2% ➖ noise
44 duckdb:vortex-compact -1.0% +6.0% -6.6% +10.7% ➖ noise
44 duckdb:vortex-file-compressed -7.0% +6.0% -12.2% +10.7% ✅ faster
45 datafusion:vortex-compact -9.0% +4.4% -12.7% +11.2% ✅ faster
45 datafusion:vortex-file-compressed -0.5% +4.4% -4.7% +10.7% ➖ noise
45 duckdb:duckdb +0.7% +4.4% -3.5% +10.7% ➖ noise
45 duckdb:vortex-compact +11.5% +4.4% +6.8% +15.4% ➖ noise
45 duckdb:vortex-file-compressed -1.3% +4.4% -5.4% +10.7% ➖ noise
46 datafusion:vortex-compact -1.8% -0.4% -1.4% +10.7% ➖ noise
46 datafusion:vortex-file-compressed -1.1% -0.4% -0.8% +10.7% ➖ noise
46 duckdb:duckdb +0.3% -0.4% +0.6% +10.7% ➖ noise
46 duckdb:vortex-compact -5.1% -0.4% -4.7% +10.7% ➖ noise
46 duckdb:vortex-file-compressed +4.0% -0.4% +4.4% +11.8% ➖ noise
47 datafusion:vortex-compact -0.4% +0.4% -0.7% +10.7% ➖ noise
47 datafusion:vortex-file-compressed +0.9% +0.4% +0.5% +10.7% ➖ noise
47 duckdb:duckdb -0.1% +0.4% -0.5% +10.7% ➖ noise
47 duckdb:vortex-compact +4.5% +0.4% +4.1% +10.7% ➖ noise
47 duckdb:vortex-file-compressed -1.8% +0.4% -2.1% +10.7% ➖ noise
48 datafusion:vortex-compact -0.3% +0.5% -0.8% +16.2% ➖ noise
48 datafusion:vortex-file-compressed +7.0% +0.5% +6.5% +10.7% ➖ noise
48 duckdb:duckdb +6.5% +0.5% +6.0% +11.3% ➖ noise
48 duckdb:vortex-compact +1.7% +0.5% +1.2% +10.7% ➖ noise
48 duckdb:vortex-file-compressed +0.0% +0.5% -0.4% +10.7% ➖ noise
49 datafusion:vortex-compact +1.2% +0.6% +0.6% +10.7% ➖ noise
49 datafusion:vortex-file-compressed +3.9% +0.6% +3.3% +10.7% ➖ noise
49 duckdb:duckdb +3.4% +0.6% +2.8% +11.5% ➖ noise
49 duckdb:vortex-compact +10.1% +0.6% +9.5% +12.8% ➖ noise
49 duckdb:vortex-file-compressed +7.2% +0.6% +6.6% +20.8% ➖ noise
50 datafusion:vortex-compact +0.9% +3.2% -2.3% +10.7% ➖ noise
50 datafusion:vortex-file-compressed -6.3% +3.2% -9.2% +14.5% ➖ noise
50 duckdb:duckdb -3.1% +3.2% -6.2% +10.7% ➖ noise
50 duckdb:vortex-compact +4.6% +3.2% +1.3% +10.7% ➖ noise
50 duckdb:vortex-file-compressed -2.6% +3.2% -5.6% +10.7% ➖ noise
51 datafusion:vortex-compact +0.2% -0.6% +0.9% +10.8% ➖ noise
51 datafusion:vortex-file-compressed -3.1% -0.6% -2.5% +10.9% ➖ noise
51 duckdb:duckdb +1.7% -0.6% +2.3% +10.7% ➖ noise
51 duckdb:vortex-compact -1.7% -0.6% -1.1% +11.0% ➖ noise
51 duckdb:vortex-file-compressed -3.1% -0.6% -2.5% +20.8% ➖ noise
52 datafusion:vortex-compact -1.6% -4.4% +2.9% +13.6% ➖ noise
52 datafusion:vortex-file-compressed +3.2% -4.4% +7.9% +13.8% ➖ noise
52 duckdb:duckdb +0.7% -4.4% +5.3% +19.3% ➖ noise
52 duckdb:vortex-compact -1.2% -4.4% +3.4% +15.8% ➖ noise
52 duckdb:vortex-file-compressed +1.7% -4.4% +6.4% +21.1% ➖ noise
53 datafusion:vortex-compact +1.4% +0.9% +0.5% +15.0% ➖ noise
53 datafusion:vortex-file-compressed -2.1% +0.9% -3.0% +10.9% ➖ noise
53 duckdb:duckdb -2.5% +0.9% -3.4% +10.7% ➖ noise
53 duckdb:vortex-compact +3.3% +0.9% +2.4% +10.7% ➖ noise
53 duckdb:vortex-file-compressed +2.1% +0.9% +1.2% +10.7% ➖ noise
54 datafusion:vortex-compact -0.3% -2.8% +2.6% +10.7% ➖ noise
54 datafusion:vortex-file-compressed -1.8% -2.8% +1.0% +10.7% ➖ noise
54 duckdb:duckdb -1.2% -2.8% +1.7% +11.0% ➖ noise
54 duckdb:vortex-compact -0.6% -2.8% +2.3% +12.0% ➖ noise
54 duckdb:vortex-file-compressed +0.7% -2.8% +3.6% +10.7% ➖ noise
55 datafusion:vortex-compact -4.1% -0.5% -3.6% +10.7% ➖ noise
55 datafusion:vortex-file-compressed -0.8% -0.5% -0.2% +10.7% ➖ noise
55 duckdb:duckdb -2.6% -0.5% -2.1% +17.5% ➖ noise
55 duckdb:vortex-compact -1.1% -0.5% -0.5% +10.7% ➖ noise
55 duckdb:vortex-file-compressed -5.3% -0.5% -4.7% +12.2% ➖ noise
56 datafusion:vortex-compact +0.3% +3.9% -3.4% +15.6% ➖ noise
56 datafusion:vortex-file-compressed -5.2% +3.9% -8.8% +16.6% ➖ noise
56 duckdb:duckdb +0.7% +3.9% -3.1% +10.7% ➖ noise
56 duckdb:vortex-compact +1.1% +3.9% -2.7% +12.5% ➖ noise
56 duckdb:vortex-file-compressed -1.5% +3.9% -5.1% +10.7% ➖ noise
57 datafusion:vortex-compact +6.9% +4.4% +2.3% +10.7% ➖ noise
57 datafusion:vortex-file-compressed +0.5% +4.4% -3.8% +10.7% ➖ noise
57 duckdb:duckdb +2.1% +4.4% -2.2% +15.8% ➖ noise
57 duckdb:vortex-compact +4.8% +4.4% +0.4% +10.7% ➖ noise
57 duckdb:vortex-file-compressed +2.9% +4.4% -1.4% +16.5% ➖ noise
58 datafusion:vortex-compact -0.7% -5.7% +5.3% +12.3% ➖ noise
58 datafusion:vortex-file-compressed -2.3% -5.7% +3.6% +10.7% ➖ noise
58 duckdb:duckdb -1.9% -5.7% +4.0% +17.5% ➖ noise
58 duckdb:vortex-compact -4.2% -5.7% +1.6% +14.4% ➖ noise
58 duckdb:vortex-file-compressed +1.7% -5.7% +7.8% +10.8% ➖ noise
59 datafusion:vortex-compact -2.6% +1.7% -4.2% +10.7% ➖ noise
59 datafusion:vortex-file-compressed -11.5% +1.7% -13.0% +10.7% ✅ faster
59 duckdb:duckdb -1.1% +1.7% -2.7% +10.7% ➖ noise
59 duckdb:vortex-compact -0.9% +1.7% -2.6% +16.6% ➖ noise
59 duckdb:vortex-file-compressed +1.8% +1.7% +0.1% +10.7% ➖ noise
60 datafusion:vortex-compact -0.7% -4.4% +3.9% +10.7% ➖ noise
60 datafusion:vortex-file-compressed -1.3% -4.4% +3.3% +10.7% ➖ noise
60 duckdb:duckdb -2.2% -4.4% +2.4% +12.3% ➖ noise
60 duckdb:vortex-compact -4.1% -4.4% +0.3% +12.8% ➖ noise
60 duckdb:vortex-file-compressed -0.2% -4.4% +4.4% +20.6% ➖ noise
61 datafusion:vortex-compact +4.5% +1.6% +2.8% +10.7% ➖ noise
61 datafusion:vortex-file-compressed -4.4% +1.6% -5.9% +13.1% ➖ noise
61 duckdb:duckdb -1.7% +1.6% -3.2% +10.7% ➖ noise
61 duckdb:vortex-compact +1.0% +1.6% -0.6% +10.7% ➖ noise
61 duckdb:vortex-file-compressed -0.6% +1.6% -2.2% +17.7% ➖ noise
62 datafusion:vortex-compact -13.3% +1.3% -14.5% +27.6% ➖ noise
62 datafusion:vortex-file-compressed -13.6% +1.3% -14.7% +24.9% ➖ noise
62 duckdb:duckdb +0.6% +1.3% -0.6% +19.3% ➖ noise
62 duckdb:vortex-compact +4.4% +1.3% +3.1% +23.2% ➖ noise
62 duckdb:vortex-file-compressed +0.7% +1.3% -0.6% +16.6% ➖ noise
63 datafusion:vortex-compact -0.8% -1.0% +0.2% +10.7% ➖ noise
63 datafusion:vortex-file-compressed -0.7% -1.0% +0.3% +10.7% ➖ noise
63 duckdb:duckdb -2.4% -1.0% -1.3% +10.7% ➖ noise
63 duckdb:vortex-compact +1.5% -1.0% +2.6% +10.7% ➖ noise
63 duckdb:vortex-file-compressed +1.4% -1.0% +2.4% +10.7% ➖ noise
64 datafusion:vortex-compact -0.2% -0.5% +0.3% +10.7% ➖ noise
64 datafusion:vortex-file-compressed -2.6% -0.5% -2.2% +10.7% ➖ noise
64 duckdb:duckdb -1.1% -0.5% -0.6% +10.7% ➖ noise
64 duckdb:vortex-compact +1.7% -0.5% +2.2% +10.7% ➖ noise
64 duckdb:vortex-file-compressed +0.2% -0.5% +0.7% +10.7% ➖ noise
65 datafusion:vortex-compact +2.2% +2.6% -0.4% +10.7% ➖ noise
65 datafusion:vortex-file-compressed -6.0% +2.6% -8.3% +12.6% ➖ noise
65 duckdb:duckdb +4.5% +2.6% +1.8% +15.3% ➖ noise
65 duckdb:vortex-compact -0.6% +2.6% -3.1% +10.7% ➖ noise
65 duckdb:vortex-file-compressed +0.9% +2.6% -1.6% +10.7% ➖ noise
66 datafusion:vortex-compact -2.1% +4.2% -6.0% +16.6% ➖ noise
66 datafusion:vortex-file-compressed +0.3% +4.2% -3.7% +10.8% ➖ noise
66 duckdb:duckdb +2.2% +4.2% -2.0% +15.3% ➖ noise
66 duckdb:vortex-compact -5.2% +4.2% -9.1% +14.2% ➖ noise
66 duckdb:vortex-file-compressed -2.4% +4.2% -6.4% +10.7% ➖ noise
67 datafusion:vortex-compact +0.2% -1.2% +1.5% +10.7% ➖ noise
67 datafusion:vortex-file-compressed -1.0% -1.2% +0.2% +10.7% ➖ noise
67 duckdb:duckdb -2.0% -1.2% -0.8% +10.7% ➖ noise
67 duckdb:vortex-compact +2.1% -1.2% +3.3% +10.7% ➖ noise
67 duckdb:vortex-file-compressed -1.3% -1.2% -0.1% +10.7% ➖ noise
68 datafusion:vortex-compact -1.1% -0.5% -0.6% +11.7% ➖ noise
68 datafusion:vortex-file-compressed -2.0% -0.5% -1.5% +10.7% ➖ noise
68 duckdb:duckdb -0.5% -0.5% +0.0% +10.9% ➖ noise
68 duckdb:vortex-compact -0.7% -0.5% -0.2% +10.7% ➖ noise
68 duckdb:vortex-file-compressed +2.1% -0.5% +2.6% +10.7% ➖ noise
69 datafusion:vortex-compact +1.9% -0.6% +2.5% +10.7% ➖ noise
69 datafusion:vortex-file-compressed +2.4% -0.6% +3.1% +10.7% ➖ noise
69 duckdb:duckdb -7.3% -0.6% -6.8% +10.7% ➖ noise
69 duckdb:vortex-compact +2.3% -0.6% +3.0% +10.7% ➖ noise
69 duckdb:vortex-file-compressed -0.6% -0.6% -0.0% +12.4% ➖ noise
70 datafusion:vortex-compact +1.5% -0.3% +1.8% +10.7% ➖ noise
70 datafusion:vortex-file-compressed +3.0% -0.3% +3.3% +10.7% ➖ noise
70 duckdb:duckdb -6.5% -0.3% -6.2% +11.7% ➖ noise
70 duckdb:vortex-compact +0.7% -0.3% +1.0% +10.7% ➖ noise
70 duckdb:vortex-file-compressed +1.0% -0.3% +1.3% +10.7% ➖ noise
71 datafusion:vortex-compact -11.1% +1.6% -12.5% +18.1% ➖ noise
71 datafusion:vortex-file-compressed -1.0% +1.6% -2.6% +18.2% ➖ noise
71 duckdb:duckdb -6.2% +1.6% -7.7% +23.8% ➖ noise
71 duckdb:vortex-compact +6.5% +1.6% +4.8% +23.8% ➖ noise
71 duckdb:vortex-file-compressed +0.4% +1.6% -1.2% +25.8% ➖ noise
72 datafusion:vortex-compact +1.0% +1.7% -0.6% +10.7% ➖ noise
72 datafusion:vortex-file-compressed -1.4% +1.7% -3.0% +10.7% ➖ noise
72 duckdb:duckdb -4.1% +1.7% -5.6% +10.7% ➖ noise
72 duckdb:vortex-compact -0.5% +1.7% -2.1% +10.7% ➖ noise
72 duckdb:vortex-file-compressed +0.1% +1.7% -1.5% +10.7% ➖ noise
73 datafusion:vortex-compact -0.2% +0.5% -0.7% +18.5% ➖ noise
73 datafusion:vortex-file-compressed -0.5% +0.5% -1.0% +28.3% ➖ noise
73 duckdb:duckdb -1.0% +0.5% -1.4% +14.5% ➖ noise
73 duckdb:vortex-compact +1.0% +0.5% +0.6% +13.1% ➖ noise
73 duckdb:vortex-file-compressed +0.3% +0.5% -0.1% +10.7% ➖ noise
74 datafusion:vortex-compact -4.0% -1.8% -2.3% +11.7% ➖ noise
74 datafusion:vortex-file-compressed -3.0% -1.8% -1.2% +10.7% ➖ noise
74 duckdb:duckdb -0.2% -1.8% +1.6% +10.7% ➖ noise
74 duckdb:vortex-compact +0.3% -1.8% +2.1% +17.3% ➖ noise
74 duckdb:vortex-file-compressed +10.0% -1.8% +11.9% +13.0% ➖ noise
75 datafusion:vortex-compact +0.2% -0.4% +0.6% +11.2% ➖ noise
75 datafusion:vortex-file-compressed -1.2% -0.4% -0.8% +10.7% ➖ noise
75 duckdb:duckdb +0.7% -0.4% +1.1% +10.7% ➖ noise
75 duckdb:vortex-compact +0.6% -0.4% +1.0% +11.4% ➖ noise
75 duckdb:vortex-file-compressed +7.5% -0.4% +7.9% +10.7% ➖ noise
76 datafusion:vortex-compact +1.2% +3.7% -2.5% +15.5% ➖ noise
76 datafusion:vortex-file-compressed -2.1% +3.7% -5.6% +37.7% ➖ noise
76 duckdb:duckdb -0.8% +3.7% -4.4% +11.3% ➖ noise
76 duckdb:vortex-compact +4.1% +3.7% +0.3% +10.7% ➖ noise
76 duckdb:vortex-file-compressed +1.1% +3.7% -2.5% +10.7% ➖ noise
77 datafusion:vortex-compact -1.7% -0.7% -1.0% +10.7% ➖ noise
77 datafusion:vortex-file-compressed -4.3% -0.7% -3.6% +12.8% ➖ noise
77 duckdb:duckdb -3.1% -0.7% -2.5% +13.1% ➖ noise
77 duckdb:vortex-compact +0.4% -0.7% +1.1% +14.2% ➖ noise
77 duckdb:vortex-file-compressed +3.4% -0.7% +4.2% +10.8% ➖ noise
78 datafusion:vortex-compact -2.6% +1.1% -3.7% +10.7% ➖ noise
78 datafusion:vortex-file-compressed -0.0% +1.1% -1.1% +10.7% ➖ noise
78 duckdb:duckdb +1.7% +1.1% +0.6% +10.7% ➖ noise
78 duckdb:vortex-compact -3.2% +1.1% -4.3% +12.8% ➖ noise
78 duckdb:vortex-file-compressed +5.6% +1.1% +4.4% +10.8% ➖ noise
79 datafusion:vortex-compact -0.2% +0.1% -0.3% +10.7% ➖ noise
79 datafusion:vortex-file-compressed -5.9% +0.1% -6.0% +13.6% ➖ noise
79 duckdb:duckdb +0.3% +0.1% +0.2% +10.9% ➖ noise
79 duckdb:vortex-compact -2.8% +0.1% -2.9% +11.6% ➖ noise
79 duckdb:vortex-file-compressed -1.0% +0.1% -1.1% +10.7% ➖ noise
80 datafusion:vortex-compact -0.2% +1.2% -1.3% +10.7% ➖ noise
80 datafusion:vortex-file-compressed -1.2% +1.2% -2.3% +10.7% ➖ noise
80 duckdb:duckdb +1.6% +1.2% +0.4% +14.1% ➖ noise
80 duckdb:vortex-compact +0.7% +1.2% -0.5% +18.1% ➖ noise
80 duckdb:vortex-file-compressed +1.9% +1.2% +0.7% +13.7% ➖ noise
81 datafusion:vortex-compact +3.6% +1.0% +2.5% +10.7% ➖ noise
81 datafusion:vortex-file-compressed +1.0% +1.0% -0.1% +12.8% ➖ noise
81 duckdb:duckdb +0.2% +1.0% -0.9% +10.7% ➖ noise
81 duckdb:vortex-compact -1.0% +1.0% -2.0% +10.7% ➖ noise
81 duckdb:vortex-file-compressed +3.0% +1.0% +1.9% +10.7% ➖ noise
82 datafusion:vortex-compact -4.1% -1.5% -2.6% +12.1% ➖ noise
82 datafusion:vortex-file-compressed +5.2% -1.5% +6.8% +10.7% ➖ noise
82 duckdb:duckdb -4.4% -1.5% -3.0% +13.5% ➖ noise
82 duckdb:vortex-compact -5.7% -1.5% -4.3% +18.4% ➖ noise
82 duckdb:vortex-file-compressed +3.5% -1.5% +5.0% +10.7% ➖ noise
83 datafusion:vortex-compact +1.0% -1.9% +3.0% +10.7% ➖ noise
83 datafusion:vortex-file-compressed +3.3% -1.9% +5.3% +12.4% ➖ noise
83 duckdb:duckdb -1.8% -1.9% +0.1% +10.7% ➖ noise
83 duckdb:vortex-compact +1.6% -1.9% +3.6% +20.4% ➖ noise
83 duckdb:vortex-file-compressed +3.6% -1.9% +5.6% +13.7% ➖ noise
84 datafusion:vortex-compact -1.6% -0.2% -1.4% +12.1% ➖ noise
84 datafusion:vortex-file-compressed -2.7% -0.2% -2.5% +10.7% ➖ noise
84 duckdb:duckdb +4.9% -0.2% +5.1% +10.7% ➖ noise
84 duckdb:vortex-compact +1.9% -0.2% +2.1% +10.7% ➖ noise
84 duckdb:vortex-file-compressed +9.9% -0.2% +10.1% +10.7% ➖ noise
85 datafusion:vortex-compact -2.2% -3.8% +1.7% +10.7% ➖ noise
85 datafusion:vortex-file-compressed -0.6% -3.8% +3.4% +10.7% ➖ noise
85 duckdb:duckdb -1.2% -3.8% +2.8% +10.7% ➖ noise
85 duckdb:vortex-compact +0.1% -3.8% +4.1% +10.7% ➖ noise
85 duckdb:vortex-file-compressed +4.8% -3.8% +9.0% +10.7% ➖ noise
86 datafusion:vortex-compact +11.5% -0.6% +12.2% +17.8% ➖ noise
86 datafusion:vortex-file-compressed -5.8% -0.6% -5.3% +17.1% ➖ noise
86 duckdb:duckdb +1.0% -0.6% +1.6% +13.0% ➖ noise
86 duckdb:vortex-compact -3.3% -0.6% -2.8% +19.8% ➖ noise
86 duckdb:vortex-file-compressed +1.0% -0.6% +1.6% +12.8% ➖ noise
87 datafusion:vortex-compact +2.5% +3.1% -0.5% +10.7% ➖ noise
87 datafusion:vortex-file-compressed +2.6% +3.1% -0.4% +10.7% ➖ noise
87 duckdb:duckdb +4.9% +3.1% +1.7% +14.7% ➖ noise
87 duckdb:vortex-compact -5.7% +3.1% -8.5% +13.9% ➖ noise
87 duckdb:vortex-file-compressed -6.6% +3.1% -9.4% +13.2% ➖ noise
88 datafusion:vortex-compact +0.7% -0.7% +1.4% +10.7% ➖ noise
88 datafusion:vortex-file-compressed -3.6% -0.7% -2.9% +10.7% ➖ noise
88 duckdb:duckdb -0.7% -0.7% -0.0% +10.7% ➖ noise
88 duckdb:vortex-compact -2.3% -0.7% -1.6% +10.7% ➖ noise
88 duckdb:vortex-file-compressed +1.6% -0.7% +2.3% +10.7% ➖ noise
89 datafusion:vortex-compact -3.8% +1.0% -4.8% +12.9% ➖ noise
89 datafusion:vortex-file-compressed -1.0% +1.0% -2.0% +10.7% ➖ noise
89 duckdb:duckdb +6.3% +1.0% +5.3% +10.7% ➖ noise
89 duckdb:vortex-compact -0.5% +1.0% -1.5% +10.7% ➖ noise
89 duckdb:vortex-file-compressed +2.7% +1.0% +1.7% +10.7% ➖ noise
90 datafusion:vortex-compact -6.2% +4.0% -9.7% +17.2% ➖ noise
90 datafusion:vortex-file-compressed -0.5% +4.0% -4.3% +10.7% ➖ noise
90 duckdb:duckdb +0.6% +4.0% -3.3% +10.7% ➖ noise
90 duckdb:vortex-compact +5.5% +4.0% +1.4% +10.7% ➖ noise
90 duckdb:vortex-file-compressed -3.3% +4.0% -7.0% +10.7% ➖ noise
91 datafusion:vortex-compact -0.6% -2.0% +1.4% +10.7% ➖ noise
91 datafusion:vortex-file-compressed -5.3% -2.0% -3.4% +21.3% ➖ noise
91 duckdb:duckdb +5.8% -2.0% +8.0% +11.5% ➖ noise
91 duckdb:vortex-compact +1.9% -2.0% +4.0% +10.7% ➖ noise
91 duckdb:vortex-file-compressed +1.5% -2.0% +3.6% +10.7% ➖ noise
92 datafusion:vortex-compact -0.1% +0.4% -0.6% +24.7% ➖ noise
92 datafusion:vortex-file-compressed -2.1% +0.4% -2.5% +10.7% ➖ noise
92 duckdb:duckdb +0.9% +0.4% +0.5% +15.9% ➖ noise
92 duckdb:vortex-compact -1.0% +0.4% -1.4% +19.8% ➖ noise
92 duckdb:vortex-file-compressed +2.2% +0.4% +1.7% +12.3% ➖ noise
93 datafusion:vortex-compact -2.4% +1.3% -3.6% +10.7% ➖ noise
93 datafusion:vortex-file-compressed +1.8% +1.3% +0.5% +10.7% ➖ noise
93 duckdb:duckdb +8.4% +1.3% +7.0% +13.7% ➖ noise
93 duckdb:vortex-compact +6.5% +1.3% +5.1% +16.5% ➖ noise
93 duckdb:vortex-file-compressed +1.0% +1.3% -0.3% +10.7% ➖ noise
94 datafusion:vortex-compact -9.5% -2.8% -7.0% +11.7% ➖ noise
94 datafusion:vortex-file-compressed +0.9% -2.8% +3.7% +10.7% ➖ noise
94 duckdb:duckdb -2.5% -2.8% +0.2% +10.7% ➖ noise
94 duckdb:vortex-compact -2.9% -2.8% -0.1% +14.7% ➖ noise
94 duckdb:vortex-file-compressed -1.1% -2.8% +1.7% +10.7% ➖ noise
95 datafusion:vortex-compact -1.9% +2.3% -4.0% +10.7% ➖ noise
95 datafusion:vortex-file-compressed -0.5% +2.3% -2.7% +10.7% ➖ noise
95 duckdb:duckdb -9.5% +2.3% -11.5% +17.8% ➖ noise
95 duckdb:vortex-compact +0.0% +2.3% -2.2% +19.3% ➖ noise
95 duckdb:vortex-file-compressed -0.3% +2.3% -2.5% +15.2% ➖ noise
96 datafusion:vortex-compact -4.6% +4.3% -8.5% +10.7% ➖ noise
96 datafusion:vortex-file-compressed -1.9% +4.3% -6.0% +10.7% ➖ noise
96 duckdb:duckdb +2.3% +4.3% -2.0% +17.7% ➖ noise
96 duckdb:vortex-compact -5.7% +4.3% -9.6% +10.7% ➖ noise
96 duckdb:vortex-file-compressed +4.2% +4.3% -0.2% +10.7% ➖ noise
97 datafusion:vortex-compact +0.7% -3.4% +4.2% +10.7% ➖ noise
97 datafusion:vortex-file-compressed +3.6% -3.4% +7.3% +10.7% ➖ noise
97 duckdb:duckdb -0.6% -3.4% +2.9% +13.9% ➖ noise
97 duckdb:vortex-compact -11.5% -3.4% -8.3% +11.7% ➖ noise
97 duckdb:vortex-file-compressed +7.3% -3.4% +11.1% +15.6% ➖ noise
98 datafusion:vortex-compact -5.0% +4.1% -8.7% +10.7% ➖ noise
98 datafusion:vortex-file-compressed -3.7% +4.1% -7.5% +10.7% ➖ noise
98 duckdb:duckdb +2.8% +4.1% -1.2% +16.5% ➖ noise
98 duckdb:vortex-compact -1.9% +4.1% -5.8% +21.3% ➖ noise
98 duckdb:vortex-file-compressed +3.3% +4.1% -0.7% +10.7% ➖ noise
99 datafusion:vortex-compact -11.0% -3.3% -8.0% +13.2% ➖ noise
99 datafusion:vortex-file-compressed +16.0% -3.3% +19.9% +17.8% 🚨 regression
99 duckdb:duckdb +0.9% -3.3% +4.3% +22.8% ➖ noise
99 duckdb:vortex-compact -1.4% -3.3% +1.9% +10.7% ➖ noise
99 duckdb:vortex-file-compressed -2.8% -3.3% +0.5% +10.7% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: TPC-H SF=10 on NVME

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -3.0%
Vortex (geomean): 0.919x ➖
Parquet (geomean): 0.946x ➖
Shifts: Parquet (control) -5.4% · Median polish -6.8%


datafusion / vortex-file-compressed (0.904x ➖, 9↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 386683180 428285951 0.90
tpch_q02/datafusion:vortex-file-compressed 104998622 112500279 0.93
tpch_q03/datafusion:vortex-file-compressed 212664170 235000647 0.90
tpch_q04/datafusion:vortex-file-compressed 113067915 120650888 0.94
tpch_q05/datafusion:vortex-file-compressed 🚀 369944557 420136846 0.88
tpch_q06/datafusion:vortex-file-compressed 42639161 47261304 0.90
tpch_q07/datafusion:vortex-file-compressed 🚀 493962360 566775581 0.87
tpch_q08/datafusion:vortex-file-compressed 353017348 383538045 0.92
tpch_q09/datafusion:vortex-file-compressed 622135828 681885545 0.91
tpch_q10/datafusion:vortex-file-compressed 🚀 226988505 254149490 0.89
tpch_q11/datafusion:vortex-file-compressed 78708362 85746983 0.92
tpch_q12/datafusion:vortex-file-compressed 🚀 117827001 131344925 0.90
tpch_q13/datafusion:vortex-file-compressed 🚀 205339706 232003687 0.89
tpch_q14/datafusion:vortex-file-compressed 🚀 54935332 62467095 0.88
tpch_q15/datafusion:vortex-file-compressed 🚀 104480932 120911032 0.86
tpch_q16/datafusion:vortex-file-compressed 🚀 73443780 85549329 0.86
tpch_q17/datafusion:vortex-file-compressed 632066649 692681709 0.91
tpch_q18/datafusion:vortex-file-compressed 832313695 911164169 0.91
tpch_q19/datafusion:vortex-file-compressed 92602881 95548947 0.97
tpch_q20/datafusion:vortex-file-compressed 161167231 173188011 0.93
tpch_q21/datafusion:vortex-file-compressed 🚀 642242391 734585486 0.87
tpch_q22/datafusion:vortex-file-compressed 64211754 68496485 0.94
datafusion / vortex-compact (0.908x ➖, 6↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 437825047 479651317 0.91
tpch_q02/datafusion:vortex-compact 105940873 117296698 0.90
tpch_q03/datafusion:vortex-compact 209658462 230788968 0.91
tpch_q04/datafusion:vortex-compact 117816327 124269018 0.95
tpch_q05/datafusion:vortex-compact 372187934 408258338 0.91
tpch_q06/datafusion:vortex-compact 62564372 67370207 0.93
tpch_q07/datafusion:vortex-compact 🚀 510543967 579670914 0.88
tpch_q08/datafusion:vortex-compact 🚀 350246127 403133031 0.87
tpch_q09/datafusion:vortex-compact 🚀 620174058 696708528 0.89
tpch_q10/datafusion:vortex-compact 242450830 264492483 0.92
tpch_q11/datafusion:vortex-compact 81486066 89756760 0.91
tpch_q12/datafusion:vortex-compact 157821009 172432427 0.92
tpch_q13/datafusion:vortex-compact 259619955 283240988 0.92
tpch_q14/datafusion:vortex-compact 72221924 75907181 0.95
tpch_q15/datafusion:vortex-compact 158244292 170153187 0.93
tpch_q16/datafusion:vortex-compact 77855496 86320400 0.90
tpch_q17/datafusion:vortex-compact 646369382 675722439 0.96
tpch_q18/datafusion:vortex-compact 826019939 912881515 0.90
tpch_q19/datafusion:vortex-compact 🚀 130667230 149337183 0.87
tpch_q20/datafusion:vortex-compact 🚀 182731275 214170181 0.85
tpch_q21/datafusion:vortex-compact 🚀 646933026 743425448 0.87
tpch_q22/datafusion:vortex-compact 71416157 76314387 0.94
datafusion / parquet (0.923x ➖, 6↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 440127464 476636053 0.92
tpch_q02/datafusion:parquet 167849225 181143665 0.93
tpch_q03/datafusion:parquet 273872461 290406834 0.94
tpch_q04/datafusion:parquet 123222228 128564094 0.96
tpch_q05/datafusion:parquet 🚀 419803765 472741508 0.89
tpch_q06/datafusion:parquet 122715966 129380548 0.95
tpch_q07/datafusion:parquet 590076217 636090405 0.93
tpch_q08/datafusion:parquet 447230983 489639260 0.91
tpch_q09/datafusion:parquet 721818805 799704800 0.90
tpch_q10/datafusion:parquet 485950783 517374757 0.94
tpch_q11/datafusion:parquet 115240551 120837709 0.95
tpch_q12/datafusion:parquet 198041017 199133503 0.99
tpch_q13/datafusion:parquet 325022499 341222697 0.95
tpch_q14/datafusion:parquet 154072693 164633663 0.94
tpch_q15/datafusion:parquet 241606792 259260574 0.93
tpch_q16/datafusion:parquet 🚀 121339773 136826534 0.89
tpch_q17/datafusion:parquet 661148854 726154248 0.91
tpch_q18/datafusion:parquet 🚀 853378708 954662323 0.89
tpch_q19/datafusion:parquet 🚀 248170989 277547028 0.89
tpch_q20/datafusion:parquet 🚀 282261679 322187394 0.88
tpch_q21/datafusion:parquet 🚀 680348181 780938800 0.87
tpch_q22/datafusion:parquet 214302140 225051016 0.95
datafusion / arrow (0.884x ✅, 16↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 🚀 580951203 645672950 0.90
tpch_q02/datafusion:arrow 163656977 179656944 0.91
tpch_q03/datafusion:arrow 🚀 457513948 527959796 0.87
tpch_q04/datafusion:arrow 🚀 336178402 385474688 0.87
tpch_q05/datafusion:arrow 🚀 923369411 1033583123 0.89
tpch_q06/datafusion:arrow 🚀 277458745 327860744 0.85
tpch_q07/datafusion:arrow 🚀 1124089532 1290295809 0.87
tpch_q08/datafusion:arrow 🚀 1114581224 1245812055 0.89
tpch_q09/datafusion:arrow 1323539233 1463994551 0.90
tpch_q10/datafusion:arrow 🚀 579066697 669210345 0.87
tpch_q11/datafusion:arrow 136836684 147712397 0.93
tpch_q12/datafusion:arrow 🚀 686638818 851523919 0.81
tpch_q13/datafusion:arrow 509498720 540723968 0.94
tpch_q14/datafusion:arrow 🚀 307493464 378680649 0.81
tpch_q15/datafusion:arrow 🚀 671790554 810871870 0.83
tpch_q16/datafusion:arrow 104194872 110143604 0.95
tpch_q17/datafusion:arrow 🚀 1292116926 1482479454 0.87
tpch_q18/datafusion:arrow 🚀 1856076124 2064683699 0.90
tpch_q19/datafusion:arrow 🚀 475809347 537622496 0.89
tpch_q20/datafusion:arrow 🚀 472259092 531108306 0.89
tpch_q21/datafusion:arrow 2951901102 3147449011 0.94
tpch_q22/datafusion:arrow 🚀 128441761 142944218 0.90
duckdb / vortex-file-compressed (0.927x ➖, 4↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 171006921 177239269 0.96
tpch_q02/duckdb:vortex-file-compressed 49926694 52051175 0.96
tpch_q03/duckdb:vortex-file-compressed 120299556 131034801 0.92
tpch_q04/duckdb:vortex-file-compressed 148521102 162633995 0.91
tpch_q05/duckdb:vortex-file-compressed 124562966 137805739 0.90
tpch_q06/duckdb:vortex-file-compressed 45205752 49800916 0.91
tpch_q07/duckdb:vortex-file-compressed 142559961 149393084 0.95
tpch_q08/duckdb:vortex-file-compressed 🚀 167119626 188685046 0.89
tpch_q09/duckdb:vortex-file-compressed 323012528 347434010 0.93
tpch_q10/duckdb:vortex-file-compressed 🚀 142677085 159056136 0.90
tpch_q11/duckdb:vortex-file-compressed 32899846 35858856 0.92
tpch_q12/duckdb:vortex-file-compressed 🚀 92504086 105520176 0.88
tpch_q13/duckdb:vortex-file-compressed 🚀 223314085 250479471 0.89
tpch_q14/duckdb:vortex-file-compressed 67083641 69164616 0.97
tpch_q15/duckdb:vortex-file-compressed 85801481 94872539 0.90
tpch_q16/duckdb:vortex-file-compressed 77450869 82619402 0.94
tpch_q17/duckdb:vortex-file-compressed 96836295 101387770 0.96
tpch_q18/duckdb:vortex-file-compressed 286638612 294574545 0.97
tpch_q19/duckdb:vortex-file-compressed 82948303 87173022 0.95
tpch_q20/duckdb:vortex-file-compressed 156078095 168839415 0.92
tpch_q21/duckdb:vortex-file-compressed 558109237 615062070 0.91
tpch_q22/duckdb:vortex-file-compressed 71865035 74620851 0.96
duckdb / vortex-compact (0.937x ➖, 3↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 226806727 241683818 0.94
tpch_q02/duckdb:vortex-compact 56069254 57179938 0.98
tpch_q03/duckdb:vortex-compact 139295521 147356825 0.95
tpch_q04/duckdb:vortex-compact 170439768 180069040 0.95
tpch_q05/duckdb:vortex-compact 142166840 155042233 0.92
tpch_q06/duckdb:vortex-compact 🚀 81354595 90460076 0.90
tpch_q07/duckdb:vortex-compact 195044724 210514773 0.93
tpch_q08/duckdb:vortex-compact 184748330 199670970 0.93
tpch_q09/duckdb:vortex-compact 343895925 368516991 0.93
tpch_q10/duckdb:vortex-compact 172898987 184757392 0.94
tpch_q11/duckdb:vortex-compact 40444702 40553820 1.00
tpch_q12/duckdb:vortex-compact 199823724 204994971 0.97
tpch_q13/duckdb:vortex-compact 275543327 295928348 0.93
tpch_q14/duckdb:vortex-compact 99401758 103502116 0.96
tpch_q15/duckdb:vortex-compact 🚀 112194456 125510614 0.89
tpch_q16/duckdb:vortex-compact 82202108 87230885 0.94
tpch_q17/duckdb:vortex-compact 110637348 121344062 0.91
tpch_q18/duckdb:vortex-compact 287727412 301735181 0.95
tpch_q19/duckdb:vortex-compact 106945738 110332372 0.97
tpch_q20/duckdb:vortex-compact 🚀 194550510 220198156 0.88
tpch_q21/duckdb:vortex-compact 603029244 655598606 0.92
tpch_q22/duckdb:vortex-compact 83164399 88334325 0.94
duckdb / parquet (0.970x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 255544434 267516732 0.96
tpch_q02/duckdb:parquet 99291365 102889731 0.97
tpch_q03/duckdb:parquet 208877228 215818894 0.97
tpch_q04/duckdb:parquet 130827234 133792630 0.98
tpch_q05/duckdb:parquet 211445414 219634618 0.96
tpch_q06/duckdb:parquet 66788445 66621277 1.00
tpch_q07/duckdb:parquet 175785504 185007806 0.95
tpch_q08/duckdb:parquet 247423242 260446388 0.95
tpch_q09/duckdb:parquet 490048385 488867971 1.00
tpch_q10/duckdb:parquet 603836566 638511206 0.95
tpch_q11/duckdb:parquet 58631969 55179898 1.06
tpch_q12/duckdb:parquet 123820047 128983535 0.96
tpch_q13/duckdb:parquet 444371182 462839357 0.96
tpch_q14/duckdb:parquet 173752058 181343398 0.96
tpch_q15/duckdb:parquet 94764780 101274533 0.94
tpch_q16/duckdb:parquet 162290009 167620644 0.97
tpch_q17/duckdb:parquet 178063700 178019637 1.00
tpch_q18/duckdb:parquet 352856936 369521079 0.95
tpch_q19/duckdb:parquet 275848000 290710421 0.95
tpch_q20/duckdb:parquet 227057714 233755623 0.97
tpch_q21/duckdb:parquet 555446494 579005299 0.96
tpch_q22/duckdb:parquet 292432966 296733179 0.99
duckdb / duckdb (0.949x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 116670515 122146718 0.96
tpch_q02/duckdb:duckdb 45838651 50305325 0.91
tpch_q03/duckdb:duckdb 98306883 100080165 0.98
tpch_q04/duckdb:duckdb 131381182 140889223 0.93
tpch_q05/duckdb:duckdb 108283783 116667954 0.93
tpch_q06/duckdb:duckdb 37430243 39247627 0.95
tpch_q07/duckdb:duckdb 86219357 92515750 0.93
tpch_q08/duckdb:duckdb 109904781 119020084 0.92
tpch_q09/duckdb:duckdb 275637538 291023619 0.95
tpch_q10/duckdb:duckdb 203799962 213077066 0.96
tpch_q11/duckdb:duckdb 15478926 15755276 0.98
tpch_q12/duckdb:duckdb 84018305 87680196 0.96
tpch_q13/duckdb:duckdb 220844535 228838745 0.97
tpch_q14/duckdb:duckdb 70092653 74021961 0.95
tpch_q15/duckdb:duckdb 76853490 79200861 0.97
tpch_q16/duckdb:duckdb 73188821 77026203 0.95
tpch_q17/duckdb:duckdb 84774172 86321279 0.98
tpch_q18/duckdb:duckdb 211188929 225918168 0.93
tpch_q19/duckdb:duckdb 115785450 121952975 0.95
tpch_q20/duckdb:duckdb 111859170 116535056 0.96
tpch_q21/duckdb:duckdb 289167354 316684048 0.91
tpch_q22/duckdb:duckdb 66960181 71311129 0.94
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow -10.0% -6.1% -4.2% +10.0% ➖ noise
1 datafusion:vortex-compact -8.7% -6.1% -2.8% +10.0% ➖ noise
1 datafusion:vortex-file-compressed -9.7% -6.1% -3.9% +10.0% ➖ noise
1 duckdb:duckdb -4.5% -6.1% +1.7% +10.0% ➖ noise
1 duckdb:vortex-compact -6.2% -6.1% -0.1% +10.0% ➖ noise
1 duckdb:vortex-file-compressed -3.5% -6.1% +2.7% +10.0% ➖ noise
2 datafusion:arrow -8.9% -5.4% -3.7% +10.0% ➖ noise
2 datafusion:vortex-compact -9.7% -5.4% -4.5% +10.0% ➖ noise
2 datafusion:vortex-file-compressed -6.7% -5.4% -1.3% +10.0% ➖ noise
2 duckdb:duckdb -8.9% -5.4% -3.6% +10.0% ➖ noise
2 duckdb:vortex-compact -1.9% -5.4% +3.7% +10.0% ➖ noise
2 duckdb:vortex-file-compressed -4.1% -5.4% +1.4% +10.0% ➖ noise
3 datafusion:arrow -13.3% -4.5% -9.3% +10.0% ✅ faster
3 datafusion:vortex-compact -9.2% -4.5% -4.9% +10.0% ➖ noise
3 datafusion:vortex-file-compressed -9.5% -4.5% -5.3% +10.0% ➖ noise
3 duckdb:duckdb -1.8% -4.5% +2.8% +10.0% ➖ noise
3 duckdb:vortex-compact -5.5% -4.5% -1.1% +10.0% ➖ noise
3 duckdb:vortex-file-compressed -8.2% -4.5% -3.9% +10.0% ➖ noise
4 datafusion:arrow -12.8% -3.2% -9.9% +10.0% ✅ faster
4 datafusion:vortex-compact -5.2% -3.2% -2.1% +10.0% ➖ noise
4 datafusion:vortex-file-compressed -6.3% -3.2% -3.2% +10.0% ➖ noise
4 duckdb:duckdb -6.7% -3.2% -3.7% +10.0% ➖ noise
4 duckdb:vortex-compact -5.3% -3.2% -2.2% +10.0% ➖ noise
4 duckdb:vortex-file-compressed -8.7% -3.2% -5.7% +10.0% ➖ noise
5 datafusion:arrow -10.7% -7.5% -3.4% +10.0% ➖ noise
5 datafusion:vortex-compact -8.8% -7.5% -1.4% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -11.9% -7.5% -4.8% +10.0% ➖ noise
5 duckdb:duckdb -7.2% -7.5% +0.4% +10.0% ➖ noise
5 duckdb:vortex-compact -8.3% -7.5% -0.8% +10.0% ➖ noise
5 duckdb:vortex-file-compressed -9.6% -7.5% -2.2% +10.0% ➖ noise
6 datafusion:arrow -15.4% -2.5% -13.2% +10.0% ✅ faster
6 datafusion:vortex-compact -7.1% -2.5% -4.8% +10.0% ➖ noise
6 datafusion:vortex-file-compressed -9.8% -2.5% -7.5% +10.0% ➖ noise
6 duckdb:duckdb -4.6% -2.5% -2.2% +10.0% ➖ noise
6 duckdb:vortex-compact -10.1% -2.5% -7.8% +10.0% ➖ noise
6 duckdb:vortex-file-compressed -9.2% -2.5% -6.9% +11.2% ➖ noise
7 datafusion:arrow -12.9% -6.1% -7.2% +10.0% ➖ noise
7 datafusion:vortex-compact -11.9% -6.1% -6.2% +10.0% ➖ noise
7 datafusion:vortex-file-compressed -12.8% -6.1% -7.2% +10.0% ➖ noise
7 duckdb:duckdb -6.8% -6.1% -0.7% +10.0% ➖ noise
7 duckdb:vortex-compact -7.3% -6.1% -1.3% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -4.6% -6.1% +1.6% +10.0% ➖ noise
8 datafusion:arrow -10.5% -6.8% -4.0% +10.0% ➖ noise
8 datafusion:vortex-compact -13.1% -6.8% -6.7% +10.0% ➖ noise
8 datafusion:vortex-file-compressed -8.0% -6.8% -1.2% +10.0% ➖ noise
8 duckdb:duckdb -7.7% -6.8% -0.9% +10.0% ➖ noise
8 duckdb:vortex-compact -7.5% -6.8% -0.7% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -11.4% -6.8% -4.9% +10.0% ➖ noise
9 datafusion:arrow -9.6% -4.9% -5.0% +10.0% ➖ noise
9 datafusion:vortex-compact -11.0% -4.9% -6.4% +10.0% ➖ noise
9 datafusion:vortex-file-compressed -8.8% -4.9% -4.1% +10.0% ➖ noise
9 duckdb:duckdb -5.3% -4.9% -0.4% +10.0% ➖ noise
9 duckdb:vortex-compact -6.7% -4.9% -1.9% +10.0% ➖ noise
9 duckdb:vortex-file-compressed -7.0% -4.9% -2.3% +10.0% ➖ noise
10 datafusion:arrow -13.5% -5.8% -8.2% +10.0% ➖ noise
10 datafusion:vortex-compact -8.3% -5.8% -2.7% +10.0% ➖ noise
10 datafusion:vortex-file-compressed -10.7% -5.8% -5.2% +10.0% ➖ noise
10 duckdb:duckdb -4.4% -5.8% +1.5% +10.0% ➖ noise
10 duckdb:vortex-compact -6.4% -5.8% -0.7% +10.0% ➖ noise
10 duckdb:vortex-file-compressed -10.3% -5.8% -4.8% +10.0% ➖ noise
11 datafusion:arrow -7.4% +0.7% -8.0% +10.0% ➖ noise
11 datafusion:vortex-compact -9.2% +0.7% -9.8% +10.0% ✅ faster
11 datafusion:vortex-file-compressed -8.2% +0.7% -8.8% +10.0% ➖ noise
11 duckdb:duckdb -1.8% +0.7% -2.4% +10.6% ➖ noise
11 duckdb:vortex-compact -0.3% +0.7% -0.9% +10.0% ➖ noise
11 duckdb:vortex-file-compressed -8.3% +0.7% -8.9% +11.0% ➖ noise
12 datafusion:arrow -19.4% -2.3% -17.5% +34.2% ➖ noise
12 datafusion:vortex-compact -8.5% -2.3% -6.3% +10.0% ➖ noise
12 datafusion:vortex-file-compressed -10.3% -2.3% -8.2% +10.0% ➖ noise
12 duckdb:duckdb -4.2% -2.3% -1.9% +10.0% ➖ noise
12 duckdb:vortex-compact -2.5% -2.3% -0.2% +10.0% ➖ noise
12 duckdb:vortex-file-compressed -12.3% -2.3% -10.3% +10.0% ✅ faster
13 datafusion:arrow -5.8% -4.4% -1.5% +10.0% ➖ noise
13 datafusion:vortex-compact -8.3% -4.4% -4.2% +10.0% ➖ noise
13 datafusion:vortex-file-compressed -11.5% -4.4% -7.4% +10.0% ➖ noise
13 duckdb:duckdb -3.5% -4.4% +0.9% +10.0% ➖ noise
13 duckdb:vortex-compact -6.9% -4.4% -2.6% +10.0% ➖ noise
13 duckdb:vortex-file-compressed -10.8% -4.4% -6.8% +10.0% ➖ noise
14 datafusion:arrow -18.8% -5.3% -14.2% +10.0% ✅ faster
14 datafusion:vortex-compact -4.9% -5.3% +0.5% +10.0% ➖ noise
14 datafusion:vortex-file-compressed -12.1% -5.3% -7.1% +10.0% ➖ noise
14 duckdb:duckdb -5.3% -5.3% -0.0% +10.0% ➖ noise
14 duckdb:vortex-compact -4.0% -5.3% +1.4% +10.0% ➖ noise
14 duckdb:vortex-file-compressed -3.0% -5.3% +2.4% +10.0% ➖ noise
15 datafusion:arrow -17.2% -6.6% -11.3% +10.0% ✅ faster
15 datafusion:vortex-compact -7.0% -6.6% -0.4% +10.0% ➖ noise
15 datafusion:vortex-file-compressed -13.6% -6.6% -7.5% +10.0% ➖ noise
15 duckdb:duckdb -3.0% -6.6% +3.9% +10.0% ➖ noise
15 duckdb:vortex-compact -10.6% -6.6% -4.3% +10.0% ➖ noise
15 duckdb:vortex-file-compressed -9.6% -6.6% -3.2% +10.0% ➖ noise
16 datafusion:arrow -5.4% -7.3% +2.1% +10.0% ➖ noise
16 datafusion:vortex-compact -9.8% -7.3% -2.7% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -14.2% -7.3% -7.4% +10.0% ➖ noise
16 duckdb:duckdb -5.0% -7.3% +2.5% +10.0% ➖ noise
16 duckdb:vortex-compact -5.8% -7.3% +1.7% +10.0% ➖ noise
16 duckdb:vortex-file-compressed -6.3% -7.3% +1.2% +10.0% ➖ noise
17 datafusion:arrow -12.8% -4.6% -8.7% +10.0% ➖ noise
17 datafusion:vortex-compact -4.3% -4.6% +0.2% +10.0% ➖ noise
17 datafusion:vortex-file-compressed -8.8% -4.6% -4.4% +10.0% ➖ noise
17 duckdb:duckdb -1.8% -4.6% +2.9% +10.0% ➖ noise
17 duckdb:vortex-compact -8.8% -4.6% -4.5% +10.0% ➖ noise
17 duckdb:vortex-file-compressed -4.5% -4.6% +0.1% +10.0% ➖ noise
18 datafusion:arrow -10.1% -7.6% -2.7% +10.0% ➖ noise
18 datafusion:vortex-compact -9.5% -7.6% -2.1% +10.0% ➖ noise
18 datafusion:vortex-file-compressed -8.7% -7.6% -1.1% +10.0% ➖ noise
18 duckdb:duckdb -6.5% -7.6% +1.2% +10.0% ➖ noise
18 duckdb:vortex-compact -4.6% -7.6% +3.2% +10.0% ➖ noise
18 duckdb:vortex-file-compressed -2.7% -7.6% +5.3% +10.0% ➖ noise
19 datafusion:arrow -11.5% -7.9% -3.9% +10.0% ➖ noise
19 datafusion:vortex-compact -12.5% -7.9% -5.0% +10.0% ➖ noise
19 datafusion:vortex-file-compressed -3.1% -7.9% +5.2% +10.0% ➖ noise
19 duckdb:duckdb -5.1% -7.9% +3.1% +10.0% ➖ noise
19 duckdb:vortex-compact -3.1% -7.9% +5.2% +10.0% ➖ noise
19 duckdb:vortex-file-compressed -4.8% -7.9% +3.3% +10.0% ➖ noise
20 datafusion:arrow -11.1% -7.8% -3.6% +10.0% ➖ noise
20 datafusion:vortex-compact -14.7% -7.8% -7.5% +10.0% ➖ noise
20 datafusion:vortex-file-compressed -6.9% -7.8% +0.9% +10.0% ➖ noise
20 duckdb:duckdb -4.0% -7.8% +4.1% +10.0% ➖ noise
20 duckdb:vortex-compact -11.6% -7.8% -4.2% +10.0% ➖ noise
20 duckdb:vortex-file-compressed -7.6% -7.8% +0.2% +10.0% ➖ noise
21 datafusion:arrow -6.2% -8.6% +2.6% +10.0% ➖ noise
21 datafusion:vortex-compact -13.0% -8.6% -4.8% +10.0% ➖ noise
21 datafusion:vortex-file-compressed -12.6% -8.6% -4.4% +10.0% ➖ noise
21 duckdb:duckdb -8.7% -8.6% -0.1% +10.0% ➖ noise
21 duckdb:vortex-compact -8.0% -8.6% +0.6% +10.0% ➖ noise
21 duckdb:vortex-file-compressed -9.3% -8.6% -0.7% +10.0% ➖ noise
22 datafusion:arrow -10.1% -3.1% -7.2% +10.0% ➖ noise
22 datafusion:vortex-compact -6.4% -3.1% -3.4% +10.0% ➖ noise
22 datafusion:vortex-file-compressed -6.3% -3.1% -3.2% +10.0% ➖ noise
22 duckdb:duckdb -6.1% -3.1% -3.1% +10.0% ➖ noise
22 duckdb:vortex-compact -5.9% -3.1% -2.8% +10.0% ➖ noise
22 duckdb:vortex-file-compressed -3.7% -3.1% -0.6% +10.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: Clickbench on NVME

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -2.5%
Vortex (geomean): 0.897x ✅
Parquet (geomean): 0.938x ➖
Shifts: Parquet (control) -6.2% · Median polish -7.2%


datafusion / vortex-file-compressed (0.877x ✅, 28↑ 2↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/datafusion:vortex-file-compressed 🚨 2002150 1759947 1.14
clickbench_q01/datafusion:vortex-file-compressed 🚀 17271093 19632344 0.88
clickbench_q02/datafusion:vortex-file-compressed 🚀 32942570 39676950 0.83
clickbench_q03/datafusion:vortex-file-compressed 🚀 39843194 49105396 0.81
clickbench_q04/datafusion:vortex-file-compressed 🚀 278086377 316080264 0.88
clickbench_q05/datafusion:vortex-file-compressed 312808207 343742842 0.91
clickbench_q06/datafusion:vortex-file-compressed 🚨 2813698 1872999 1.50
clickbench_q07/datafusion:vortex-file-compressed 🚀 19728721 23227238 0.85
clickbench_q08/datafusion:vortex-file-compressed 344482869 375700457 0.92
clickbench_q09/datafusion:vortex-file-compressed 🚀 539015623 623927561 0.86
clickbench_q10/datafusion:vortex-file-compressed 🚀 70466790 81802721 0.86
clickbench_q11/datafusion:vortex-file-compressed 🚀 80314621 96788796 0.83
clickbench_q12/datafusion:vortex-file-compressed 🚀 271958465 305929688 0.89
clickbench_q13/datafusion:vortex-file-compressed 🚀 402383277 472760854 0.85
clickbench_q14/datafusion:vortex-file-compressed 🚀 254213454 293053372 0.87
clickbench_q15/datafusion:vortex-file-compressed 🚀 318818300 387146637 0.82
clickbench_q16/datafusion:vortex-file-compressed 🚀 649492740 736415911 0.88
clickbench_q17/datafusion:vortex-file-compressed 🚀 639400437 749400456 0.85
clickbench_q18/datafusion:vortex-file-compressed 🚀 1289320889 1471330406 0.88
clickbench_q19/datafusion:vortex-file-compressed 🚀 26986805 33686934 0.80
clickbench_q20/datafusion:vortex-file-compressed 🚀 235190804 366027416 0.64
clickbench_q21/datafusion:vortex-file-compressed 🚀 328827850 405447111 0.81
clickbench_q22/datafusion:vortex-file-compressed 🚀 414798941 499366452 0.83
clickbench_q23/datafusion:vortex-file-compressed 🚀 489515550 766813495 0.64
clickbench_q24/datafusion:vortex-file-compressed 🚀 40893282 49887346 0.82
clickbench_q25/datafusion:vortex-file-compressed 🚀 65967224 80740819 0.82
clickbench_q26/datafusion:vortex-file-compressed 42728944 47152017 0.91
clickbench_q27/datafusion:vortex-file-compressed 🚀 644415995 732207361 0.88
clickbench_q28/datafusion:vortex-file-compressed 🚀 5762688774 6872433268 0.84
clickbench_q29/datafusion:vortex-file-compressed 🚀 217024484 253175364 0.86
clickbench_q30/datafusion:vortex-file-compressed 219885926 243221174 0.90
clickbench_q31/datafusion:vortex-file-compressed 258554484 269410306 0.96
clickbench_q32/datafusion:vortex-file-compressed 🚀 1065929401 1268114948 0.84
clickbench_q33/datafusion:vortex-file-compressed 1260974073 1373291204 0.92
clickbench_q34/datafusion:vortex-file-compressed 1242971359 1350683449 0.92
clickbench_q35/datafusion:vortex-file-compressed 444179647 477887315 0.93
clickbench_q36/datafusion:vortex-file-compressed 🚀 69090654 81544496 0.85
clickbench_q37/datafusion:vortex-file-compressed 34660537 37781319 0.92
clickbench_q38/datafusion:vortex-file-compressed 19542472 20593566 0.95
clickbench_q39/datafusion:vortex-file-compressed 131309124 145412656 0.90
clickbench_q40/datafusion:vortex-file-compressed 15788529 17162571 0.92
clickbench_q41/datafusion:vortex-file-compressed 15616408 16094117 0.97
clickbench_q42/datafusion:vortex-file-compressed 🚀 16863237 19446515 0.87
datafusion / parquet (0.923x ➖, 13↑ 1↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/datafusion:parquet 1552013 1586213 0.98
clickbench_q01/datafusion:parquet 18950821 19736440 0.96
clickbench_q02/datafusion:parquet 46188667 49205916 0.94
clickbench_q03/datafusion:parquet 36512945 39680505 0.92
clickbench_q04/datafusion:parquet 🚀 288711892 328798679 0.88
clickbench_q05/datafusion:parquet 🚀 341134419 382309655 0.89
clickbench_q06/datafusion:parquet 🚨 1755505 1577952 1.11
clickbench_q07/datafusion:parquet 22126636 22477006 0.98
clickbench_q08/datafusion:parquet 365893960 392034886 0.93
clickbench_q09/datafusion:parquet 606303381 657464447 0.92
clickbench_q10/datafusion:parquet 🚀 105176326 119222947 0.88
clickbench_q11/datafusion:parquet 🚀 127058960 142545402 0.89
clickbench_q12/datafusion:parquet 344976923 375451238 0.92
clickbench_q13/datafusion:parquet 488088581 506708447 0.96
clickbench_q14/datafusion:parquet 🚀 336361726 375969902 0.89
clickbench_q15/datafusion:parquet 🚀 335004050 377794319 0.89
clickbench_q16/datafusion:parquet 🚀 651213316 734110185 0.89
clickbench_q17/datafusion:parquet 🚀 637191374 725446911 0.88
clickbench_q18/datafusion:parquet 1323956431 1438611496 0.92
clickbench_q19/datafusion:parquet 🚀 28469198 31835423 0.89
clickbench_q20/datafusion:parquet 593125320 637285870 0.93
clickbench_q21/datafusion:parquet 649980913 713501037 0.91
clickbench_q22/datafusion:parquet 967579737 1051501896 0.92
clickbench_q23/datafusion:parquet 3591400795 3986912722 0.90
clickbench_q24/datafusion:parquet 82605049 86714520 0.95
clickbench_q25/datafusion:parquet 131111506 141162419 0.93
clickbench_q26/datafusion:parquet 81495061 86297917 0.94
clickbench_q27/datafusion:parquet 1017692474 1091487127 0.93
clickbench_q28/datafusion:parquet 6355808095 6859591418 0.93
clickbench_q29/datafusion:parquet 230902510 243911637 0.95
clickbench_q30/datafusion:parquet 322770854 346798684 0.93
clickbench_q31/datafusion:parquet 🚀 356376752 396295834 0.90
clickbench_q32/datafusion:parquet 🚀 1183270421 1391063643 0.85
clickbench_q33/datafusion:parquet 🚀 1454704650 1653263725 0.88
clickbench_q34/datafusion:parquet 🚀 1466855251 1653945997 0.89
clickbench_q35/datafusion:parquet 454305733 475607744 0.96
clickbench_q36/datafusion:parquet 135868903 150796897 0.90
clickbench_q37/datafusion:parquet 56422111 59005089 0.96
clickbench_q38/datafusion:parquet 82558573 88335773 0.93
clickbench_q39/datafusion:parquet 252869234 277324009 0.91
clickbench_q40/datafusion:parquet 30226096 32569173 0.93
clickbench_q41/datafusion:parquet 27546913 29859043 0.92
clickbench_q42/datafusion:parquet 28660204 31163090 0.92
duckdb / vortex-file-compressed (0.917x ➖, 12↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:vortex-file-compressed 6001028 6129420 0.98
clickbench_q01/duckdb:vortex-file-compressed 13164800 13815865 0.95
clickbench_q02/duckdb:vortex-file-compressed 24751443 26347858 0.94
clickbench_q03/duckdb:vortex-file-compressed 29323632 32565079 0.90
clickbench_q04/duckdb:vortex-file-compressed 177877011 194345679 0.92
clickbench_q05/duckdb:vortex-file-compressed 169956339 185811745 0.91
clickbench_q06/duckdb:vortex-file-compressed 19684985 20139347 0.98
clickbench_q07/duckdb:vortex-file-compressed 🚀 13892808 16302415 0.85
clickbench_q08/duckdb:vortex-file-compressed 253912121 261716397 0.97
clickbench_q09/duckdb:vortex-file-compressed 333269785 334689554 1.00
clickbench_q10/duckdb:vortex-file-compressed 63928469 68101689 0.94
clickbench_q11/duckdb:vortex-file-compressed 74055077 80395386 0.92
clickbench_q12/duckdb:vortex-file-compressed 187289017 206424663 0.91
clickbench_q13/duckdb:vortex-file-compressed 393244057 416377103 0.94
clickbench_q14/duckdb:vortex-file-compressed 225711680 250635730 0.90
clickbench_q15/duckdb:vortex-file-compressed 244844079 248150159 0.99
clickbench_q16/duckdb:vortex-file-compressed 581590208 598366963 0.97
clickbench_q17/duckdb:vortex-file-compressed 467583305 493426732 0.95
clickbench_q18/duckdb:vortex-file-compressed 954707726 997954663 0.96
clickbench_q19/duckdb:vortex-file-compressed 21230996 21635560 0.98
clickbench_q20/duckdb:vortex-file-compressed 🚀 287133284 380559288 0.75
clickbench_q21/duckdb:vortex-file-compressed 🚀 317359814 414053596 0.77
clickbench_q22/duckdb:vortex-file-compressed 🚀 458886898 654608184 0.70
clickbench_q23/duckdb:vortex-file-compressed 265216336 247514172 1.07
clickbench_q24/duckdb:vortex-file-compressed 37775662 35584803 1.06
clickbench_q25/duckdb:vortex-file-compressed 68467077 75212681 0.91
clickbench_q26/duckdb:vortex-file-compressed 46574080 43935405 1.06
clickbench_q27/duckdb:vortex-file-compressed 🚀 431701604 507282544 0.85
clickbench_q28/duckdb:vortex-file-compressed 2926503441 3058210341 0.96
clickbench_q29/duckdb:vortex-file-compressed 27330841 29756212 0.92
clickbench_q30/duckdb:vortex-file-compressed 188738424 204236036 0.92
clickbench_q31/duckdb:vortex-file-compressed 284750837 300521569 0.95
clickbench_q32/duckdb:vortex-file-compressed 1178062305 1253484563 0.94
clickbench_q33/duckdb:vortex-file-compressed 🚀 1097569517 1220498485 0.90
clickbench_q34/duckdb:vortex-file-compressed 1199419636 1326604567 0.90
clickbench_q35/duckdb:vortex-file-compressed 380003878 387293837 0.98
clickbench_q36/duckdb:vortex-file-compressed 🚀 26519902 30149578 0.88
clickbench_q37/duckdb:vortex-file-compressed 🚀 19732987 22098257 0.89
clickbench_q38/duckdb:vortex-file-compressed 🚀 20220780 23983667 0.84
clickbench_q39/duckdb:vortex-file-compressed 🚀 39441852 45314921 0.87
clickbench_q40/duckdb:vortex-file-compressed 🚀 19721630 23949918 0.82
clickbench_q41/duckdb:vortex-file-compressed 🚀 20320303 24847027 0.82
clickbench_q42/duckdb:vortex-file-compressed 21272801 22141451 0.96
duckdb / parquet (0.954x ➖, 1↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:parquet 25373615 26359637 0.96
clickbench_q01/duckdb:parquet 27477474 27433663 1.00
clickbench_q02/duckdb:parquet 48139464 49650039 0.97
clickbench_q03/duckdb:parquet 38099861 39461463 0.97
clickbench_q04/duckdb:parquet 198694669 218889597 0.91
clickbench_q05/duckdb:parquet 273366656 283285860 0.96
clickbench_q06/duckdb:parquet 46385103 45783540 1.01
clickbench_q07/duckdb:parquet 29646907 30394287 0.98
clickbench_q08/duckdb:parquet 264122770 270839019 0.98
clickbench_q09/duckdb:parquet 391620670 418955510 0.93
clickbench_q10/duckdb:parquet 81627744 88991690 0.92
clickbench_q11/duckdb:parquet 95383491 101877677 0.94
clickbench_q12/duckdb:parquet 287964130 298887960 0.96
clickbench_q13/duckdb:parquet 480861181 504111084 0.95
clickbench_q14/duckdb:parquet 333461912 333358889 1.00
clickbench_q15/duckdb:parquet 262697670 275270853 0.95
clickbench_q16/duckdb:parquet 643705481 698828176 0.92
clickbench_q17/duckdb:parquet 537807432 562804974 0.96
clickbench_q18/duckdb:parquet 1056126434 1150127100 0.92
clickbench_q19/duckdb:parquet 24995746 26367103 0.95
clickbench_q20/duckdb:parquet 423443752 440577064 0.96
clickbench_q21/duckdb:parquet 543333039 578441855 0.94
clickbench_q22/duckdb:parquet 927567716 1002419251 0.93
clickbench_q23/duckdb:parquet 302752365 318374806 0.95
clickbench_q24/duckdb:parquet 66620381 72378100 0.92
clickbench_q25/duckdb:parquet 155797151 166138441 0.94
clickbench_q26/duckdb:parquet 49251871 51085850 0.96
clickbench_q27/duckdb:parquet 644312964 707003811 0.91
clickbench_q28/duckdb:parquet 4819942667 5224337367 0.92
clickbench_q29/duckdb:parquet 40647074 44269928 0.92
clickbench_q30/duckdb:parquet 299448644 329760620 0.91
clickbench_q31/duckdb:parquet 363544222 395863669 0.92
clickbench_q32/duckdb:parquet 1225250138 1260046279 0.97
clickbench_q33/duckdb:parquet 🚀 1249648495 1404761995 0.89
clickbench_q34/duckdb:parquet 1344843850 1371663523 0.98
clickbench_q35/duckdb:parquet 360960555 372856665 0.97
clickbench_q36/duckdb:parquet 45569790 48750301 0.93
clickbench_q37/duckdb:parquet 32123172 31100966 1.03
clickbench_q38/duckdb:parquet 32150050 34587884 0.93
clickbench_q39/duckdb:parquet 86569041 81484493 1.06
clickbench_q40/duckdb:parquet 18505570 17865491 1.04
clickbench_q41/duckdb:parquet 18341996 19383405 0.95
clickbench_q42/duckdb:parquet 21261630 21602643 0.98
duckdb / duckdb (0.950x ➖, 4↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:duckdb 17569411 17520645 1.00
clickbench_q01/duckdb:duckdb 32895051 33016363 1.00
clickbench_q02/duckdb:duckdb 44304370 46016724 0.96
clickbench_q03/duckdb:duckdb 45950689 46152539 1.00
clickbench_q04/duckdb:duckdb 189561165 199601141 0.95
clickbench_q05/duckdb:duckdb 264681949 279124441 0.95
clickbench_q06/duckdb:duckdb 🚀 28051403 37040638 0.76
clickbench_q07/duckdb:duckdb 34602407 36203779 0.96
clickbench_q08/duckdb:duckdb 249164277 261627887 0.95
clickbench_q09/duckdb:duckdb 367993855 376778458 0.98
clickbench_q10/duckdb:duckdb 96196686 101839215 0.94
clickbench_q11/duckdb:duckdb 107813458 112145097 0.96
clickbench_q12/duckdb:duckdb 237683315 257326529 0.92
clickbench_q13/duckdb:duckdb 474805146 499600812 0.95
clickbench_q14/duckdb:duckdb 272778337 281130228 0.97
clickbench_q15/duckdb:duckdb 217743366 230412214 0.95
clickbench_q16/duckdb:duckdb 625877672 685357632 0.91
clickbench_q17/duckdb:duckdb 545848350 569846728 0.96
clickbench_q18/duckdb:duckdb 1175824079 1226964359 0.96
clickbench_q19/duckdb:duckdb 34283634 34720837 0.99
clickbench_q20/duckdb:duckdb 957189433 945138135 1.01
clickbench_q21/duckdb:duckdb 1045499756 969455828 1.08
clickbench_q22/duckdb:duckdb 1052781065 1081615428 0.97
clickbench_q23/duckdb:duckdb 259249254 267438598 0.97
clickbench_q24/duckdb:duckdb 60607785 62887469 0.96
clickbench_q25/duckdb:duckdb 142227749 152319623 0.93
clickbench_q26/duckdb:duckdb 60489038 63006171 0.96
clickbench_q27/duckdb:duckdb 1055016410 1096637619 0.96
clickbench_q28/duckdb:duckdb 4584043515 4880227889 0.94
clickbench_q29/duckdb:duckdb 47462408 48738847 0.97
clickbench_q30/duckdb:duckdb 258663254 268864945 0.96
clickbench_q31/duckdb:duckdb 414350940 440851912 0.94
clickbench_q32/duckdb:duckdb 1396274734 1548064813 0.90
clickbench_q33/duckdb:duckdb 🚀 1846693714 2096056161 0.88
clickbench_q34/duckdb:duckdb 2032908157 2228335360 0.91
clickbench_q35/duckdb:duckdb 281213007 290082422 0.97
clickbench_q36/duckdb:duckdb 🚀 37635239 42725168 0.88
clickbench_q37/duckdb:duckdb 30810877 30430793 1.01
clickbench_q38/duckdb:duckdb 30853874 32682298 0.94
clickbench_q39/duckdb:duckdb 🚀 61932504 76626744 0.81
clickbench_q40/duckdb:duckdb 31034299 31506403 0.99
clickbench_q41/duckdb:duckdb 29661465 30707744 0.97
clickbench_q42/duckdb:duckdb 31046144 31692602 0.98
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-file-compressed +13.8% -3.0% +17.2% +757.0% ➖ noise
0 duckdb:duckdb +0.3% -3.0% +3.3% +291.2% ➖ noise
0 duckdb:vortex-file-compressed -2.1% -3.0% +0.9% +490.2% ➖ noise
1 datafusion:vortex-file-compressed -12.0% -1.9% -10.3% +24.2% ➖ noise
1 duckdb:duckdb -0.4% -1.9% +1.6% +60.5% ➖ noise
1 duckdb:vortex-file-compressed -4.7% -1.9% -2.8% +25.6% ➖ noise
2 datafusion:vortex-file-compressed -17.0% -4.6% -13.0% +18.6% ➖ noise
2 duckdb:duckdb -3.7% -4.6% +0.9% +20.9% ➖ noise
2 duckdb:vortex-file-compressed -6.1% -4.6% -1.5% +13.1% ➖ noise
3 datafusion:vortex-file-compressed -18.9% -5.7% -13.9% +139.7% ➖ noise
3 duckdb:duckdb -0.4% -5.7% +5.6% +44.5% ➖ noise
3 duckdb:vortex-file-compressed -10.0% -5.7% -4.5% +53.5% ➖ noise
4 datafusion:vortex-file-compressed -12.0% -10.7% -1.5% +10.0% ➖ noise
4 duckdb:duckdb -5.0% -10.7% +6.4% +10.0% ➖ noise
4 duckdb:vortex-file-compressed -8.5% -10.7% +2.5% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -9.0% -7.2% -1.9% +10.0% ➖ noise
5 duckdb:duckdb -5.2% -7.2% +2.2% +10.0% ➖ noise
5 duckdb:vortex-file-compressed -8.5% -7.2% -1.4% +10.0% ➖ noise
6 datafusion:vortex-file-compressed +50.2% +6.2% +41.5% +64.2% ➖ noise
6 duckdb:duckdb -24.3% +6.2% -28.7% +58.4% ➖ noise
6 duckdb:vortex-file-compressed -2.3% +6.2% -7.9% +50.5% ➖ noise
7 datafusion:vortex-file-compressed -15.1% -2.0% -13.3% +10.0% ✅ faster
7 duckdb:duckdb -4.4% -2.0% -2.5% +10.4% ➖ noise
7 duckdb:vortex-file-compressed -14.8% -2.0% -13.0% +13.4% ✅ faster
8 datafusion:vortex-file-compressed -8.3% -4.6% -3.9% +10.0% ➖ noise
8 duckdb:duckdb -4.8% -4.6% -0.2% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -3.0% -4.6% +1.7% +10.0% ➖ noise
9 datafusion:vortex-file-compressed -13.6% -7.2% -7.0% +10.0% ➖ noise
9 duckdb:duckdb -2.3% -7.2% +5.2% +10.0% ➖ noise
9 duckdb:vortex-file-compressed -0.4% -7.2% +7.2% +10.0% ➖ noise
10 datafusion:vortex-file-compressed -13.9% -10.0% -4.2% +10.0% ➖ noise
10 duckdb:duckdb -5.5% -10.0% +5.0% +10.0% ➖ noise
10 duckdb:vortex-file-compressed -6.1% -10.0% +4.4% +10.0% ➖ noise
11 datafusion:vortex-file-compressed -17.0% -8.6% -9.2% +10.0% ✅ faster
11 duckdb:duckdb -3.9% -8.6% +5.2% +10.0% ➖ noise
11 duckdb:vortex-file-compressed -7.9% -8.6% +0.8% +10.0% ➖ noise
12 datafusion:vortex-file-compressed -11.1% -5.9% -5.5% +10.0% ➖ noise
12 duckdb:duckdb -7.6% -5.9% -1.8% +10.0% ➖ noise
12 duckdb:vortex-file-compressed -9.3% -5.9% -3.6% +10.0% ➖ noise
13 datafusion:vortex-file-compressed -14.9% -4.1% -11.2% +10.0% ✅ faster
13 duckdb:duckdb -5.0% -4.1% -0.9% +10.0% ➖ noise
13 duckdb:vortex-file-compressed -5.6% -4.1% -1.5% +10.0% ➖ noise
14 datafusion:vortex-file-compressed -13.3% -5.4% -8.3% +10.0% ➖ noise
14 duckdb:duckdb -3.0% -5.4% +2.6% +10.0% ➖ noise
14 duckdb:vortex-file-compressed -9.9% -5.4% -4.8% +10.0% ➖ noise
15 datafusion:vortex-file-compressed -17.6% -8.0% -10.5% +10.0% ✅ faster
15 duckdb:duckdb -5.5% -8.0% +2.7% +10.0% ➖ noise
15 duckdb:vortex-file-compressed -1.3% -8.0% +7.3% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -11.8% -9.6% -2.4% +10.0% ➖ noise
16 duckdb:duckdb -8.7% -9.6% +1.0% +10.0% ➖ noise
16 duckdb:vortex-file-compressed -2.8% -9.6% +7.5% +10.0% ➖ noise
17 datafusion:vortex-file-compressed -14.7% -8.4% -6.9% +10.0% ➖ noise
17 duckdb:duckdb -4.2% -8.4% +4.6% +10.0% ➖ noise
17 duckdb:vortex-file-compressed -5.2% -8.4% +3.4% +10.0% ➖ noise
18 datafusion:vortex-file-compressed -12.4% -8.1% -4.7% +10.0% ➖ noise
18 duckdb:duckdb -4.2% -8.1% +4.2% +10.0% ➖ noise
18 duckdb:vortex-file-compressed -4.3% -8.1% +4.1% +10.0% ➖ noise
19 datafusion:vortex-file-compressed -19.9% -7.9% -13.0% +28.3% ➖ noise
19 duckdb:duckdb -1.3% -7.9% +7.2% +16.4% ➖ noise
19 duckdb:vortex-file-compressed -1.9% -7.9% +6.6% +15.9% ➖ noise
20 datafusion:vortex-file-compressed -35.7% -5.4% -32.1% +181.5% ➖ noise
20 duckdb:duckdb +1.3% -5.4% +7.1% +25.7% ➖ noise
20 duckdb:vortex-file-compressed -24.5% -5.4% -20.2% +50.6% ➖ noise
21 datafusion:vortex-file-compressed -18.9% -7.5% -12.3% +10.0% ✅ faster
21 duckdb:duckdb +7.8% -7.5% +16.6% +12.3% 🚨 regression
21 duckdb:vortex-file-compressed -23.4% -7.5% -17.1% +10.0% ✅ faster
22 datafusion:vortex-file-compressed -16.9% -7.7% -10.0% +10.1% ✅ faster
22 duckdb:duckdb -2.7% -7.7% +5.5% +11.4% ➖ noise
22 duckdb:vortex-file-compressed -29.9% -7.7% -24.0% +20.7% ✅ faster
23 datafusion:vortex-file-compressed -36.2% -7.4% -31.0% +38.0% ✅ faster
23 duckdb:duckdb -3.1% -7.4% +4.7% +10.0% ➖ noise
23 duckdb:vortex-file-compressed +7.2% -7.4% +15.8% +13.1% 🚨 regression
24 datafusion:vortex-file-compressed -18.0% -6.4% -12.5% +14.6% ➖ noise
24 duckdb:duckdb -3.6% -6.4% +2.9% +10.9% ➖ noise
24 duckdb:vortex-file-compressed +6.2% -6.4% +13.4% +26.7% ➖ noise
25 datafusion:vortex-file-compressed -18.3% -6.7% -12.5% +10.0% ✅ faster
25 duckdb:duckdb -6.6% -6.7% +0.1% +10.0% ➖ noise
25 duckdb:vortex-file-compressed -9.0% -6.7% -2.5% +10.0% ➖ noise
26 datafusion:vortex-file-compressed -9.4% -4.6% -5.0% +10.0% ➖ noise
26 duckdb:duckdb -4.0% -4.6% +0.6% +13.6% ➖ noise
26 duckdb:vortex-file-compressed +6.0% -4.6% +11.1% +27.5% ➖ noise
27 datafusion:vortex-file-compressed -12.0% -7.8% -4.5% +10.0% ➖ noise
27 duckdb:duckdb -3.8% -7.8% +4.4% +10.0% ➖ noise
27 duckdb:vortex-file-compressed -14.9% -7.8% -7.7% +10.0% ➖ noise
28 datafusion:vortex-file-compressed -16.1% -7.5% -9.3% +10.0% ✅ faster
28 duckdb:duckdb -6.1% -7.5% +1.6% +10.0% ➖ noise
28 duckdb:vortex-file-compressed -4.3% -7.5% +3.5% +10.0% ➖ noise
29 datafusion:vortex-file-compressed -14.3% -6.8% -8.1% +10.0% ➖ noise
29 duckdb:duckdb -2.6% -6.8% +4.5% +10.0% ➖ noise
29 duckdb:vortex-file-compressed -8.2% -6.8% -1.5% +23.9% ➖ noise
30 datafusion:vortex-file-compressed -9.6% -8.1% -1.7% +10.0% ➖ noise
30 duckdb:duckdb -3.8% -8.1% +4.6% +10.0% ➖ noise
30 duckdb:vortex-file-compressed -7.6% -8.1% +0.5% +10.0% ➖ noise
31 datafusion:vortex-file-compressed -4.0% -9.1% +5.6% +10.0% ➖ noise
31 duckdb:duckdb -6.0% -9.1% +3.4% +10.0% ➖ noise
31 duckdb:vortex-file-compressed -5.2% -9.1% +4.3% +10.0% ➖ noise
32 datafusion:vortex-file-compressed -15.9% -9.1% -7.6% +14.7% ➖ noise
32 duckdb:duckdb -9.8% -9.1% -0.8% +10.0% ➖ noise
32 duckdb:vortex-file-compressed -6.0% -9.1% +3.3% +10.0% ➖ noise
33 datafusion:vortex-file-compressed -8.2% -11.5% +3.8% +10.0% ➖ noise
33 duckdb:duckdb -11.9% -11.5% -0.4% +10.0% ➖ noise
33 duckdb:vortex-file-compressed -10.1% -11.5% +1.6% +10.0% ➖ noise
34 datafusion:vortex-file-compressed -8.0% -6.8% -1.3% +10.0% ➖ noise
34 duckdb:duckdb -8.8% -6.8% -2.2% +10.0% ➖ noise
34 duckdb:vortex-file-compressed -9.6% -6.8% -3.0% +10.0% ➖ noise
35 datafusion:vortex-file-compressed -7.1% -3.8% -3.3% +10.0% ➖ noise
35 duckdb:duckdb -3.1% -3.8% +0.8% +10.0% ➖ noise
35 duckdb:vortex-file-compressed -1.9% -3.8% +2.0% +10.0% ➖ noise
36 datafusion:vortex-file-compressed -15.3% -8.2% -7.7% +10.0% ➖ noise
36 duckdb:duckdb -11.9% -8.2% -4.0% +12.5% ➖ noise
36 duckdb:vortex-file-compressed -12.0% -8.2% -4.2% +10.0% ➖ noise
37 datafusion:vortex-file-compressed -8.3% -0.6% -7.7% +10.0% ➖ noise
37 duckdb:duckdb +1.2% -0.6% +1.9% +10.0% ➖ noise
37 duckdb:vortex-file-compressed -10.7% -0.6% -10.1% +10.0% ✅ faster
38 datafusion:vortex-file-compressed -5.1% -6.8% +1.8% +11.4% ➖ noise
38 duckdb:duckdb -5.6% -6.8% +1.3% +10.1% ➖ noise
38 duckdb:vortex-file-compressed -15.7% -6.8% -9.5% +10.0% ✅ faster
39 datafusion:vortex-file-compressed -9.7% -1.6% -8.3% +10.0% ➖ noise
39 duckdb:duckdb -19.2% -1.6% -17.9% +14.6% ✅ faster
39 duckdb:vortex-file-compressed -13.0% -1.6% -11.6% +11.0% ✅ faster
40 datafusion:vortex-file-compressed -8.0% -2.0% -6.2% +11.5% ➖ noise
40 duckdb:duckdb -1.5% -2.0% +0.5% +11.4% ➖ noise
40 duckdb:vortex-file-compressed -17.7% -2.0% -16.0% +22.7% ➖ noise
41 datafusion:vortex-file-compressed -3.0% -6.6% +3.9% +10.4% ➖ noise
41 duckdb:duckdb -3.4% -6.6% +3.4% +10.8% ➖ noise
41 duckdb:vortex-file-compressed -18.2% -6.6% -12.5% +12.7% ✅ faster
42 datafusion:vortex-file-compressed -13.3% -4.9% -8.9% +11.2% ➖ noise
42 duckdb:duckdb -2.0% -4.9% +3.0% +10.0% ➖ noise
42 duckdb:vortex-file-compressed -3.9% -4.9% +1.0% +14.3% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: PolarSignals Profiling

Vortex (geomean): 1.006x ➖


datafusion / vortex-file-compressed (1.006x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
polarsignals_q00/datafusion:vortex-file-compressed 120924743 127746068 0.95
polarsignals_q01/datafusion:vortex-file-compressed 259953445 286177668 0.91
polarsignals_q02/datafusion:vortex-file-compressed 23776932 23786374 1.00
polarsignals_q03/datafusion:vortex-file-compressed 294755020 267996370 1.10
polarsignals_q04/datafusion:vortex-file-compressed 11663049 11484731 1.02
polarsignals_q05/datafusion:vortex-file-compressed 15253497 14918089 1.02
polarsignals_q06/datafusion:vortex-file-compressed 18943849 18139996 1.04
polarsignals_q07/datafusion:vortex-file-compressed 14852811 13957453 1.06
polarsignals_q08/datafusion:vortex-file-compressed 412276979 409324708 1.01
polarsignals_q09/datafusion:vortex-file-compressed 10690696 11079304 0.96

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: PolarSignals Profiling

File Size Changes (1 files changed, +0.1% overall, 1↑ 0↓)
File Scale Format Base HEAD Change %
stacktraces.vortex 1000000 vortex-file-compressed 689.41 MB 689.81 MB +402.44 KB +0.1%

Totals:

  • vortex-file-compressed: 689.41 MB → 689.81 MB (+0.1%)

Two changes that together stop FSST from being the default and make
OnPair work end-to-end through the file writer + reader.

vortex-btrblocks
* Remove `FSSTScheme` from `ALL_SCHEMES`. The struct and `Scheme` impl
  stay in place so callers can opt back in via
  `BtrBlocksCompressorBuilder::with_new_scheme(&FSSTScheme)`; it just
  isn't in the default cascade anymore. OnPair fills the
  string-fragmentation slot.
* Tighten `only_cuda_compatible` to exclude OnPair (heavier toolchain
  dep) instead of FSST.
* Tests: drop the FSST-vs-OnPair tie-break test; add
  `test_onpair_compressed` (FSST-style corpus → OnPair) and
  `test_fsst_opt_in_still_works` (empty builder + with_new_scheme +
  FSSTScheme).

vortex-file
* New `onpair` Cargo feature (default-on, mirrors `vortex-btrblocks`'s)
  that pulls in `vortex-onpair` and registers `OnPair` in both
  `register_default_encodings` and `ALLOWED_ENCODINGS`. Without this
  the normalizer rejects vortex.onpair with "normalize forbids
  encoding (vortex.onpair)" when round-tripping a file. Consumers
  without a C++ toolchain can `default-features = false`.

CI / reproducibility
* Pin `onpair_cpp` to a full commit SHA in `cmake/onpair_pin.cmake`
  (was tracking `main`). CI's `FetchContent` step is now reproducible
  and won't break when upstream's main branch moves.

Tests: 109 across vortex-onpair, vortex-btrblocks, vortex-file; all
green. Clippy clean.

Signed-off-by: Claude <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: Statistical and Population Genetics

Verdict: No clear signal (low confidence)
Attributed Vortex impact: -0.0%
Vortex (geomean): 0.984x ➖
Parquet (geomean): 0.985x ➖
Shifts: Parquet (control) -1.5% · Median polish -1.5%


duckdb / vortex-file-compressed (0.976x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-file-compressed 11912989 12288596 0.97
statpopgen_q01/duckdb:vortex-file-compressed 20389501 20241657 1.01
statpopgen_q02/duckdb:vortex-file-compressed 1387932837 1396375973 0.99
statpopgen_q03/duckdb:vortex-file-compressed 3145800431 3220510011 0.98
statpopgen_q04/duckdb:vortex-file-compressed 3116316636 3321336574 0.94
statpopgen_q05/duckdb:vortex-file-compressed 1436873655 1527330593 0.94
statpopgen_q06/duckdb:vortex-file-compressed 2147874716 2174638673 0.99
statpopgen_q07/duckdb:vortex-file-compressed 209559865 211578310 0.99
statpopgen_q08/duckdb:vortex-file-compressed 244770045 252571411 0.97
statpopgen_q09/duckdb:vortex-file-compressed 2962456356 3044437851 0.97
statpopgen_q10/duckdb:vortex-file-compressed 4704459486 4752127316 0.99
duckdb / vortex-compact (0.993x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-compact 11312157 11566772 0.98
statpopgen_q01/duckdb:vortex-compact 165763399 165827588 1.00
statpopgen_q02/duckdb:vortex-compact 1819418561 1842133291 0.99
statpopgen_q03/duckdb:vortex-compact 3525066170 3502000584 1.01
statpopgen_q04/duckdb:vortex-compact 3585775739 3552325847 1.01
statpopgen_q05/duckdb:vortex-compact 1834596778 1862133119 0.99
statpopgen_q06/duckdb:vortex-compact 2678161456 2693846191 0.99
statpopgen_q07/duckdb:vortex-compact 881519650 898964172 0.98
statpopgen_q08/duckdb:vortex-compact 917036909 923412856 0.99
statpopgen_q09/duckdb:vortex-compact 3356011113 3350857014 1.00
statpopgen_q10/duckdb:vortex-compact 5427190491 5496651106 0.99
duckdb / parquet (0.985x ➖, 0↑ 0↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
statpopgen_q00/duckdb:parquet 321417002 329375801 0.98
statpopgen_q01/duckdb:parquet 412678850 412125932 1.00
statpopgen_q02/duckdb:parquet 997871754 996609635 1.00
statpopgen_q03/duckdb:parquet 1506752831 1517908081 0.99
statpopgen_q04/duckdb:parquet 1541339240 1540942802 1.00
statpopgen_q05/duckdb:parquet 1004412698 1011630751 0.99
statpopgen_q06/duckdb:parquet 1495959181 1507784841 0.99
statpopgen_q07/duckdb:parquet 1298962848 1354307812 0.96
statpopgen_q08/duckdb:parquet 1298606203 1365228322 0.95
statpopgen_q09/duckdb:parquet 1385618685 1407723503 0.98
statpopgen_q10/duckdb:parquet 2658780325 2708651486 0.98
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 duckdb:vortex-compact -2.2% -2.4% +0.2% +10.4% ➖ noise
0 duckdb:vortex-file-compressed -3.1% -2.4% -0.7% +10.8% ➖ noise
1 duckdb:vortex-compact -0.0% +0.1% -0.2% +10.0% ➖ noise
1 duckdb:vortex-file-compressed +0.7% +0.1% +0.6% +199.9% ➖ noise
2 duckdb:vortex-compact -1.2% +0.1% -1.4% +10.0% ➖ noise
2 duckdb:vortex-file-compressed -0.6% +0.1% -0.7% +10.0% ➖ noise
3 duckdb:vortex-compact +0.7% -0.7% +1.4% +10.0% ➖ noise
3 duckdb:vortex-file-compressed -2.3% -0.7% -1.6% +10.0% ➖ noise
4 duckdb:vortex-compact +0.9% +0.0% +0.9% +10.0% ➖ noise
4 duckdb:vortex-file-compressed -6.2% +0.0% -6.2% +10.0% ➖ noise
5 duckdb:vortex-compact -1.5% -0.7% -0.8% +10.0% ➖ noise
5 duckdb:vortex-file-compressed -5.9% -0.7% -5.2% +10.0% ➖ noise
6 duckdb:vortex-compact -0.6% -0.8% +0.2% +10.0% ➖ noise
6 duckdb:vortex-file-compressed -1.2% -0.8% -0.4% +10.0% ➖ noise
7 duckdb:vortex-compact -1.9% -4.1% +2.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -1.0% -4.1% +3.3% +10.0% ➖ noise
8 duckdb:vortex-compact -0.7% -4.9% +4.4% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -3.1% -4.9% +1.9% +10.0% ➖ noise
9 duckdb:vortex-compact +0.2% -1.6% +1.8% +10.0% ➖ noise
9 duckdb:vortex-file-compressed -2.7% -1.6% -1.1% +10.0% ➖ noise
10 duckdb:vortex-compact -1.3% -1.8% +0.6% +10.0% ➖ noise
10 duckdb:vortex-file-compressed -1.0% -1.8% +0.9% +10.0% ➖ noise

@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@joseph-isaacs joseph-isaacs added the changelog/feature A new feature label May 14, 2026 — with Claude
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: Compression

Vortex (geomean): 1.045x ➖
Parquet (geomean): 1.041x ➖


unknown / unknown (1.055x ➖, 6↑ 20↓)
name PR c3bcb2e (ns) base 1f6fb0a (ns) ratio (PR/base)
compress time/Arade 1179889185 1164865772 1.01
compress time/Bimbo 7145401703 7034536385 1.02
compress time/CMSprovider 2984136197 2883828600 1.03
compress time/Euro2016 🚨 1286751037 433386300 2.97
compress time/Food 412812048 383449898 1.08
compress time/HashTags 🚨 1492745955 819603765 1.82
compress time/TPC-H l_comment canonical 1398007414 1293810819 1.08
compress time/TPC-H l_comment chunked 1396282966 1312267730 1.06
compress time/taxi 739454183 734408453 1.01
compress time/wide table cols=100 chunks=1 rows=1000 12804465 12357538 1.04
compress time/wide table cols=100 chunks=50 rows=1000 13134316 12885020 1.02
compress time/wide table cols=1000 chunks=1 rows=1000 137000458 131506874 1.04
compress time/wide table cols=1000 chunks=50 rows=1000 🚨 140439294 126013301 1.11
compress time/wide table cols=10000 chunks=1 rows=1000 1546927595 1447645833 1.07
compress time/wide table cols=10000 chunks=50 rows=1000 1541129587 1455296613 1.06
decompress time/Arade 27308645 25560750 1.07
decompress time/Bimbo 85859035 82034909 1.05
decompress time/CMSprovider 🚨 92741665 76511380 1.21
decompress time/Euro2016 20349971 18977665 1.07
decompress time/Food 🚨 9062267 7530265 1.20
decompress time/HashTags 🚨 87533977 71777459 1.22
decompress time/TPC-H l_comment canonical 42502800 40207265 1.06
decompress time/TPC-H l_comment chunked 41887403 38986082 1.07
decompress time/taxi 15301677 14938991 1.02
decompress time/wide table cols=100 chunks=1 rows=1000 🚨 2861993 2571571 1.11
decompress time/wide table cols=100 chunks=50 rows=1000 🚨 2947559 2632353 1.12
decompress time/wide table cols=1000 chunks=1 rows=1000 🚨 26120939 22850475 1.14
decompress time/wide table cols=1000 chunks=50 rows=1000 🚨 26812874 23934794 1.12
decompress time/wide table cols=10000 chunks=1 rows=1000 🚨 310764154 270802108 1.15
decompress time/wide table cols=10000 chunks=50 rows=1000 🚨 302713668 263170720 1.15
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 2634344171 2612237542 1.01
parquet_rs-zstd compress time/Bimbo 12712370987 12739287832 1.00
parquet_rs-zstd compress time/CMSprovider 7328193310 6915466282 1.06
parquet_rs-zstd compress time/Euro2016 1340527132 1315393434 1.02
parquet_rs-zstd compress time/Food 795648538 799845165 0.99
parquet_rs-zstd compress time/HashTags 2316010419 2183352336 1.06
parquet_rs-zstd compress time/TPC-H l_comment canonical 3242233365 3162159801 1.03
parquet_rs-zstd compress time/TPC-H l_comment chunked 3262541650 3149978468 1.04
parquet_rs-zstd compress time/taxi 1245269642 1201780145 1.04
parquet_rs-zstd compress time/wide table cols=100 chunks=1 rows=1000 6461944 6148908 1.05
parquet_rs-zstd compress time/wide table cols=100 chunks=50 rows=1000 7052638 6507291 1.08
parquet_rs-zstd compress time/wide table cols=1000 chunks=1 rows=1000 80124030 75680840 1.06
parquet_rs-zstd compress time/wide table cols=1000 chunks=50 rows=1000 83137373 76192124 1.09
parquet_rs-zstd compress time/wide table cols=10000 chunks=1 rows=1000 820680248 777822184 1.06
parquet_rs-zstd compress time/wide table cols=10000 chunks=50 rows=1000 851007209 788388831 1.08
parquet_rs-zstd decompress time/Arade 623991687 617141589 1.01
parquet_rs-zstd decompress time/Bimbo 1704902442 1690964039 1.01
parquet_rs-zstd decompress time/CMSprovider 1763628561 1713259801 1.03
parquet_rs-zstd decompress time/Euro2016 382613257 380308278 1.01
parquet_rs-zstd decompress time/Food 202494120 199784798 1.01
parquet_rs-zstd decompress time/HashTags 692677289 643834992 1.08
parquet_rs-zstd decompress time/TPC-H l_comment canonical 598559897 586053733 1.02
parquet_rs-zstd decompress time/TPC-H l_comment chunked 599376555 587507041 1.02
parquet_rs-zstd decompress time/taxi 248324312 243913058 1.02
parquet_rs-zstd decompress time/wide table cols=100 chunks=1 rows=1000 🚀 2179175 2816138 0.77
parquet_rs-zstd decompress time/wide table cols=100 chunks=50 rows=1000 🚀 2347661 2823073 0.83
parquet_rs-zstd decompress time/wide table cols=1000 chunks=1 rows=1000 34361822 32573659 1.05
parquet_rs-zstd decompress time/wide table cols=1000 chunks=50 rows=1000 36994035 34097542 1.08
parquet_rs-zstd decompress time/wide table cols=10000 chunks=1 rows=1000 355136885 341523607 1.04
parquet_rs-zstd decompress time/wide table cols=10000 chunks=50 rows=1000 367920869 349644639 1.05
vortex-file-compressed size/Arade 145363532 145363796 1.00
vortex-file-compressed size/Bimbo 468763364 468763332 1.00
vortex-file-compressed size/CMSprovider 416689172 417907812 1.00
vortex-file-compressed size/Euro2016 🚀 138401228 163394740 0.85
vortex-file-compressed size/Food 41936864 41926936 1.00
vortex-file-compressed size/HashTags 🚀 174480724 195647828 0.89
vortex-file-compressed size/TPC-H l_comment canonical 173047304 179087360 0.97
vortex-file-compressed size/TPC-H l_comment chunked 173044112 179087360 0.97
vortex-file-compressed size/taxi 52363340 52363948 1.00
vortex-file-compressed size/wide table cols=100 chunks=1 rows=1000 930880 930848 1.00
vortex-file-compressed size/wide table cols=100 chunks=50 rows=1000 930880 930848 1.00
vortex-file-compressed size/wide table cols=1000 chunks=1 rows=1000 9293680 9293648 1.00
vortex-file-compressed size/wide table cols=1000 chunks=50 rows=1000 9293680 9293648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=1 rows=1000 92957680 92957648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=50 rows=1000 92957680 92957648 1.00
vortex:parquet-zstd ratio compress time/Arade 0 0 1.00
vortex:parquet-zstd ratio compress time/Bimbo 0 0 1.02
vortex:parquet-zstd ratio compress time/CMSprovider 0 0 0.98
vortex:parquet-zstd ratio compress time/Euro2016 🚨 0 0 2.91
vortex:parquet-zstd ratio compress time/Food 0 0 1.08
vortex:parquet-zstd ratio compress time/HashTags 🚨 0 0 1.72
vortex:parquet-zstd ratio compress time/TPC-H l_comment canonical 0 0 1.05
vortex:parquet-zstd ratio compress time/TPC-H l_comment chunked 0 0 1.03
vortex:parquet-zstd ratio compress time/taxi 0 0 0.97
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=1 rows=1000 1 2 0.99
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=50 rows=1000 1 1 0.94
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=1 rows=1000 1 1 0.98
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=50 rows=1000 1 1 1.02
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=1 rows=1000 1 1 1.01
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=50 rows=1000 1 1 0.98
vortex:parquet-zstd ratio decompress time/Arade 0 0 1.06
vortex:parquet-zstd ratio decompress time/Bimbo 0 0 1.04
vortex:parquet-zstd ratio decompress time/CMSprovider 🚨 0 0 1.18
vortex:parquet-zstd ratio decompress time/Euro2016 0 0 1.07
vortex:parquet-zstd ratio decompress time/Food 🚨 0 0 1.19
vortex:parquet-zstd ratio decompress time/HashTags 🚨 0 0 1.13
vortex:parquet-zstd ratio decompress time/TPC-H l_comment canonical 0 0 1.04
vortex:parquet-zstd ratio decompress time/TPC-H l_comment chunked 0 0 1.05
vortex:parquet-zstd ratio decompress time/taxi 0 0 1.01
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=1 rows=1000 🚨 1 0 1.44
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=50 rows=1000 🚨 1 0 1.35
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=1 rows=1000 0 0 1.08
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=50 rows=1000 0 0 1.03
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=1 rows=1000 🚨 0 0 1.10
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=50 rows=1000 0 0 1.09
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 0.85
vortex:parquet-zstd size/Food 1 1 1.00
vortex:parquet-zstd size/HashTags 🚀 1 1 0.89
vortex:parquet-zstd size/TPC-H l_comment canonical 1 1 0.97
vortex:parquet-zstd size/TPC-H l_comment chunked 1 1 0.97
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

claude added 3 commits May 14, 2026 16:14
Wiring `default = ["onpair"]` directly on `vortex-btrblocks` and
`vortex-file` meant any consumer that depended on those crates with
default features on (including `wasm-test`, which sets
`vortex = { default-features = false }` but cannot disable transitive
default features on a hard dep of `vortex`) ended up pulling
`vortex-onpair-sys` and its CMake / C++20 build, which fails on
wasm32-wasip1.

Move the default-on toggle to the umbrella `vortex` crate:

* `vortex-btrblocks` and `vortex-file` now declare `onpair` as a
  feature with **no `default = [...]` line** — they're a la carte.
* `vortex/Cargo.toml`: `default = ["files", "zstd", "onpair"]` plus a
  new `onpair = ["vortex-btrblocks/onpair", "vortex-file?/onpair"]`
  alias so `vortex` consumers still get OnPair out of the box but
  `default-features = false` callers (wasm-test) really do drop it.
* `only_cuda_compatible` annotates its now-conditionally-mutated
  `excluded` list with `#[cfg_attr(not(feature = "onpair"),
  allow(unused_mut))]` so no-default-features builds stop warning.

Verified:
  cargo build --target wasm32-wasip1 \
      --manifest-path wasm-test/Cargo.toml    # green, no C++ build

Signed-off-by: Claude <noreply@anthropic.com>
* `vortex-onpair`: the cascading compressor narrows the integer slot
  children to their tightest ptype (e.g. `codes` from u16 down to u8),
  so the decoder's `as_slice::<u16>()` was tripping a panic. Widen all
  three primitive children back to their canonical types
  (`Buffer<u16>` for codes, `Buffer<u32>` for both offsets) at
  materialisation time. Adds three round-trip tests in
  `vortex-btrblocks/tests/onpair_roundtrip.rs` that exercise the full
  compressor + decompressor on string arrays (non-nullable, nullable,
  and an empty-string-heavy edge case) — all three are green.

* Fix the two `unresolved link` rustdoc warnings on `OnPair::compress`
  by pointing at the actual entry point (`crate::onpair_compress`).

* `Cargo.toml`: re-sort `vortex-onpair` / `vortex-onpair-sys` into
  alphabetical order in `[workspace.dependencies]` so `taplo fmt
  --check` (= the `lint-toml` CI job) stops complaining.

* SPDX headers on the three CMake files
  (`encodings/onpair-sys/cmake/{CMakeLists.txt,onpair_pin.cmake,strip_boost.cmake}`)
  so the `reuse-check` job passes.

* Regenerate `public-api.lock` for `vortex-btrblocks` and add the two
  missing locks (`encodings/onpair{,-sys}/public-api.lock`).

Test results
  vortex-onpair                 7 unit + 1 100k smoke   all green
  vortex-btrblocks            36 unit + 3 doctests +
                              3 new onpair_roundtrip      all green

Signed-off-by: Claude <noreply@anthropic.com>
* `vortex-file/tests/test_onpair_string_roundtrip.rs`: a full
  parquet-bench-shape file write/read test for a single string column.
  Currently `#[ignore]`'d because when the cascading compressor leaves
  one of OnPair's primitive children (e.g. `dict_offsets` u32, or
  `codes_offsets` u32) as a raw `PrimitiveArray` rather than bit-pack
  it, the file roundtrip fails with `Misaligned buffer cannot be used
  to build PrimitiveArray of u32`. Tracked separately — the fix is to
  move the offset arrays into the OnPair array's `VTable::buffer`
  slots (where `BufferHandle::alignment` is preserved across the file
  format) instead of storing them as primitive slot children.

* For now the existing `BtrBlocksCompressor` round-trip tests
  (`vortex-btrblocks/tests/onpair_roundtrip.rs`) continue to pass —
  the compressor pipeline is correct, only the file-format
  serialisation has the alignment limitation.

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
claude added 2 commits May 14, 2026 17:13
Match OnPair C++ `decoder.h::decompress` exactly: copy a fixed
`MAX_TOKEN_SIZE = 16` bytes per token regardless of true token length,
then advance the output cursor by the *true* length so the next memcpy
overwrites the trailing slop. LLVM lowers the fixed-size copy to a
single 16-byte unaligned vector store on x86_64 / aarch64, making each
token a constant-time SIMD operation instead of a branchy variable
memcpy.

Changes:

* `MAX_TOKEN_SIZE` is now a public crate-level constant.
* `compress.rs` pads the dictionary blob with 16 trailing zero bytes so
  the over-copy never reads past `dict_bytes`. The codes / offsets /
  validity invariants are unchanged.
* `decode.rs::DecodeView::decode_row_into` becomes the fast path: a
  two-pass loop that first sums true lengths to size the output buffer
  once, then over-copies into a pre-reserved region using
  `copy_nonoverlapping` and finishes with a single `set_len`.
* New `decode_rows_into(start, count, &mut Vec<u8>)` does the same
  thing across a row window with no per-row reserve overhead. The
  canonicalise path now bulk-decodes the entire array in one shot.

Benchmark (release, no FFI, real OnPair-compressed URL/log corpus):

  rows     | median canonicalize  | ns / row
  ---------|----------------------|---------
   10 000  |  280 µs              |   28
  100 000  |  3.12 ms             |   31
  1 000 000|  57.5 ms             |   57   (L2-bound)

For comparison the earlier `extend_from_slice` decode was ~7.5 ms /
100 K rows; the new path is **~2.4× faster**.

Verified
* `cargo test -p vortex-onpair`              all green
* `cargo test -p vortex-btrblocks ...`        all green (3× roundtrip)
* `cargo test -p vortex-file ... onpair`     all green (4× roundtrip
                                              incl. TPC-H shape)
* `datafusion-bench tpch --opt scale-factor=0.01 --formats vortex
   --queries 1`                              end-to-end Parquet →
                                              Vortex (with OnPair) →
                                              DataFusion query 1 in 12 ms

Signed-off-by: Claude <noreply@anthropic.com>
Root cause: Vortex's flat-layout segment writer aligns each segment to
the alignment of its *first* buffer only. With the old buffer order

  [dict_bytes, dict_offsets, codes, codes_offsets]

`dict_bytes` is variable-length and has no alignment requirement, so
the segment was written u8-aligned. The next buffer (`dict_offsets`)
was a u32 array but ended up at an offset that was only u8-aligned in
the file, and on read `PrimitiveArray<u32>::deserialize` rejected it
with `Misaligned buffer cannot be used to build PrimitiveArray of u32`.

Single-column tests happened to pass because typical OnPair
dictionaries are coincidentally a multiple of 4 bytes; ClickBench's
wide string tables (and TPC-H's `supplier` post-encoding) hit the bad
case.

New buffer order:

    Buffer 0  dict_offsets   u32[]  ← segment alignment = 4
    Buffer 1  codes_offsets  u32[]  ← length already 4-multiple
    Buffer 2  codes          u16[]  ← starts at 4-aligned offset, OK for u16
    Buffer 3  dict_bytes     u8[]   ← variable length, no alignment needed

Each buffer's natural length is a multiple of its alignment, so every
buffer inside the segment stays correctly aligned. The 16-byte
over-copy padding on `dict_bytes` still applies for the decoder.

Verified
* `cargo test -p vortex-onpair -p vortex-btrblocks -p vortex-file`
  all green (5 new file-roundtrip tests pass, including a new
  `odd_dict_length_alignment` test specifically exercising the
  previously-broken case).
* `datafusion-bench tpch --opt scale-factor=0.01 --formats vortex
   --queries 1,2,3,6 --iterations 1` runs all four queries
  successfully end-to-end (Parquet → Vortex with OnPair → DataFusion).

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
… children

Move dict_offsets, codes, and codes_offsets out of the OnPair array's raw
buffer list and into typed slot children, mirroring FSST. The cascading
compressor now sees each integer offset/code array as a regular
`PrimitiveArray` child and can re-encode them through the standard
`compress_child` pipeline (FastLanes BitPacking on `codes` at exactly
`bits` bits, FoR on the offsets, narrow-then-FoR on
`uncompressed_lengths`, etc.).

New on-disk layout:

  Buffer 0       dict_bytes              (opaque, 8-aligned, +16 pad)
  Slot   0       dict_offsets   u32[]    (may be narrowed by compressor)
  Slot   1       codes          u16[]    (may be BitPacked to `bits` width)
  Slot   2       codes_offsets  u32[]    (may be narrowed by compressor)
  Slot   3       uncompressed_lengths    (integer)
  Slot   4       optional validity

Two pieces have to come along for the ride:

1. Per-child ptype recorded in `OnPairMetadata` (`dict_offsets_ptype`,
   `codes_ptype`, `codes_offsets_ptype`) so deserialize can ask for the
   actual narrowed dtype rather than hard-coded `U32` / `U16`. Without
   this fix `Primitive::deserialize` got handed a u16-aligned buffer
   for a U32 type and panicked with `Misaligned buffer cannot be used
   to build PrimitiveArray of u32`.
2. `OwnedDecodeInputs::collect` now widens whatever the compressor
   handed back (`u8`/`u16` for offsets, `u8` for `bits ≤ 8` codes) to
   the decode loop's native widths via `match_each_integer_ptype!` so
   the over-copy hot loop stays the same straight pointer arithmetic.

`OnPairScheme` in vortex-btrblocks declares `num_children = 4` and
recursively compresses every child, matching FSSTScheme's shape.

Tests
* `cargo test -p vortex-onpair -p vortex-btrblocks` — all green
  (7 unit + 1 smoke + 3 btrblocks roundtrip).
* `cargo test -p vortex-file --features onpair,tokio
   --test test_onpair_string_roundtrip` — all 5 green
  (single chunk, many chunks, TPC-H supplier shape, nullable extremes,
   odd_dict_length_alignment).
* `datafusion-bench tpch --opt scale-factor=0.01 --formats vortex
   --queries 1,3,6,12 --iterations 1` — all four queries end-to-end
  through Parquet → Vortex with OnPair → DataFusion.

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
…uble-copy

Two production improvements with measured benchmark backing. A side-by-side
microbench was used to compare four candidate decoders against each other on
the same compressed array; only the winning variant was kept (numbers below).

Combined `(offset << 16) | length` table
----------------------------------------
`OwnedDecodeInputs::collect` now packs `dict_offsets` into a single
`Buffer<u64>` table at materialise time. The hot decode loop loads one u64
per token instead of two adjacent u32s — `entry = *table_ptr.add(c);
off = entry >> 16; len = entry & 0xffff` — matching the strategy
`onpair_cpp/include/onpair/decoding/decoder.h` uses on its hot path. The
table costs `dict_size * 8` bytes (32 KiB at dict-12) which is amortised
over every row decode and trivially small next to the row payload.

Drop double-copy in `canonicalize_onpair`
-----------------------------------------
Previously the canonical buffer was assembled as:

    let mut buf: Vec<u8> = Vec::with_capacity(total + MAX_TOKEN_SIZE);
    dv.decode_rows_into_with_size(0, n, total, &mut buf);
    let mut out_bytes = ByteBufferMut::with_capacity(buf.len());
    out_bytes.extend_from_slice(&buf);          // ← second memcpy

Now we decode straight into `ByteBufferMut::spare_capacity_mut()`, so the
entire decoded payload is written exactly once.

Strategies that lost the bench (see git history for the full
benchmark + experimental variants):

* Padding every dict entry to 16 B (no `dict_offsets`, straight `c * 16`
  lookup): 25 % faster on 10 K and 100 K rows but **3.6× slower on 1 M
  rows** — extra working set blew out of L2.
* Non-temporal stores (`_mm_stream_si128`): catastrophic — the
  `cursor % 16` realign branch + `sfence` per token tanked it by 17×.

Final numbers (release, URL/log corpus, dict-12, 30 samples)
------------------------------------------------------------
                        before          after          speedup
  raw decode 10 K        60 µs          56 µs           1.07×
  raw decode 100 K       693 µs         635 µs          1.09×
  raw decode 1 M         9.5 ms         9.6 ms          ≈ 1×
  canonicalize 10 K      190 µs         171 µs          1.11×
  canonicalize 100 K     2.35 ms        1.85 ms         1.27×
  canonicalize 1 M       55 ms          29.7 ms         **1.85×**

The raw-decode-only speedup is modest (the inner loop is already
memory-bound at 1 M), but the canonicalize end-to-end win is dominated
by the dropped second memcpy.

Verified
* `cargo test -p vortex-onpair -p vortex-btrblocks` — all green.
* `cargo test -p vortex-file --features onpair,tokio
   --test test_onpair_string_roundtrip` — all 5 green.

Signed-off-by: Claude <noreply@anthropic.com>
@a10y
Copy link
Copy Markdown
Contributor

a10y commented May 14, 2026

partsupp boost is huge

image

Local-only follow-up to the combined-table decoder (15569bb). Four
correctness-preserving micro-optimisations and some test/bench hygiene.
Not pushed; user requested local-only review.

1. Drop `OwnedDecodeInputs::dict_offsets` — the decoder only needs the
   combined `(offset << 16) | length` `dict_table`, so `collect` no
   longer materialises a `Buffer<u32>` for the offsets at all. The
   table is built directly from whatever ptype the cascading compressor
   handed back via `match_each_integer_ptype!`. Saves one
   `dict_size`-element allocation per decode.

2. Single-allocation widen. `widen_to_{u16,u32}` now go through
   `BufferMut::with_capacity` + `push_unchecked` + `freeze` rather than
   `Vec → Buffer::copy_from`, halving allocator traffic.

3. Zero-copy widen fast path. When the cascading compressor did *not*
   narrow (the common case for small dicts / wide value ranges), the
   widen function refcount-bumps the underlying Arc via
   `PrimitiveArray::into_buffer::<u_N>()` instead of copying.

4. `for_each_dict_slice` + `decoded_len_rows` use `dict_table`. One
   `u64` load per token instead of two adjacent `u32` loads.

5. Tighter predicate kernels. `row_equals` / `row_starts_with` use raw
   slice pointer math on the needle/prefix after a single length
   check, instead of re-running bounds-checked subslicing on every
   iteration.

Tests + bench
* New `rstest`-parameterised `test_onpair_unroll_tail_boundaries` for
  `n ∈ {1, 2, 3, 4, 5, 7, 8, 9}` to stress the 4×-unrolled decode
  loop's scalar tail. Plus `test_onpair_empty`.
* Bench sweeps four corpus shapes (URL/log, short, long, high-card)
  across two row counts, so a regression on any shape surfaces clearly.

Benchmark (release, 30 samples, vs prior tip 15569bb)
  canonicalize UrlLog  100 K   1.85 ms → 1.42 ms   (-23 %)
  canonicalize UrlLog    1 M  29.7  ms → 15.1 ms   (-49 %)
  decode_rows  UrlLog    1 M   9.6  ms →  4.6 ms   (-52 %)

Verified
* `cargo test -p vortex-onpair` — 16/16 (was 7/7).
* `cargo test -p vortex-btrblocks` — 35/35.
* `cargo test -p vortex-file --features onpair,tokio
   --test test_onpair_string_roundtrip` — 5/5.
* `cargo clippy -p vortex-onpair -p vortex-onpair-sys
   -p vortex-btrblocks --all-targets` — clean.

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
claude and others added 2 commits May 14, 2026 22:57
…ates + memchr contains

Three connected changes that drop the SF=10 regression and accelerate
predicate pushdown.

OnPair::filter — share the dictionary (was the SF=10 cause)
-----------------------------------------------------------
The previous implementation decoded the whole array, filtered the
canonical bytes, and re-trained a brand-new OnPair dictionary on the
surviving rows. TPC-H Q22 customer.c_phone goes through two consecutive
filters (`SUBSTRING(c_phone,1,2) IN (...)` and `c_acctbal > avg`), each
of which paid full `Column::compress` training overhead — a ~50–100 ms
constant cost per call that vanishes below noise at SF=1 but dominates
at SF=10.

The rewrite is FSST-shape: keep `dict_bytes` + `dict_offsets` byte-
identical to the input; rebuild only `codes`, `codes_offsets`,
`uncompressed_lengths`, and validity by walking the mask. No decode,
no retrain, no C++ on the read path. New unit test
`test_onpair_filter_shares_dict` asserts the dict is byte-identical
post-filter.

Bench (UrlLog 1 M, --sample-count 30, release):
  filter_share_dict       4.8 ms median
  (vs. ~70 ms estimated for the old recompress path)

Token-aware Eq pushdown (no row decode)
---------------------------------------
New `lpm.rs` greedy longest-prefix-match tokeniser. OnPair's dictionary
is sorted lexicographically, so a 257-entry first-byte index gives
O(1) bucket lookup per byte; the inner loop scans the small bucket
to pick the longest matching dict entry. Two byte strings have equal
LPM token sequences iff they have equal bytes (LPM is deterministic
under the same dict), so `compute/compare.rs::compare(Eq)` LPM-tokenises
the needle once and then for each row compares `codes[lo..hi]` against
the tokenised needle as `&[u16]` — direct slice eq, no decode at all.

If the needle contains a byte that has no dict entry, no row can match
(every row was compressed against the same dict) — we leave the
bitmap zeroed and `NotEq` inverts.

Bench (UrlLog 1 M):
  eq_constant            6.8 ms median
  (mostly OwnedDecodeInputs::collect; the actual token compare is
   sub-millisecond)

LIKE pushdown
-------------
* `'literal'`     — same token-aware path as Eq.
* `'prefix%'`     — byte-streaming via `for_each_dict_slice`. The naive
                    "tokenise the prefix and compare token prefix"
                    trick is **wrong** for LIKE: the LPM of the row's
                    leading bytes may merge tokens past the literal
                    prefix's boundary. Streaming dict slices and
                    comparing prefix-wise is the correct minimum-work
                    option.
* `'%substring%'` — `memchr::memmem::Finder` (SSE2/AVX2 on x86_64,
                    NEON on aarch64, Two-Way underneath). Built once
                    per kernel call, reused across every row.

Everything else (escapes, `_`, mid-pattern wildcards,
case-insensitive) returns `None` so the framework decompresses + runs
the scalar `LIKE`.

Bench (UrlLog 1 M):
  like_prefix           14.8 ms median
  like_contains         36.4 ms median

Bench surface
-------------
* New corpus shapes: `UrlLog`, `Short`, `Long`, `HighCard` × 2 row
  counts (100 K, 1 M).
* New compute benches: `eq_constant`, `like_prefix`, `like_contains`,
  `filter_share_dict`.

Verified
* `cargo test -p vortex-onpair`              19 / 19
* `cargo test -p vortex-btrblocks`           35 / 35
* `cargo test -p vortex-file --features
   onpair,tokio --test test_onpair_string_roundtrip` — 5 / 5
* `cargo clippy -p vortex-onpair --all-targets` clean

Signed-off-by: Claude <noreply@anthropic.com>
The byte-streaming `prefix%` and per-row decode + memmem `%contains%`
implementations were not consistently faster than canonicalize + scalar
LIKE: the bulk 4×-unrolled decoder is hard to beat with per-row work.
Drop Like from PARENT_KERNELS so the system falls through to
canonicalize + scalar LIKE.

Compare stays pushed: LPM-tokenise the literal once, then `&[u16]`
equality on every row's `codes[lo..hi]` — no decode at all, ~7 ns/row.

Tests still pass via the canonicalize fallback. A token-DFA
implementation (FSST-style, EQSearch / PrefixAutomaton on tokens) is
tracked for the next iteration.

Signed-off-by: claude <claude@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
…er ptype fix)

LIKE pushdown rewritten using OnPair's own ideas (see
onpair_cpp/include/onpair/search/automata/prefix_automaton.h and
…/aho_corasick_automaton.h):

* `prefix%`  PrefixAutomaton — LPM-tokenise the prefix, precompute
              `prefix_range` intervals for each query position via
              binary search over the lex-sorted dict. Per-row scan is
              `≤ q + 1` u16 comparisons + one interval check, no
              decode at all. ~7 ns/row on UrlLog 1M.
* `%sub%`   ContainsBloom — per-dict-entry bits for "this token
              contains the substring" and "some suffix of this token
              could start a cross-token match". Most rows resolve from
              the bloom alone; the rest fall through to per-row decode
              + memmem.
* `'lit'`    Token-equality (already pushed via Compare).

Re-registers Like in PARENT_KERNELS.

Also fixes a panic in the share-dict filter:
"Attempted to get slice of type u32 from array of type u16" —
codes_offsets can be narrowed by the cascading compressor. Read it
through `match_each_integer_ptype!` instead of hard-coding `u32`.

Local bench (UrlLog, 1M rows):
  like_prefix     7.2 ms   (~7 ns/row)
  like_contains  24.1 ms   (~24 ns/row, decode only when bloom uncertain)
  eq_constant     6.5 ms
  filter          5.2 ms

Signed-off-by: claude <claude@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
Two tests rebuild a compressed array with `codes_offsets` deliberately
narrowed (u32 → u16, then u32 → u8) — the shape the cascading
compressor produces for short-row corpora — and assert that
`<OnPair as FilterKernel>::filter` succeeds and returns the expected
rows.

Pre-fix (`as_slice::<u32>()` hard-coded), both tests panic with
"Other error: Attempted to get slice of type u32 from array of type
u16". Post-fix (match_each_integer_ptype! dispatch), both pass.

Also drops a redundant function-scoped `use FilterKernel` since the
trait is now imported at module scope.

Signed-off-by: claude <claude@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@joseph-isaacs joseph-isaacs force-pushed the claude/vortex-array-rust-bindings-FQfIX branch from a51c8e9 to a1ba67f Compare May 15, 2026 07:01
…, fix lint

CI bench analysis on PR #7927 head a1ba67f (run 25891902881):

Wins ✅
- TPC-H Q22 SF=10 S3 datafusion:vortex-file-compressed: -47.3% (the
  Q22 regression we targeted is solved by the share-dict filter)
- TPC-H Q22 SF=1 S3 datafusion: -34.7%
- Clickbench NVMe: 12 attributed speedups vs 2 regressions
- TPC-DS SF=1 NVMe datafusion: dozens of -10% to -20% wins
- Compression ratio gains on string-heavy data (Euro2016 -15%,
  HashTags -11%, l_comment -3%, partsupp boost per PR author).

Pain ❌
- FineWeb NVMe q3/q6/q7 datafusion + duckdb vortex-file-compressed:
  +59% to +103% (~2× slower) on the LIKE %url%/%text%/%dump% queries.

Root cause: per-row "ContainsBloom classify + decode-on-miss +
memmem" path is slower than letting the system canonicalize and run a
single SIMD memmem over the whole buffer. Bulk canonical decode hits
the 4×-unrolled fixed-16B over-copy loop with cache-warm codes, while
the per-row path re-walks `codes_offsets`, allocates per row, and
pays per-row dispatch overhead. On corpora where the bloom isn't
selective (FineWeb has high cross-token overlap), we end up decoding
most rows anyway — at higher cost than bulk.

This commit:
1. Drops `'%contains%'` from the LIKE pushdown classifier — returns
   None so the caller does canonicalize + scalar LIKE. Equals and
   `'prefix%'` (both decode-free) stay pushed.
2. Removes `ContainsBloom` + tests in dfa.rs and the
   `contains_into_bitmap` helper in compute/like.rs.
3. Fixes clippy / cognitive-complexity / cast-truncation diagnostics
   surfaced by the latest CI:
   - filter.rs: allow the macro-generated `cast_*` lints + cognitive
     complexity in the share-dict filter body (it expands across all
     integer ptypes, raising the score artificially).
   - dfa.rs: rename `q/i/c` to `q_len/pos/code`; replace
     `expect()` on TryFrom with `vortex_panic!` to satisfy
     `expect_used`; elide redundant lifetime on `row_codes`.
   - tests.rs: allow `cognitive_complexity` on `narrow_codes_offsets`
     and `unnecessary_cast` for the ptype-generic `as u64` widening.
4. Regenerates public-api.lock (ContainsBloom + classify removed
   from the crate's public surface).

Net effect on FineWeb LIKE queries: the existing canonical path runs.
Net effect on prefix LIKE (where the automaton is decode-free): no
change. Net effect on TPC-H Q22 SF=10: no change (filter share-dict
is unrelated).

Signed-off-by: claude <claude@anthropic.com>
@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 May 15, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 15, 2026
Adds a `FineWebText` corpus shape (long natural-language paragraphs
stitched from ~25 web-text fragments, ~800 B per row) and three new
LIKE bench arms that disentangle the contains-regression I attributed
to "the pushdown was slow" with concrete numbers:

  decode_rows_unchecked             (FineWebText, 50k)  3.00 ms  13.3 GB/s
  canonicalize_to_varbinview        (FineWebText, 50k)  3.55 ms
  like_contains_via_canonical       (FineWebText, 50k)  3.67 ms  ← current fallback
  like_contains_no_encoding_baseline(FineWebText, 50k)  108 µs   ← memmem-only
  like_contains_kernel_dispatch     (UrlLog, 1M)       <1 µs    ← None return

Findings:

1. 97% of `LIKE '%sub%'` time on FineWeb-shape data is the decode
   itself. Even a perfectly-fused "decode + search in one pass" pushdown
   could only save the 120 µs memmem — pointless when decode is 3.55 ms.

2. Our decode runs at 13.3 GB/s — roughly half of memcpy. The
   dict-pointer indirection costs us the other half; FSST would be
   maybe 10-15% faster due to u8 codes vs our u16. So *decode-speed*
   improvements can yield ~10-20% at most, not the 2x needed.

3. The CI 2x regression on FineWeb NVMe q3/q6/q7 must come from
   replacing FSST's decode-free `FlatContainsDfa` (DFA on compressed
   codes, no decode) with our canonicalize-and-scalar-LIKE fallback.
   The only fix that closes the gap is a decode-free contains
   pushdown — i.e., an Aho-Corasick automaton on tokens (the OnPair
   C++ approach in `search/automata/aho_corasick_automaton.h`).

Bench numbers reproducible with:
  cargo bench -p vortex-onpair --bench decode -- like_contains

Signed-off-by: claude <claude@anthropic.com>
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented May 15, 2026

Unable to generate the flame graphs

The performance report has correctly been generated, but there was an internal error while generating the flame graphs for this run. We're working on fixing the issue. Feel free to contact us on Discord or at support@codspeed.io if the issue persists.

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

Labels

changelog/feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants