Skip to content

Add OnPair string compression encoding with predicate pushdown#7927

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

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

Conversation

@joseph-isaacs
Copy link
Copy Markdown
Contributor

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

https://claude.ai/code/session_01T9bRd6nrSLwGbQE54NrVKd

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 (a51c8e9) 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 a1ba67f 2 Explore Profiling Data
Previous Runs (9)
Status Commit Job Attempt Link
🟢 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 (environment too noisy confidence)
Attributed Vortex impact: +0.0%
Vortex (geomean): 0.970x ➖
Parquet (geomean): 0.967x ➖
Shifts: Parquet (control) -3.3% · Median polish -3.9%


datafusion / vortex-file-compressed (1.002x ➖, 1↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 52527228 49087547 1.07
tpch_q02/datafusion:vortex-file-compressed 22194922 21691323 1.02
tpch_q03/datafusion:vortex-file-compressed 27745151 27545878 1.01
tpch_q04/datafusion:vortex-file-compressed 20378619 20068145 1.02
tpch_q05/datafusion:vortex-file-compressed 48853120 48003960 1.02
tpch_q06/datafusion:vortex-file-compressed 11971333 11795581 1.01
tpch_q07/datafusion:vortex-file-compressed 54771251 53395838 1.03
tpch_q08/datafusion:vortex-file-compressed 40298641 38642763 1.04
tpch_q09/datafusion:vortex-file-compressed 51685621 51828174 1.00
tpch_q10/datafusion:vortex-file-compressed 🚨 44153912 38640328 1.14
tpch_q11/datafusion:vortex-file-compressed 15599416 15663012 1.00
tpch_q12/datafusion:vortex-file-compressed 24793363 25059228 0.99
tpch_q13/datafusion:vortex-file-compressed 25261219 24961228 1.01
tpch_q14/datafusion:vortex-file-compressed 16445064 16771084 0.98
tpch_q15/datafusion:vortex-file-compressed 25986344 25831992 1.01
tpch_q16/datafusion:vortex-file-compressed 18854932 19427934 0.97
tpch_q17/datafusion:vortex-file-compressed 66461397 65222330 1.02
tpch_q18/datafusion:vortex-file-compressed 80884318 80861061 1.00
tpch_q19/datafusion:vortex-file-compressed 23002179 22221727 1.04
tpch_q20/datafusion:vortex-file-compressed 29485293 31876229 0.92
tpch_q21/datafusion:vortex-file-compressed 70591588 76243071 0.93
tpch_q22/datafusion:vortex-file-compressed 🚀 11593121 13388830 0.87
datafusion / vortex-compact (0.950x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 57871188 58766469 0.98
tpch_q02/datafusion:vortex-compact 24789978 26130011 0.95
tpch_q03/datafusion:vortex-compact 28708823 31316847 0.92
tpch_q04/datafusion:vortex-compact 22445192 23534700 0.95
tpch_q05/datafusion:vortex-compact 50214152 54678770 0.92
tpch_q06/datafusion:vortex-compact 13833078 14318587 0.97
tpch_q07/datafusion:vortex-compact 58235845 61612846 0.95
tpch_q08/datafusion:vortex-compact 43135106 46003367 0.94
tpch_q09/datafusion:vortex-compact 53804194 58026033 0.93
tpch_q10/datafusion:vortex-compact 45114873 47540258 0.95
tpch_q11/datafusion:vortex-compact 17018963 17742903 0.96
tpch_q12/datafusion:vortex-compact 30304992 31719684 0.96
tpch_q13/datafusion:vortex-compact 31973046 32515011 0.98
tpch_q14/datafusion:vortex-compact 19722820 20757451 0.95
tpch_q15/datafusion:vortex-compact 32818388 33607053 0.98
tpch_q16/datafusion:vortex-compact 23584069 24747431 0.95
tpch_q17/datafusion:vortex-compact 68759618 72467569 0.95
tpch_q18/datafusion:vortex-compact 81851685 88936503 0.92
tpch_q19/datafusion:vortex-compact 30408956 30874387 0.98
tpch_q20/datafusion:vortex-compact 33824967 35484217 0.95
tpch_q21/datafusion:vortex-compact 74371118 80417068 0.92
tpch_q22/datafusion:vortex-compact 12484584 13249991 0.94
datafusion / parquet (0.992x ➖, 1↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 🚨 120980472 94473347 1.28
tpch_q02/datafusion:parquet 60204706 61544514 0.98
tpch_q03/datafusion:parquet 73511705 69862423 1.05
tpch_q04/datafusion:parquet 42002836 42652934 0.98
tpch_q05/datafusion:parquet 91814518 92256908 1.00
tpch_q06/datafusion:parquet 39845392 42705172 0.93
tpch_q07/datafusion:parquet 104189992 104658334 1.00
tpch_q08/datafusion:parquet 93708015 98373357 0.95
tpch_q09/datafusion:parquet 127541689 128109522 1.00
tpch_q10/datafusion:parquet 110330144 109592543 1.01
tpch_q11/datafusion:parquet 39705153 40434529 0.98
tpch_q12/datafusion:parquet 81068632 80549730 1.01
tpch_q13/datafusion:parquet 194899162 206402320 0.94
tpch_q14/datafusion:parquet 46616671 46705812 1.00
tpch_q15/datafusion:parquet 57006327 57835766 0.99
tpch_q16/datafusion:parquet 38824367 39861946 0.97
tpch_q17/datafusion:parquet 125515015 127493550 0.98
tpch_q18/datafusion:parquet 162414792 163932760 0.99
tpch_q19/datafusion:parquet 🚀 67537603 78217127 0.86
tpch_q20/datafusion:parquet 67376964 67518823 1.00
tpch_q21/datafusion:parquet 129664125 129599674 1.00
tpch_q22/datafusion:parquet 30484470 31664866 0.96
datafusion / arrow (0.948x ➖, 2↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 🚀 50019075 57881261 0.86
tpch_q02/datafusion:arrow 18856661 19444565 0.97
tpch_q03/datafusion:arrow 29459741 31057545 0.95
tpch_q04/datafusion:arrow 25729161 25955687 0.99
tpch_q05/datafusion:arrow 78086229 75021933 1.04
tpch_q06/datafusion:arrow 20820470 19842070 1.05
tpch_q07/datafusion:arrow 101925799 104675040 0.97
tpch_q08/datafusion:arrow 41220963 44630795 0.92
tpch_q09/datafusion:arrow 63284893 69573132 0.91
tpch_q10/datafusion:arrow 🚀 45530139 51018915 0.89
tpch_q11/datafusion:arrow 9416363 9457363 1.00
tpch_q12/datafusion:arrow 51193048 53651251 0.95
tpch_q13/datafusion:arrow 46511902 47517611 0.98
tpch_q14/datafusion:arrow 21698637 23312438 0.93
tpch_q15/datafusion:arrow 41467211 45472913 0.91
tpch_q16/datafusion:arrow 18734911 19590854 0.96
tpch_q17/datafusion:arrow 67076249 72364777 0.93
tpch_q18/datafusion:arrow 131510380 143593052 0.92
tpch_q19/datafusion:arrow 34241957 37019973 0.92
tpch_q20/datafusion:arrow 34225973 37344146 0.92
tpch_q21/datafusion:arrow 145350537 153013587 0.95
tpch_q22/datafusion:arrow 17476585 18174243 0.96
duckdb / vortex-file-compressed (0.961x ➖, 1↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 31397532 31297720 1.00
tpch_q02/duckdb:vortex-file-compressed 24103737 25064330 0.96
tpch_q03/duckdb:vortex-file-compressed 28707457 31514612 0.91
tpch_q04/duckdb:vortex-file-compressed 29228821 31536580 0.93
tpch_q05/duckdb:vortex-file-compressed 32605739 34630216 0.94
tpch_q06/duckdb:vortex-file-compressed 10110621 10204011 0.99
tpch_q07/duckdb:vortex-file-compressed 35163656 38589678 0.91
tpch_q08/duckdb:vortex-file-compressed 37181340 40050716 0.93
tpch_q09/duckdb:vortex-file-compressed 72940933 76985253 0.95
tpch_q10/duckdb:vortex-file-compressed 🚀 33174933 36882904 0.90
tpch_q11/duckdb:vortex-file-compressed 14010125 15500832 0.90
tpch_q12/duckdb:vortex-file-compressed 21656694 22582813 0.96
tpch_q13/duckdb:vortex-file-compressed 36757419 35871993 1.02
tpch_q14/duckdb:vortex-file-compressed 20618763 21465540 0.96
tpch_q15/duckdb:vortex-file-compressed 16523396 16263852 1.02
tpch_q16/duckdb:vortex-file-compressed 28774917 27798635 1.04
tpch_q17/duckdb:vortex-file-compressed 24084255 24404338 0.99
tpch_q18/duckdb:vortex-file-compressed 48628646 49815480 0.98
tpch_q19/duckdb:vortex-file-compressed 28748434 29162059 0.99
tpch_q20/duckdb:vortex-file-compressed 32582456 34095776 0.96
tpch_q21/duckdb:vortex-file-compressed 102017382 106243396 0.96
tpch_q22/duckdb:vortex-file-compressed 17181672 17534403 0.98
duckdb / vortex-compact (0.968x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 38010085 38752585 0.98
tpch_q02/duckdb:vortex-compact 36016045 35535965 1.01
tpch_q03/duckdb:vortex-compact 31005605 32850516 0.94
tpch_q04/duckdb:vortex-compact 33780206 34178620 0.99
tpch_q05/duckdb:vortex-compact 36699128 39749632 0.92
tpch_q06/duckdb:vortex-compact 14198893 14107680 1.01
tpch_q07/duckdb:vortex-compact 41951448 42639278 0.98
tpch_q08/duckdb:vortex-compact 45381326 44628888 1.02
tpch_q09/duckdb:vortex-compact 80449198 87248060 0.92
tpch_q10/duckdb:vortex-compact 38581552 41501581 0.93
tpch_q11/duckdb:vortex-compact 19684911 19042057 1.03
tpch_q12/duckdb:vortex-compact 35068964 34965870 1.00
tpch_q13/duckdb:vortex-compact 43953188 44693856 0.98
tpch_q14/duckdb:vortex-compact 29013611 29688985 0.98
tpch_q15/duckdb:vortex-compact 19426779 19932925 0.97
tpch_q16/duckdb:vortex-compact 35201242 36068247 0.98
tpch_q17/duckdb:vortex-compact 30078898 31137500 0.97
tpch_q18/duckdb:vortex-compact 49471205 52256271 0.95
tpch_q19/duckdb:vortex-compact 34008259 36149736 0.94
tpch_q20/duckdb:vortex-compact 41505870 43142090 0.96
tpch_q21/duckdb:vortex-compact 110536861 117889036 0.94
tpch_q22/duckdb:vortex-compact 19158894 21083899 0.91
duckdb / parquet (0.942x ➖, 2↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 79419944 78262420 1.01
tpch_q02/duckdb:parquet 37799683 39261245 0.96
tpch_q03/duckdb:parquet 68344339 71357564 0.96
tpch_q04/duckdb:parquet 46432801 49126859 0.95
tpch_q05/duckdb:parquet 64082802 67386835 0.95
tpch_q06/duckdb:parquet 19947364 20757588 0.96
tpch_q07/duckdb:parquet 66696988 70888166 0.94
tpch_q08/duckdb:parquet 🚀 80214904 99352126 0.81
tpch_q09/duckdb:parquet 141058791 148013462 0.95
tpch_q10/duckdb:parquet 123495714 128718059 0.96
tpch_q11/duckdb:parquet 20644145 21985608 0.94
tpch_q12/duckdb:parquet 44446360 46696472 0.95
tpch_q13/duckdb:parquet 248772944 273212644 0.91
tpch_q14/duckdb:parquet 48728649 49629116 0.98
tpch_q15/duckdb:parquet 🚀 24044142 28842932 0.83
tpch_q16/duckdb:parquet 55729540 58440015 0.95
tpch_q17/duckdb:parquet 52285446 53576805 0.98
tpch_q18/duckdb:parquet 114780711 112672637 1.02
tpch_q19/duckdb:parquet 67453811 71336348 0.95
tpch_q20/duckdb:parquet 61843690 67100714 0.92
tpch_q21/duckdb:parquet 154517687 166733380 0.93
tpch_q22/duckdb:parquet 51150760 53904268 0.95
duckdb / duckdb (0.971x ➖, 1↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 15886024 16336329 0.97
tpch_q02/duckdb:duckdb 12962796 13145182 0.99
tpch_q03/duckdb:duckdb 18275178 19077229 0.96
tpch_q04/duckdb:duckdb 18529629 19854704 0.93
tpch_q05/duckdb:duckdb 19744254 20696485 0.95
tpch_q06/duckdb:duckdb 5226927 5345991 0.98
tpch_q07/duckdb:duckdb 21830816 23326100 0.94
tpch_q08/duckdb:duckdb 20955393 21820523 0.96
tpch_q09/duckdb:duckdb 54371388 56669279 0.96
tpch_q10/duckdb:duckdb 41218271 43179299 0.95
tpch_q11/duckdb:duckdb 5695489 6084999 0.94
tpch_q12/duckdb:duckdb 13593215 14200073 0.96
tpch_q13/duckdb:duckdb 38986818 38769716 1.01
tpch_q14/duckdb:duckdb 🚀 16640547 18621044 0.89
tpch_q15/duckdb:duckdb 🚨 13726631 11959596 1.15
tpch_q16/duckdb:duckdb 24352238 23328039 1.04
tpch_q17/duckdb:duckdb 13361001 14218774 0.94
tpch_q18/duckdb:duckdb 38165608 39155120 0.97
tpch_q19/duckdb:duckdb 25904228 26347938 0.98
tpch_q20/duckdb:duckdb 22535873 23495912 0.96
tpch_q21/duckdb:duckdb 56683600 57759686 0.98
tpch_q22/duckdb:duckdb 23993358 24449846 0.98
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow -13.6% +14.0% -24.2% +19.4% ✅ faster
1 datafusion:vortex-compact -1.5% +14.0% -13.6% +18.1% ➖ noise
1 datafusion:vortex-file-compressed +7.0% +14.0% -6.1% +17.8% ➖ noise
1 duckdb:duckdb -2.8% +14.0% -14.7% +17.4% ➖ noise
1 duckdb:vortex-compact -1.9% +14.0% -14.0% +16.8% ➖ noise
1 duckdb:vortex-file-compressed +0.3% +14.0% -12.0% +19.5% ➖ noise
2 datafusion:arrow -3.0% -3.0% -0.1% +13.7% ➖ noise
2 datafusion:vortex-compact -5.1% -3.0% -2.2% +13.7% ➖ noise
2 datafusion:vortex-file-compressed +2.3% -3.0% +5.4% +13.7% ➖ noise
2 duckdb:duckdb -1.4% -3.0% +1.6% +13.7% ➖ noise
2 duckdb:vortex-compact +1.4% -3.0% +4.4% +13.7% ➖ noise
2 duckdb:vortex-file-compressed -3.8% -3.0% -0.9% +13.7% ➖ noise
3 datafusion:arrow -5.1% +0.4% -5.5% +13.7% ➖ noise
3 datafusion:vortex-compact -8.3% +0.4% -8.7% +13.7% ➖ noise
3 datafusion:vortex-file-compressed +0.7% +0.4% +0.3% +13.7% ➖ noise
3 duckdb:duckdb -4.2% +0.4% -4.6% +13.7% ➖ noise
3 duckdb:vortex-compact -5.6% +0.4% -6.0% +13.7% ➖ noise
3 duckdb:vortex-file-compressed -8.9% +0.4% -9.3% +15.1% ➖ noise
4 datafusion:arrow -0.9% -3.5% +2.7% +13.7% ➖ noise
4 datafusion:vortex-compact -4.6% -3.5% -1.1% +13.7% ➖ noise
4 datafusion:vortex-file-compressed +1.5% -3.5% +5.3% +13.7% ➖ noise
4 duckdb:duckdb -6.7% -3.5% -3.3% +13.7% ➖ noise
4 duckdb:vortex-compact -1.2% -3.5% +2.4% +13.7% ➖ noise
4 duckdb:vortex-file-compressed -7.3% -3.5% -3.9% +13.7% ➖ noise
5 datafusion:arrow +4.1% -2.7% +7.0% +13.7% ➖ noise
5 datafusion:vortex-compact -8.2% -2.7% -5.6% +13.7% ➖ noise
5 datafusion:vortex-file-compressed +1.8% -2.7% +4.6% +13.7% ➖ noise
5 duckdb:duckdb -4.6% -2.7% -1.9% +13.7% ➖ noise
5 duckdb:vortex-compact -7.7% -2.7% -5.1% +13.7% ➖ noise
5 duckdb:vortex-file-compressed -5.8% -2.7% -3.2% +13.7% ➖ noise
6 datafusion:arrow +4.9% -5.3% +10.8% +17.6% ➖ noise
6 datafusion:vortex-compact -3.4% -5.3% +2.0% +16.8% ➖ noise
6 datafusion:vortex-file-compressed +1.5% -5.3% +7.2% +15.9% ➖ noise
6 duckdb:duckdb -2.2% -5.3% +3.3% +16.0% ➖ noise
6 duckdb:vortex-compact +0.6% -5.3% +6.3% +16.1% ➖ noise
6 duckdb:vortex-file-compressed -0.9% -5.3% +4.6% +15.0% ➖ noise
7 datafusion:arrow -2.6% -3.2% +0.6% +13.7% ➖ noise
7 datafusion:vortex-compact -5.5% -3.2% -2.3% +13.7% ➖ noise
7 datafusion:vortex-file-compressed +2.6% -3.2% +6.0% +13.7% ➖ noise
7 duckdb:duckdb -6.4% -3.2% -3.3% +13.7% ➖ noise
7 duckdb:vortex-compact -1.6% -3.2% +1.7% +13.7% ➖ noise
7 duckdb:vortex-file-compressed -8.9% -3.2% -5.8% +13.7% ➖ noise
8 datafusion:arrow -7.6% -12.3% +5.3% +13.7% ➖ noise
8 datafusion:vortex-compact -6.2% -12.3% +6.9% +13.7% ➖ noise
8 datafusion:vortex-file-compressed +4.3% -12.3% +18.9% +13.7% 🚨 regression
8 duckdb:duckdb -4.0% -12.3% +9.5% +13.7% ➖ noise
8 duckdb:vortex-compact +1.7% -12.3% +16.0% +13.7% 🚨 regression
8 duckdb:vortex-file-compressed -7.2% -12.3% +5.9% +13.7% ➖ noise
9 datafusion:arrow -9.0% -2.6% -6.6% +13.7% ➖ noise
9 datafusion:vortex-compact -7.3% -2.6% -4.8% +13.7% ➖ noise
9 datafusion:vortex-file-compressed -0.3% -2.6% +2.4% +13.7% ➖ noise
9 duckdb:duckdb -4.1% -2.6% -1.5% +13.7% ➖ noise
9 duckdb:vortex-compact -7.8% -2.6% -5.3% +13.7% ➖ noise
9 duckdb:vortex-file-compressed -5.3% -2.6% -2.7% +13.7% ➖ noise
10 datafusion:arrow -10.8% -1.7% -9.2% +13.7% ➖ noise
10 datafusion:vortex-compact -5.1% -1.7% -3.4% +13.7% ➖ noise
10 datafusion:vortex-file-compressed +14.3% -1.7% +16.3% +13.7% 🚨 regression
10 duckdb:duckdb -4.5% -1.7% -2.9% +13.7% ➖ noise
10 duckdb:vortex-compact -7.0% -1.7% -5.4% +13.7% ➖ noise
10 duckdb:vortex-file-compressed -10.1% -1.7% -8.5% +13.7% ➖ noise
11 datafusion:arrow -0.4% -4.0% +3.7% +13.7% ➖ noise
11 datafusion:vortex-compact -4.1% -4.0% -0.1% +13.7% ➖ noise
11 datafusion:vortex-file-compressed -0.4% -4.0% +3.7% +13.7% ➖ noise
11 duckdb:duckdb -6.4% -4.0% -2.5% +13.7% ➖ noise
11 duckdb:vortex-compact +3.4% -4.0% +7.7% +13.7% ➖ noise
11 duckdb:vortex-file-compressed -9.6% -4.0% -5.9% +13.7% ➖ noise
12 datafusion:arrow -4.6% -2.1% -2.5% +18.2% ➖ noise
12 datafusion:vortex-compact -4.5% -2.1% -2.4% +13.7% ➖ noise
12 datafusion:vortex-file-compressed -1.1% -2.1% +1.1% +13.7% ➖ noise
12 duckdb:duckdb -4.3% -2.1% -2.2% +13.7% ➖ noise
12 duckdb:vortex-compact +0.3% -2.1% +2.5% +13.7% ➖ noise
12 duckdb:vortex-file-compressed -4.1% -2.1% -2.0% +13.7% ➖ noise
13 datafusion:arrow -2.1% -7.3% +5.6% +13.7% ➖ noise
13 datafusion:vortex-compact -1.7% -7.3% +6.0% +13.7% ➖ noise
13 datafusion:vortex-file-compressed +1.2% -7.3% +9.1% +13.7% ➖ noise
13 duckdb:duckdb +0.6% -7.3% +8.4% +13.7% ➖ noise
13 duckdb:vortex-compact -1.7% -7.3% +6.1% +13.7% ➖ noise
13 duckdb:vortex-file-compressed +2.5% -7.3% +10.5% +13.7% ➖ noise
14 datafusion:arrow -6.9% -1.0% -6.0% +13.7% ➖ noise
14 datafusion:vortex-compact -5.0% -1.0% -4.0% +13.7% ➖ noise
14 datafusion:vortex-file-compressed -1.9% -1.0% -0.9% +13.7% ➖ noise
14 duckdb:duckdb -10.6% -1.0% -9.7% +17.7% ➖ noise
14 duckdb:vortex-compact -2.3% -1.0% -1.3% +13.7% ➖ noise
14 duckdb:vortex-file-compressed -3.9% -1.0% -3.0% +13.7% ➖ noise
15 datafusion:arrow -8.8% -9.4% +0.6% +13.7% ➖ noise
15 datafusion:vortex-compact -2.3% -9.4% +7.7% +13.7% ➖ noise
15 datafusion:vortex-file-compressed +0.6% -9.4% +11.0% +13.7% ➖ noise
15 duckdb:duckdb +14.8% -9.4% +26.6% +25.6% 🚨 regression
15 duckdb:vortex-compact -2.5% -9.4% +7.5% +14.0% ➖ noise
15 duckdb:vortex-file-compressed +1.6% -9.4% +12.1% +13.7% ➖ noise
16 datafusion:arrow -4.4% -3.6% -0.8% +13.7% ➖ noise
16 datafusion:vortex-compact -4.7% -3.6% -1.1% +13.7% ➖ noise
16 datafusion:vortex-file-compressed -2.9% -3.6% +0.7% +13.7% ➖ noise
16 duckdb:duckdb +4.4% -3.6% +8.3% +13.7% ➖ noise
16 duckdb:vortex-compact -2.4% -3.6% +1.3% +13.7% ➖ noise
16 duckdb:vortex-file-compressed +3.5% -3.6% +7.4% +13.7% ➖ noise
17 datafusion:arrow -7.3% -2.0% -5.4% +13.7% ➖ noise
17 datafusion:vortex-compact -5.1% -2.0% -3.2% +13.7% ➖ noise
17 datafusion:vortex-file-compressed +1.9% -2.0% +4.0% +13.7% ➖ noise
17 duckdb:duckdb -6.0% -2.0% -4.1% +13.7% ➖ noise
17 duckdb:vortex-compact -3.4% -2.0% -1.4% +13.7% ➖ noise
17 duckdb:vortex-file-compressed -1.3% -2.0% +0.7% +14.6% ➖ noise
18 datafusion:arrow -8.4% +0.5% -8.8% +13.7% ➖ noise
18 datafusion:vortex-compact -8.0% +0.5% -8.4% +13.7% ➖ noise
18 datafusion:vortex-file-compressed +0.0% +0.5% -0.4% +13.7% ➖ noise
18 duckdb:duckdb -2.5% +0.5% -3.0% +13.7% ➖ noise
18 duckdb:vortex-compact -5.3% +0.5% -5.8% +13.7% ➖ noise
18 duckdb:vortex-file-compressed -2.4% +0.5% -2.8% +13.7% ➖ noise
19 datafusion:arrow -7.5% -9.6% +2.4% +15.2% ➖ noise
19 datafusion:vortex-compact -1.5% -9.6% +9.0% +13.7% ➖ noise
19 datafusion:vortex-file-compressed +3.5% -9.6% +14.6% +13.7% 🚨 regression
19 duckdb:duckdb -1.7% -9.6% +8.8% +13.7% ➖ noise
19 duckdb:vortex-compact -5.9% -9.6% +4.1% +13.7% ➖ noise
19 duckdb:vortex-file-compressed -1.4% -9.6% +9.1% +13.7% ➖ noise
20 datafusion:arrow -8.3% -4.1% -4.4% +13.7% ➖ noise
20 datafusion:vortex-compact -4.7% -4.1% -0.6% +13.7% ➖ noise
20 datafusion:vortex-file-compressed -7.5% -4.1% -3.5% +14.4% ➖ noise
20 duckdb:duckdb -4.1% -4.1% +0.0% +13.7% ➖ noise
20 duckdb:vortex-compact -3.8% -4.1% +0.3% +13.7% ➖ noise
20 duckdb:vortex-file-compressed -4.4% -4.1% -0.4% +13.7% ➖ noise
21 datafusion:arrow -5.0% -3.7% -1.3% +13.7% ➖ noise
21 datafusion:vortex-compact -7.5% -3.7% -4.0% +13.7% ➖ noise
21 datafusion:vortex-file-compressed -7.4% -3.7% -3.8% +13.7% ➖ noise
21 duckdb:duckdb -1.9% -3.7% +1.9% +13.7% ➖ noise
21 duckdb:vortex-compact -6.2% -3.7% -2.6% +13.7% ➖ noise
21 duckdb:vortex-file-compressed -4.0% -3.7% -0.3% +13.7% ➖ noise
22 datafusion:arrow -3.8% -4.4% +0.6% +13.7% ➖ noise
22 datafusion:vortex-compact -5.8% -4.4% -1.4% +13.7% ➖ noise
22 datafusion:vortex-file-compressed -13.4% -4.4% -9.4% +13.7% ➖ noise
22 duckdb:duckdb -1.9% -4.4% +2.7% +13.7% ➖ noise
22 duckdb:vortex-compact -9.1% -4.4% -4.9% +13.7% ➖ noise
22 duckdb:vortex-file-compressed -2.0% -4.4% +2.5% +13.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: +0.3%
Vortex (geomean): 0.943x ➖
Parquet (geomean): 0.941x ➖
Shifts: Parquet (control) -5.9% · Median polish -5.0%


datafusion / vortex-file-compressed (0.916x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 236276938 278436322 0.85
tpch_q02/datafusion:vortex-file-compressed 408264024 439342368 0.93
tpch_q03/datafusion:vortex-file-compressed 404187435 442784987 0.91
tpch_q04/datafusion:vortex-file-compressed 241103098 267400615 0.90
tpch_q05/datafusion:vortex-file-compressed 393549431 436586265 0.90
tpch_q06/datafusion:vortex-file-compressed 318937279 315433546 1.01
tpch_q07/datafusion:vortex-file-compressed 375764090 427641840 0.88
tpch_q08/datafusion:vortex-file-compressed 527693903 586136908 0.90
tpch_q09/datafusion:vortex-file-compressed 392823930 460696943 0.85
tpch_q10/datafusion:vortex-file-compressed 486870394 439455970 1.11
tpch_q11/datafusion:vortex-file-compressed 251604946 255780084 0.98
tpch_q12/datafusion:vortex-file-compressed 386176007 459293251 0.84
tpch_q13/datafusion:vortex-file-compressed 131925367 182514901 0.72
tpch_q14/datafusion:vortex-file-compressed 249609730 262563002 0.95
tpch_q15/datafusion:vortex-file-compressed 439564528 463528331 0.95
tpch_q16/datafusion:vortex-file-compressed 173190769 182596135 0.95
tpch_q17/datafusion:vortex-file-compressed 327610038 337607869 0.97
tpch_q18/datafusion:vortex-file-compressed 321757383 299730652 1.07
tpch_q19/datafusion:vortex-file-compressed 438623171 484156207 0.91
tpch_q20/datafusion:vortex-file-compressed 451711490 470900931 0.96
tpch_q21/datafusion:vortex-file-compressed 594209135 603160570 0.99
tpch_q22/datafusion:vortex-file-compressed 104236904 146331143 0.71
datafusion / vortex-compact (0.954x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 253954881 249743407 1.02
tpch_q02/datafusion:vortex-compact 412290356 398656342 1.03
tpch_q03/datafusion:vortex-compact 344016775 361937440 0.95
tpch_q04/datafusion:vortex-compact 219931244 220961667 1.00
tpch_q05/datafusion:vortex-compact 354373806 355965828 1.00
tpch_q06/datafusion:vortex-compact 324084171 307988549 1.05
tpch_q07/datafusion:vortex-compact 370611995 413674412 0.90
tpch_q08/datafusion:vortex-compact 487905111 497646709 0.98
tpch_q09/datafusion:vortex-compact 373233661 387252739 0.96
tpch_q10/datafusion:vortex-compact 399651775 433537303 0.92
tpch_q11/datafusion:vortex-compact 232751597 285456366 0.82
tpch_q12/datafusion:vortex-compact 430795168 397172705 1.08
tpch_q13/datafusion:vortex-compact 128765245 165447349 0.78
tpch_q14/datafusion:vortex-compact 262295957 252121536 1.04
tpch_q15/datafusion:vortex-compact 478498174 448452808 1.07
tpch_q16/datafusion:vortex-compact 183230611 245478137 0.75
tpch_q17/datafusion:vortex-compact 360082051 354241432 1.02
tpch_q18/datafusion:vortex-compact 266149619 258498330 1.03
tpch_q19/datafusion:vortex-compact 458557548 446104365 1.03
tpch_q20/datafusion:vortex-compact 447997834 456337537 0.98
tpch_q21/datafusion:vortex-compact 518629725 512740011 1.01
tpch_q22/datafusion:vortex-compact 102056059 143956962 0.71
datafusion / parquet (0.932x ➖, 1↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 190721758 264295620 0.72
tpch_q02/datafusion:parquet 411563482 422270040 0.97
tpch_q03/datafusion:parquet 290205920 332126958 0.87
tpch_q04/datafusion:parquet 🚀 140061235 205924350 0.68
tpch_q05/datafusion:parquet 457936677 486504981 0.94
tpch_q06/datafusion:parquet 133982647 133496082 1.00
tpch_q07/datafusion:parquet 429915852 475686808 0.90
tpch_q08/datafusion:parquet 518814942 551642068 0.94
tpch_q09/datafusion:parquet 444107671 512615663 0.87
tpch_q10/datafusion:parquet 467384618 534248762 0.87
tpch_q11/datafusion:parquet 325096596 319865172 1.02
tpch_q12/datafusion:parquet 217215704 231962442 0.94
tpch_q13/datafusion:parquet 421226635 453490160 0.93
tpch_q14/datafusion:parquet 198076637 181727129 1.09
tpch_q15/datafusion:parquet 276865061 302029289 0.92
tpch_q16/datafusion:parquet 172403993 181514505 0.95
tpch_q17/datafusion:parquet 365594922 425911093 0.86
tpch_q18/datafusion:parquet 431398965 462442753 0.93
tpch_q19/datafusion:parquet 291419669 299706888 0.97
tpch_q20/datafusion:parquet 303376089 312800321 0.97
tpch_q21/datafusion:parquet 460423351 484779948 0.95
tpch_q22/datafusion:parquet 🚨 145338427 105564758 1.38
duckdb / vortex-file-compressed (0.950x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 266340058 262999170 1.01
tpch_q02/duckdb:vortex-file-compressed 914734865 976054909 0.94
tpch_q03/duckdb:vortex-file-compressed 601892650 628280566 0.96
tpch_q04/duckdb:vortex-file-compressed 370781738 355680270 1.04
tpch_q05/duckdb:vortex-file-compressed 873412703 957134907 0.91
tpch_q06/duckdb:vortex-file-compressed 388067945 431604986 0.90
tpch_q07/duckdb:vortex-file-compressed 745965917 820085130 0.91
tpch_q08/duckdb:vortex-file-compressed 976937965 1006732996 0.97
tpch_q09/duckdb:vortex-file-compressed 807259230 910420436 0.89
tpch_q10/duckdb:vortex-file-compressed 762802143 719079598 1.06
tpch_q11/duckdb:vortex-file-compressed 445257768 503986303 0.88
tpch_q12/duckdb:vortex-file-compressed 422972326 496018488 0.85
tpch_q13/duckdb:vortex-file-compressed 493845187 467362216 1.06
tpch_q14/duckdb:vortex-file-compressed 459940277 471382958 0.98
tpch_q15/duckdb:vortex-file-compressed 310487070 281293493 1.10
tpch_q16/duckdb:vortex-file-compressed 363631477 356574267 1.02
tpch_q17/duckdb:vortex-file-compressed 643739856 724040783 0.89
tpch_q18/duckdb:vortex-file-compressed 530172732 596078187 0.89
tpch_q19/duckdb:vortex-file-compressed 430758224 489240107 0.88
tpch_q20/duckdb:vortex-file-compressed 754334650 815356622 0.93
tpch_q21/duckdb:vortex-file-compressed 1037873932 1123264737 0.92
tpch_q22/duckdb:vortex-file-compressed 357785523 371317560 0.96
duckdb / vortex-compact (0.955x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 263369435 270046918 0.98
tpch_q02/duckdb:vortex-compact 880703996 939708970 0.94
tpch_q03/duckdb:vortex-compact 597101106 568142340 1.05
tpch_q04/duckdb:vortex-compact 321053100 356019300 0.90
tpch_q05/duckdb:vortex-compact 815982352 816560584 1.00
tpch_q06/duckdb:vortex-compact 372809268 372354022 1.00
tpch_q07/duckdb:vortex-compact 766125020 811960900 0.94
tpch_q08/duckdb:vortex-compact 879093215 897663632 0.98
tpch_q09/duckdb:vortex-compact 813357180 893247952 0.91
tpch_q10/duckdb:vortex-compact 639584891 677710192 0.94
tpch_q11/duckdb:vortex-compact 437675791 513769907 0.85
tpch_q12/duckdb:vortex-compact 444734702 450772177 0.99
tpch_q13/duckdb:vortex-compact 409260356 426138566 0.96
tpch_q14/duckdb:vortex-compact 418723171 464277076 0.90
tpch_q15/duckdb:vortex-compact 258913228 298552427 0.87
tpch_q16/duckdb:vortex-compact 354838235 355072658 1.00
tpch_q17/duckdb:vortex-compact 576295372 690412794 0.83
tpch_q18/duckdb:vortex-compact 508652035 475198011 1.07
tpch_q19/duckdb:vortex-compact 428275705 393612446 1.09
tpch_q20/duckdb:vortex-compact 770136104 813803150 0.95
tpch_q21/duckdb:vortex-compact 992527606 1054991387 0.94
tpch_q22/duckdb:vortex-compact 351291720 367706989 0.96
duckdb / parquet (0.950x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 427791074 443370002 0.96
tpch_q02/duckdb:parquet 996164314 1118107778 0.89
tpch_q03/duckdb:parquet 878559236 984115102 0.89
tpch_q04/duckdb:parquet 637960082 612665044 1.04
tpch_q05/duckdb:parquet 1165588295 1142266941 1.02
tpch_q06/duckdb:parquet 403242735 442159480 0.91
tpch_q07/duckdb:parquet 1109836039 1146005918 0.97
tpch_q08/duckdb:parquet 1362599330 1434415637 0.95
tpch_q09/duckdb:parquet 1280024459 1344710192 0.95
tpch_q10/duckdb:parquet 1192882731 1217043419 0.98
tpch_q11/duckdb:parquet 718866253 733669750 0.98
tpch_q12/duckdb:parquet 654583289 632279942 1.04
tpch_q13/duckdb:parquet 875071789 876206941 1.00
tpch_q14/duckdb:parquet 591827696 686712489 0.86
tpch_q15/duckdb:parquet 507751624 590534685 0.86
tpch_q16/duckdb:parquet 603157253 657739526 0.92
tpch_q17/duckdb:parquet 740298417 741751952 1.00
tpch_q18/duckdb:parquet 831684463 820390237 1.01
tpch_q19/duckdb:parquet 726277883 725067452 1.00
tpch_q20/duckdb:parquet 995647531 1092126958 0.91
tpch_q21/duckdb:parquet 996499086 1083782968 0.92
tpch_q22/duckdb:parquet 506583272 586302784 0.86
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +1.7% -16.6% +21.9% +59.0% ➖ noise
1 datafusion:vortex-file-compressed -15.1% -16.6% +1.7% +87.7% ➖ noise
1 duckdb:vortex-compact -2.5% -16.6% +16.9% +32.7% ➖ noise
1 duckdb:vortex-file-compressed +1.3% -16.6% +21.4% +30.0% ➖ noise
2 datafusion:vortex-compact +3.4% -6.8% +11.0% +30.0% ➖ noise
2 datafusion:vortex-file-compressed -7.1% -6.8% -0.3% +30.0% ➖ noise
2 duckdb:vortex-compact -6.3% -6.8% +0.6% +30.0% ➖ noise
2 duckdb:vortex-file-compressed -6.3% -6.8% +0.6% +30.0% ➖ noise
3 datafusion:vortex-compact -5.0% -11.7% +7.6% +35.6% ➖ noise
3 datafusion:vortex-file-compressed -8.7% -11.7% +3.4% +46.1% ➖ noise
3 duckdb:vortex-compact +5.1% -11.7% +19.0% +30.0% ➖ noise
3 duckdb:vortex-file-compressed -4.2% -11.7% +8.5% +30.0% ➖ noise
4 datafusion:vortex-compact -0.5% -15.8% +18.3% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -9.8% -15.8% +7.1% +30.0% ➖ noise
4 duckdb:vortex-compact -9.8% -15.8% +7.2% +30.0% ➖ noise
4 duckdb:vortex-file-compressed +4.2% -15.8% +23.9% +30.0% ➖ noise
5 datafusion:vortex-compact -0.4% -2.0% +1.6% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -9.9% -2.0% -8.0% +30.0% ➖ noise
5 duckdb:vortex-compact -0.1% -2.0% +2.0% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -8.7% -2.0% -6.9% +30.0% ➖ noise
6 datafusion:vortex-compact +5.2% -4.3% +10.0% +30.0% ➖ noise
6 datafusion:vortex-file-compressed +1.1% -4.3% +5.7% +30.0% ➖ noise
6 duckdb:vortex-compact +0.1% -4.3% +4.7% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -10.1% -4.3% -6.0% +30.0% ➖ noise
7 datafusion:vortex-compact -10.4% -6.4% -4.2% +30.0% ➖ noise
7 datafusion:vortex-file-compressed -12.1% -6.4% -6.1% +30.0% ➖ noise
7 duckdb:vortex-compact -5.6% -6.4% +0.9% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -9.0% -6.4% -2.8% +30.0% ➖ noise
8 datafusion:vortex-compact -2.0% -5.5% +3.7% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -10.0% -5.5% -4.8% +30.0% ➖ noise
8 duckdb:vortex-compact -2.1% -5.5% +3.6% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -3.0% -5.5% +2.7% +30.0% ➖ noise
9 datafusion:vortex-compact -3.6% -9.2% +6.1% +30.0% ➖ noise
9 datafusion:vortex-file-compressed -14.7% -9.2% -6.1% +30.0% ➖ noise
9 duckdb:vortex-compact -8.9% -9.2% +0.3% +30.0% ➖ noise
9 duckdb:vortex-file-compressed -11.3% -9.2% -2.4% +30.0% ➖ noise
10 datafusion:vortex-compact -7.8% -7.4% -0.4% +30.0% ➖ noise
10 datafusion:vortex-file-compressed +10.8% -7.4% +19.6% +30.0% ➖ noise
10 duckdb:vortex-compact -5.6% -7.4% +1.9% +30.0% ➖ noise
10 duckdb:vortex-file-compressed +6.1% -7.4% +14.6% +30.0% ➖ noise
11 datafusion:vortex-compact -18.5% -0.2% -18.3% +30.0% ➖ noise
11 datafusion:vortex-file-compressed -1.6% -0.2% -1.4% +30.0% ➖ noise
11 duckdb:vortex-compact -14.8% -0.2% -14.6% +30.0% ➖ noise
11 duckdb:vortex-file-compressed -11.7% -0.2% -11.5% +30.0% ➖ noise
12 datafusion:vortex-compact +8.5% -1.5% +10.2% +37.7% ➖ noise
12 datafusion:vortex-file-compressed -15.9% -1.5% -14.6% +30.0% ➖ noise
12 duckdb:vortex-compact -1.3% -1.5% +0.2% +30.0% ➖ noise
12 duckdb:vortex-file-compressed -14.7% -1.5% -13.4% +30.0% ➖ noise
13 datafusion:vortex-compact -22.2% -3.7% -19.2% +56.1% ➖ noise
13 datafusion:vortex-file-compressed -27.7% -3.7% -25.0% +51.0% ➖ noise
13 duckdb:vortex-compact -4.0% -3.7% -0.3% +30.0% ➖ noise
13 duckdb:vortex-file-compressed +5.7% -3.7% +9.7% +30.0% ➖ noise
14 datafusion:vortex-compact +4.0% -3.1% +7.3% +37.7% ➖ noise
14 datafusion:vortex-file-compressed -4.9% -3.1% -1.9% +30.0% ➖ noise
14 duckdb:vortex-compact -9.8% -3.1% -6.9% +30.0% ➖ noise
14 duckdb:vortex-file-compressed -2.4% -3.1% +0.7% +30.0% ➖ noise
15 datafusion:vortex-compact +6.7% -11.2% +20.2% +30.0% ➖ noise
15 datafusion:vortex-file-compressed -5.2% -11.2% +6.8% +30.0% ➖ noise
15 duckdb:vortex-compact -13.3% -11.2% -2.3% +30.0% ➖ noise
15 duckdb:vortex-file-compressed +10.4% -11.2% +24.3% +30.0% ➖ noise
16 datafusion:vortex-compact -25.4% -6.7% -20.0% +30.0% ➖ noise
16 datafusion:vortex-file-compressed -5.2% -6.7% +1.6% +30.0% ➖ noise
16 duckdb:vortex-compact -0.1% -6.7% +7.1% +30.0% ➖ noise
16 duckdb:vortex-file-compressed +2.0% -6.7% +9.3% +30.0% ➖ noise
17 datafusion:vortex-compact +1.6% -7.4% +9.8% +30.0% ➖ noise
17 datafusion:vortex-file-compressed -3.0% -7.4% +4.8% +30.0% ➖ noise
17 duckdb:vortex-compact -16.5% -7.4% -9.8% +30.0% ➖ noise
17 duckdb:vortex-file-compressed -11.1% -7.4% -3.9% +30.0% ➖ noise
18 datafusion:vortex-compact +3.0% -2.8% +5.9% +30.0% ➖ noise
18 datafusion:vortex-file-compressed +7.3% -2.8% +10.4% +39.1% ➖ noise
18 duckdb:vortex-compact +7.0% -2.8% +10.1% +30.0% ➖ noise
18 duckdb:vortex-file-compressed -11.1% -2.8% -8.5% +30.0% ➖ noise
19 datafusion:vortex-compact +2.8% -1.3% +4.2% +30.0% ➖ noise
19 datafusion:vortex-file-compressed -9.4% -1.3% -8.2% +30.0% ➖ noise
19 duckdb:vortex-compact +8.8% -1.3% +10.3% +30.0% ➖ noise
19 duckdb:vortex-file-compressed -12.0% -1.3% -10.8% +30.0% ➖ noise
20 datafusion:vortex-compact -1.8% -6.0% +4.4% +30.0% ➖ noise
20 datafusion:vortex-file-compressed -4.1% -6.0% +2.0% +30.0% ➖ noise
20 duckdb:vortex-compact -5.4% -6.0% +0.6% +30.0% ➖ noise
20 duckdb:vortex-file-compressed -7.5% -6.0% -1.6% +30.0% ➖ noise
21 datafusion:vortex-compact +1.1% -6.6% +8.2% +30.0% ➖ noise
21 datafusion:vortex-file-compressed -1.5% -6.6% +5.4% +30.0% ➖ noise
21 duckdb:vortex-compact -5.9% -6.6% +0.7% +30.0% ➖ noise
21 duckdb:vortex-file-compressed -7.6% -6.6% -1.1% +30.0% ➖ noise
22 datafusion:vortex-compact -29.1% +9.1% -35.0% +30.0% ✅ faster
22 datafusion:vortex-file-compressed -28.8% +9.1% -34.7% +46.4% ✅ faster
22 duckdb:vortex-compact -4.5% +9.1% -12.4% +30.0% ➖ noise
22 duckdb:vortex-file-compressed -3.6% +9.1% -11.7% +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: -1.3%
Vortex (geomean): 0.956x ➖
Parquet (geomean): 0.969x ➖
Shifts: Parquet (control) -3.1% · Median polish -2.6%


datafusion / vortex-file-compressed (0.875x ➖, 1↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 45006130 35324943 1.27
fineweb_q01/datafusion:vortex-file-compressed 🚀 410350199 638817689 0.64
fineweb_q02/datafusion:vortex-file-compressed 456620728 487193797 0.94
fineweb_q03/datafusion:vortex-file-compressed 1144746566 1388855878 0.82
fineweb_q04/datafusion:vortex-file-compressed 1159964155 1363745271 0.85
fineweb_q05/datafusion:vortex-file-compressed 1141616254 1364080525 0.84
fineweb_q06/datafusion:vortex-file-compressed 1295725298 1557741489 0.83
fineweb_q07/datafusion:vortex-file-compressed 1143440523 1318512320 0.87
fineweb_q08/datafusion:vortex-file-compressed 463808740 500036267 0.93
datafusion / vortex-compact (1.055x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 34473087 37845516 0.91
fineweb_q01/datafusion:vortex-compact 478077730 562429619 0.85
fineweb_q02/datafusion:vortex-compact 497007888 587356013 0.85
fineweb_q03/datafusion:vortex-compact 1672462741 1319717153 1.27
fineweb_q04/datafusion:vortex-compact 1885856378 1525458593 1.24
fineweb_q05/datafusion:vortex-compact 1610675961 1355639271 1.19
fineweb_q06/datafusion:vortex-compact 1427389232 1268979389 1.12
fineweb_q07/datafusion:vortex-compact 1246626926 1100781017 1.13
fineweb_q08/datafusion:vortex-compact 376859816 362662825 1.04
datafusion / parquet (0.983x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 1116417250 1037999623 1.08
fineweb_q01/datafusion:parquet 1706587342 1834962339 0.93
fineweb_q02/datafusion:parquet 1695518101 1745396710 0.97
fineweb_q03/datafusion:parquet 1622567443 1713005358 0.95
fineweb_q04/datafusion:parquet 1934210804 1748614275 1.11
fineweb_q05/datafusion:parquet 1736807656 1842782175 0.94
fineweb_q06/datafusion:parquet 1755043997 1824987256 0.96
fineweb_q07/datafusion:parquet 1770709233 1809480611 0.98
fineweb_q08/datafusion:parquet 1808928570 1899429403 0.95
duckdb / vortex-file-compressed (0.887x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 76568115 78391782 0.98
fineweb_q01/duckdb:vortex-file-compressed 473865126 591673606 0.80
fineweb_q02/duckdb:vortex-file-compressed 549813840 458612376 1.20
fineweb_q03/duckdb:vortex-file-compressed 1359799872 1518240612 0.90
fineweb_q04/duckdb:vortex-file-compressed 1357827289 1607883753 0.84
fineweb_q05/duckdb:vortex-file-compressed 1287597235 1484017777 0.87
fineweb_q06/duckdb:vortex-file-compressed 1328320096 1641205109 0.81
fineweb_q07/duckdb:vortex-file-compressed 1264950897 1449626093 0.87
fineweb_q08/duckdb:vortex-file-compressed 550914422 702475641 0.78
duckdb / vortex-compact (1.020x ➖, 1↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 🚀 49914032 79382246 0.63
fineweb_q01/duckdb:vortex-compact 585366860 532588029 1.10
fineweb_q02/duckdb:vortex-compact 565760462 588597229 0.96
fineweb_q03/duckdb:vortex-compact 1895310986 1633575416 1.16
fineweb_q04/duckdb:vortex-compact 2104788810 1704170762 1.24
fineweb_q05/duckdb:vortex-compact 1856587643 1475896854 1.26
fineweb_q06/duckdb:vortex-compact 1578323869 1587668747 0.99
fineweb_q07/duckdb:vortex-compact 1342809293 1395290109 0.96
fineweb_q08/duckdb:vortex-compact 468320155 449138387 1.04
duckdb / parquet (0.954x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 1062173721 1126631879 0.94
fineweb_q01/duckdb:parquet 1256955770 1325675237 0.95
fineweb_q02/duckdb:parquet 1366565408 1303156171 1.05
fineweb_q03/duckdb:parquet 3575425916 3592713315 1.00
fineweb_q04/duckdb:parquet 1759430149 2041870168 0.86
fineweb_q05/duckdb:parquet 2004426221 2125802839 0.94
fineweb_q06/duckdb:parquet 4110242413 4188417082 0.98
fineweb_q07/duckdb:parquet 2488777571 2748580561 0.91
fineweb_q08/duckdb:parquet 1078818322 1108509886 0.97
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact -8.9% +0.7% -9.5% +146.9% ➖ noise
0 datafusion:vortex-file-compressed +27.4% +0.7% +26.5% +183.6% ➖ noise
0 duckdb:vortex-compact -37.1% +0.7% -37.6% +57.1% ✅ faster
0 duckdb:vortex-file-compressed -2.3% +0.7% -3.0% +30.0% ➖ noise
1 datafusion:vortex-compact -15.0% -6.1% -9.5% +40.5% ➖ noise
1 datafusion:vortex-file-compressed -35.8% -6.1% -31.6% +52.6% ➖ noise
1 duckdb:vortex-compact +9.9% -6.1% +17.0% +30.0% ➖ noise
1 duckdb:vortex-file-compressed -19.9% -6.1% -14.7% +30.0% ➖ noise
2 datafusion:vortex-compact -15.4% +0.9% -16.2% +44.0% ➖ noise
2 datafusion:vortex-file-compressed -6.3% +0.9% -7.1% +39.4% ➖ noise
2 duckdb:vortex-compact -3.9% +0.9% -4.8% +30.0% ➖ noise
2 duckdb:vortex-file-compressed +19.9% +0.9% +18.8% +37.4% ➖ noise
3 datafusion:vortex-compact +26.7% -2.9% +30.5% +30.0% 🚨 regression
3 datafusion:vortex-file-compressed -17.6% -2.9% -15.1% +30.0% ➖ noise
3 duckdb:vortex-compact +16.0% -2.9% +19.5% +30.0% ➖ noise
3 duckdb:vortex-file-compressed -10.4% -2.9% -7.8% +30.0% ➖ noise
4 datafusion:vortex-compact +23.6% -2.4% +26.6% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -14.9% -2.4% -12.9% +30.0% ➖ noise
4 duckdb:vortex-compact +23.5% -2.4% +26.5% +30.0% ➖ noise
4 duckdb:vortex-file-compressed -15.6% -2.4% -13.5% +30.0% ➖ noise
5 datafusion:vortex-compact +18.8% -5.7% +26.0% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -16.3% -5.7% -11.2% +30.0% ➖ noise
5 duckdb:vortex-compact +25.8% -5.7% +33.4% +30.0% 🚨 regression
5 duckdb:vortex-file-compressed -13.2% -5.7% -8.0% +30.0% ➖ noise
6 datafusion:vortex-compact +12.5% -2.9% +15.8% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -16.8% -2.9% -14.4% +30.0% ➖ noise
6 duckdb:vortex-compact -0.6% -2.9% +2.3% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -19.1% -2.9% -16.7% +30.0% ➖ noise
7 datafusion:vortex-compact +13.2% -5.9% +20.3% +30.0% ➖ noise
7 datafusion:vortex-file-compressed -13.3% -5.9% -7.9% +30.0% ➖ noise
7 duckdb:vortex-compact -3.8% -5.9% +2.2% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -12.7% -5.9% -7.3% +30.0% ➖ noise
8 datafusion:vortex-compact +3.9% -3.7% +7.9% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -7.2% -3.7% -3.7% +30.0% ➖ noise
8 duckdb:vortex-compact +4.3% -3.7% +8.3% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -21.6% -3.7% -18.5% +30.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: FineWeb NVMe

Verdict: No clear signal (low confidence)
Attributed Vortex impact: +16.5%
Vortex (geomean): 1.146x ❌
Parquet (geomean): 0.983x ➖
Shifts: Parquet (control) -1.7% · Median polish +0.7%


datafusion / vortex-file-compressed (1.320x ❌, 1↑ 5↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 5076758 5229131 0.97
fineweb_q01/datafusion:vortex-file-compressed 🚨 30701877 20068854 1.53
fineweb_q02/datafusion:vortex-file-compressed 🚨 32832813 23599114 1.39
fineweb_q03/datafusion:vortex-file-compressed 🚨 155756024 83116648 1.87
fineweb_q04/datafusion:vortex-file-compressed 225059944 221109391 1.02
fineweb_q05/datafusion:vortex-file-compressed 212136170 214412376 0.99
fineweb_q06/datafusion:vortex-file-compressed 🚨 101065654 55453355 1.82
fineweb_q07/datafusion:vortex-file-compressed 🚨 107902394 56447747 1.91
fineweb_q08/datafusion:vortex-file-compressed 🚀 19776077 22069564 0.90
datafusion / vortex-compact (1.002x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 5447823 5266142 1.03
fineweb_q01/datafusion:vortex-compact 89471860 89875651 1.00
fineweb_q02/datafusion:vortex-compact 105199364 102931758 1.02
fineweb_q03/datafusion:vortex-compact 853098160 880609223 0.97
fineweb_q04/datafusion:vortex-compact 906558370 904076900 1.00
fineweb_q05/datafusion:vortex-compact 807742056 819001696 0.99
fineweb_q06/datafusion:vortex-compact 462808641 461373613 1.00
fineweb_q07/datafusion:vortex-compact 477693032 471979770 1.01
fineweb_q08/datafusion:vortex-compact 18925094 19043257 0.99
datafusion / parquet (0.981x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 6170481 6541645 0.94
fineweb_q01/datafusion:parquet 279650118 290876767 0.96
fineweb_q02/datafusion:parquet 285958464 295503104 0.97
fineweb_q03/datafusion:parquet 288475481 284229810 1.01
fineweb_q04/datafusion:parquet 297109771 305162155 0.97
fineweb_q05/datafusion:parquet 293255322 294545423 1.00
fineweb_q06/datafusion:parquet 282196922 299229956 0.94
fineweb_q07/datafusion:parquet 296984631 285169339 1.04
fineweb_q08/datafusion:parquet 278686368 282002585 0.99
duckdb / vortex-file-compressed (1.307x ❌, 1↑ 5↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 3028515 3237639 0.94
fineweb_q01/duckdb:vortex-file-compressed 🚨 30798654 21735267 1.42
fineweb_q02/duckdb:vortex-file-compressed 🚨 35318443 25114213 1.41
fineweb_q03/duckdb:vortex-file-compressed 🚨 186907453 117335828 1.59
fineweb_q04/duckdb:vortex-file-compressed 240410640 222231716 1.08
fineweb_q05/duckdb:vortex-file-compressed 218613396 209313305 1.04
fineweb_q06/duckdb:vortex-file-compressed 🚨 103427375 52716817 1.96
fineweb_q07/duckdb:vortex-file-compressed 🚨 106821251 56453624 1.89
fineweb_q08/duckdb:vortex-file-compressed 🚀 20741722 23245189 0.89
duckdb / vortex-compact (0.997x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 3817826 3942487 0.97
fineweb_q01/duckdb:vortex-compact 106611137 104562960 1.02
fineweb_q02/duckdb:vortex-compact 116064550 113041129 1.03
fineweb_q03/duckdb:vortex-compact 853879008 869211554 0.98
fineweb_q04/duckdb:vortex-compact 899679873 919234196 0.98
fineweb_q05/duckdb:vortex-compact 800815052 809911167 0.99
fineweb_q06/duckdb:vortex-compact 450678108 463281045 0.97
fineweb_q07/duckdb:vortex-compact 477250744 475069532 1.00
fineweb_q08/duckdb:vortex-compact 20504841 19909330 1.03
duckdb / parquet (0.986x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 28082093 27440877 1.02
fineweb_q01/duckdb:parquet 82124808 86961457 0.94
fineweb_q02/duckdb:parquet 83684215 83320111 1.00
fineweb_q03/duckdb:parquet 306904256 311155764 0.99
fineweb_q04/duckdb:parquet 437567995 441139504 0.99
fineweb_q05/duckdb:parquet 408793245 412454833 0.99
fineweb_q06/duckdb:parquet 197808814 198870072 0.99
fineweb_q07/duckdb:parquet 208219775 209759133 0.99
fineweb_q08/duckdb:parquet 32027487 33811651 0.95
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact +3.4% -1.8% +5.3% +62.8% ➖ noise
0 datafusion:vortex-file-compressed -2.9% -1.8% -1.2% +51.5% ➖ noise
0 duckdb:vortex-compact -3.2% -1.8% -1.4% +49.8% ➖ noise
0 duckdb:vortex-file-compressed -6.5% -1.8% -4.8% +91.3% ➖ noise
1 datafusion:vortex-compact -0.4% -4.7% +4.5% +24.3% ➖ noise
1 datafusion:vortex-file-compressed +53.0% -4.7% +60.6% +34.9% 🚨 regression
1 duckdb:vortex-compact +2.0% -4.7% +7.0% +19.6% ➖ noise
1 duckdb:vortex-file-compressed +41.7% -4.7% +48.7% +67.6% ➖ noise
2 datafusion:vortex-compact +2.2% -1.4% +3.7% +12.7% ➖ noise
2 datafusion:vortex-file-compressed +39.1% -1.4% +41.1% +13.5% 🚨 regression
2 duckdb:vortex-compact +2.7% -1.4% +4.1% +13.2% ➖ noise
2 duckdb:vortex-file-compressed +40.6% -1.4% +42.6% +11.0% 🚨 regression
3 datafusion:vortex-compact -3.1% +0.1% -3.2% +10.0% ➖ noise
3 datafusion:vortex-file-compressed +87.4% +0.1% +87.3% +10.1% 🚨 regression
3 duckdb:vortex-compact -1.8% +0.1% -1.8% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +59.3% +0.1% +59.2% +26.3% 🚨 regression
4 datafusion:vortex-compact +0.3% -1.7% +2.0% +10.0% ➖ noise
4 datafusion:vortex-file-compressed +1.8% -1.7% +3.6% +10.0% ➖ noise
4 duckdb:vortex-compact -2.1% -1.7% -0.4% +10.0% ➖ noise
4 duckdb:vortex-file-compressed +8.2% -1.7% +10.1% +10.0% 🚨 regression
5 datafusion:vortex-compact -1.4% -0.7% -0.7% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -1.1% -0.7% -0.4% +10.0% ➖ noise
5 duckdb:vortex-compact -1.1% -0.7% -0.5% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +4.4% -0.7% +5.1% +10.0% ➖ noise
6 datafusion:vortex-compact +0.3% -3.1% +3.6% +10.0% ➖ noise
6 datafusion:vortex-file-compressed +82.3% -3.1% +88.2% +10.0% 🚨 regression
6 duckdb:vortex-compact -2.7% -3.1% +0.4% +10.0% ➖ noise
6 duckdb:vortex-file-compressed +96.2% -3.1% +102.6% +10.0% 🚨 regression
7 datafusion:vortex-compact +1.2% +1.7% -0.5% +10.0% ➖ noise
7 datafusion:vortex-file-compressed +91.2% +1.7% +88.0% +11.7% 🚨 regression
7 duckdb:vortex-compact +0.5% +1.7% -1.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed +89.2% +1.7% +86.1% +17.0% 🚨 regression
8 datafusion:vortex-compact -0.6% -3.2% +2.7% +19.9% ➖ noise
8 datafusion:vortex-file-compressed -10.4% -3.2% -7.4% +10.0% ➖ noise
8 duckdb:vortex-compact +3.0% -3.2% +6.4% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -10.8% -3.2% -7.8% +15.5% ➖ noise

@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 (low confidence)
Attributed Vortex impact: +1.1%
Vortex (geomean): 0.991x ➖
Parquet (geomean): 0.980x ➖
Shifts: Parquet (control) -2.0% · Median polish -1.2%


datafusion / vortex-file-compressed (0.912x ➖, 1↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 647090810 675369137 0.96
tpch_q02/datafusion:vortex-file-compressed 673877576 735360249 0.92
tpch_q03/datafusion:vortex-file-compressed 676698383 878468010 0.77
tpch_q04/datafusion:vortex-file-compressed 525363439 635075986 0.83
tpch_q05/datafusion:vortex-file-compressed 997329103 1018052439 0.98
tpch_q06/datafusion:vortex-file-compressed 627968636 668367646 0.94
tpch_q07/datafusion:vortex-file-compressed 922657618 1008858135 0.91
tpch_q08/datafusion:vortex-file-compressed 1087507859 1182845761 0.92
tpch_q09/datafusion:vortex-file-compressed 1385325786 1359512797 1.02
tpch_q10/datafusion:vortex-file-compressed 843573334 1011665449 0.83
tpch_q11/datafusion:vortex-file-compressed 447815583 484766187 0.92
tpch_q12/datafusion:vortex-file-compressed 849694194 905031659 0.94
tpch_q13/datafusion:vortex-file-compressed 383991212 445360930 0.86
tpch_q14/datafusion:vortex-file-compressed 797148801 621224337 1.28
tpch_q15/datafusion:vortex-file-compressed 1114546184 1062880962 1.05
tpch_q16/datafusion:vortex-file-compressed 353157942 388426110 0.91
tpch_q17/datafusion:vortex-file-compressed 1105763998 1142053454 0.97
tpch_q18/datafusion:vortex-file-compressed 1231532005 1295182013 0.95
tpch_q19/datafusion:vortex-file-compressed 750642162 859169749 0.87
tpch_q20/datafusion:vortex-file-compressed 982251544 1039365558 0.95
tpch_q21/datafusion:vortex-file-compressed 1611144042 1731434616 0.93
tpch_q22/datafusion:vortex-file-compressed 🚀 328190917 591744475 0.55
datafusion / vortex-compact (0.987x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 682956294 669547955 1.02
tpch_q02/datafusion:vortex-compact 748433912 756554465 0.99
tpch_q03/datafusion:vortex-compact 696729983 686680360 1.01
tpch_q04/datafusion:vortex-compact 533708400 537506857 0.99
tpch_q05/datafusion:vortex-compact 872447251 852883362 1.02
tpch_q06/datafusion:vortex-compact 641920858 646289557 0.99
tpch_q07/datafusion:vortex-compact 896302393 986023974 0.91
tpch_q08/datafusion:vortex-compact 990454325 1100732635 0.90
tpch_q09/datafusion:vortex-compact 1100923423 1173678949 0.94
tpch_q10/datafusion:vortex-compact 830995340 968807342 0.86
tpch_q11/datafusion:vortex-compact 380029057 366279389 1.04
tpch_q12/datafusion:vortex-compact 744894635 799753502 0.93
tpch_q13/datafusion:vortex-compact 402726098 413143752 0.97
tpch_q14/datafusion:vortex-compact 563461489 692085908 0.81
tpch_q15/datafusion:vortex-compact 1198520431 1086522159 1.10
tpch_q16/datafusion:vortex-compact 412461898 320187515 1.29
tpch_q17/datafusion:vortex-compact 1168327249 1138134139 1.03
tpch_q18/datafusion:vortex-compact 1055656794 1047149556 1.01
tpch_q19/datafusion:vortex-compact 759291011 742772576 1.02
tpch_q20/datafusion:vortex-compact 823734006 822629053 1.00
tpch_q21/datafusion:vortex-compact 1332966710 1344680169 0.99
tpch_q22/datafusion:vortex-compact 333997581 344192770 0.97
datafusion / parquet (0.969x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 808831442 825025393 0.98
tpch_q02/datafusion:parquet 782767736 868316207 0.90
tpch_q03/datafusion:parquet 904496499 948160824 0.95
tpch_q04/datafusion:parquet 481329288 493169115 0.98
tpch_q05/datafusion:parquet 1136330182 1124316674 1.01
tpch_q06/datafusion:parquet 510658576 523287999 0.98
tpch_q07/datafusion:parquet 1237838776 1330032722 0.93
tpch_q08/datafusion:parquet 1736132168 1605914013 1.08
tpch_q09/datafusion:parquet 1625019041 1741698236 0.93
tpch_q10/datafusion:parquet 1899572296 1914466737 0.99
tpch_q11/datafusion:parquet 454475638 489056672 0.93
tpch_q12/datafusion:parquet 622737975 624593641 1.00
tpch_q13/datafusion:parquet 672285864 679151290 0.99
tpch_q14/datafusion:parquet 738217614 757454404 0.97
tpch_q15/datafusion:parquet 1236332771 1229970320 1.01
tpch_q16/datafusion:parquet 312234408 331950561 0.94
tpch_q17/datafusion:parquet 1270426868 1271240929 1.00
tpch_q18/datafusion:parquet 1423735640 1468339885 0.97
tpch_q19/datafusion:parquet 837496353 875967659 0.96
tpch_q20/datafusion:parquet 1050065555 1151929297 0.91
tpch_q21/datafusion:parquet 1609625200 1726042816 0.93
tpch_q22/datafusion:parquet 668079941 668774005 1.00
duckdb / vortex-file-compressed (1.016x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 617053770 628698145 0.98
tpch_q02/duckdb:vortex-file-compressed 1225606136 1148707419 1.07
tpch_q03/duckdb:vortex-file-compressed 939315512 925872418 1.01
tpch_q04/duckdb:vortex-file-compressed 636958436 667169291 0.95
tpch_q05/duckdb:vortex-file-compressed 1156235067 1160873624 1.00
tpch_q06/duckdb:vortex-file-compressed 862017129 771449193 1.12
tpch_q07/duckdb:vortex-file-compressed 1214019746 1169511093 1.04
tpch_q08/duckdb:vortex-file-compressed 1468724757 1480061591 0.99
tpch_q09/duckdb:vortex-file-compressed 1470907805 1479035337 0.99
tpch_q10/duckdb:vortex-file-compressed 1209854129 1154055401 1.05
tpch_q11/duckdb:vortex-file-compressed 653303394 642604532 1.02
tpch_q12/duckdb:vortex-file-compressed 722825666 740732848 0.98
tpch_q13/duckdb:vortex-file-compressed 826669906 902505346 0.92
tpch_q14/duckdb:vortex-file-compressed 833420557 840388889 0.99
tpch_q15/duckdb:vortex-file-compressed 533080501 516924422 1.03
tpch_q16/duckdb:vortex-file-compressed 522446226 499505686 1.05
tpch_q17/duckdb:vortex-file-compressed 959233753 973096658 0.99
tpch_q18/duckdb:vortex-file-compressed 894447360 913326015 0.98
tpch_q19/duckdb:vortex-file-compressed 845917360 745064446 1.14
tpch_q20/duckdb:vortex-file-compressed 1360997764 1161312077 1.17
tpch_q21/duckdb:vortex-file-compressed 1890053347 1909969493 0.99
tpch_q22/duckdb:vortex-file-compressed 619645902 655083381 0.95
duckdb / vortex-compact (1.054x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 568845252 603705755 0.94
tpch_q02/duckdb:vortex-compact 1080827354 1047671315 1.03
tpch_q03/duckdb:vortex-compact 863670189 839859870 1.03
tpch_q04/duckdb:vortex-compact 505229196 478468070 1.06
tpch_q05/duckdb:vortex-compact 1098952247 1018787515 1.08
tpch_q06/duckdb:vortex-compact 713522097 712185081 1.00
tpch_q07/duckdb:vortex-compact 1079048643 1047153080 1.03
tpch_q08/duckdb:vortex-compact 1438718318 1317199156 1.09
tpch_q09/duckdb:vortex-compact 1375946431 1338679854 1.03
tpch_q10/duckdb:vortex-compact 1057674496 1020744077 1.04
tpch_q11/duckdb:vortex-compact 725683338 625203796 1.16
tpch_q12/duckdb:vortex-compact 710333839 639338936 1.11
tpch_q13/duckdb:vortex-compact 921466072 838118265 1.10
tpch_q14/duckdb:vortex-compact 888334669 824345631 1.08
tpch_q15/duckdb:vortex-compact 584801869 558682075 1.05
tpch_q16/duckdb:vortex-compact 464244482 455646652 1.02
tpch_q17/duckdb:vortex-compact 926560805 854291440 1.08
tpch_q18/duckdb:vortex-compact 790209551 741441255 1.07
tpch_q19/duckdb:vortex-compact 719499704 694111392 1.04
tpch_q20/duckdb:vortex-compact 1180586144 1210803848 0.98
tpch_q21/duckdb:vortex-compact 1709793185 1592935521 1.07
tpch_q22/duckdb:vortex-compact 662131866 584446338 1.13
duckdb / parquet (0.990x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 784399214 793652111 0.99
tpch_q02/duckdb:parquet 1280550272 1343860423 0.95
tpch_q03/duckdb:parquet 1569401081 1550318847 1.01
tpch_q04/duckdb:parquet 873168399 975300187 0.90
tpch_q05/duckdb:parquet 1720132223 1784730476 0.96
tpch_q06/duckdb:parquet 713202042 738758330 0.97
tpch_q07/duckdb:parquet 1676238129 1720864833 0.97
tpch_q08/duckdb:parquet 2194360419 2240782790 0.98
tpch_q09/duckdb:parquet 2391264357 2484877745 0.96
tpch_q10/duckdb:parquet 2842971394 3099987436 0.92
tpch_q11/duckdb:parquet 882219403 1015338126 0.87
tpch_q12/duckdb:parquet 1177806607 1247387859 0.94
tpch_q13/duckdb:parquet 1205711492 1165550559 1.03
tpch_q14/duckdb:parquet 1267304909 1225655931 1.03
tpch_q15/duckdb:parquet 957711622 963819444 0.99
tpch_q16/duckdb:parquet 957646766 855589411 1.12
tpch_q17/duckdb:parquet 1357517137 1384457389 0.98
tpch_q18/duckdb:parquet 1369729329 1422552092 0.96
tpch_q19/duckdb:parquet 1508361097 1501138154 1.00
tpch_q20/duckdb:parquet 2105982738 1858212351 1.13
tpch_q21/duckdb:parquet 1880532491 1809435400 1.04
tpch_q22/duckdb:parquet 1165634961 1050565523 1.11
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +2.0% -1.6% +3.6% +36.7% ➖ noise
1 datafusion:vortex-file-compressed -4.2% -1.6% -2.7% +44.0% ➖ noise
1 duckdb:vortex-compact -5.8% -1.6% -4.3% +30.0% ➖ noise
1 duckdb:vortex-file-compressed -1.9% -1.6% -0.3% +30.0% ➖ noise
2 datafusion:vortex-compact -1.1% -7.3% +6.7% +37.7% ➖ noise
2 datafusion:vortex-file-compressed -8.4% -7.3% -1.1% +31.8% ➖ noise
2 duckdb:vortex-compact +3.2% -7.3% +11.3% +30.0% ➖ noise
2 duckdb:vortex-file-compressed +6.7% -7.3% +15.1% +30.0% ➖ noise
3 datafusion:vortex-compact +1.5% -1.7% +3.3% +49.6% ➖ noise
3 datafusion:vortex-file-compressed -23.0% -1.7% -21.6% +42.6% ➖ noise
3 duckdb:vortex-compact +2.8% -1.7% +4.6% +43.7% ➖ noise
3 duckdb:vortex-file-compressed +1.5% -1.7% +3.2% +33.8% ➖ noise
4 datafusion:vortex-compact -0.7% -6.5% +6.2% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -17.3% -6.5% -11.5% +30.0% ➖ noise
4 duckdb:vortex-compact +5.6% -6.5% +13.0% +30.0% ➖ noise
4 duckdb:vortex-file-compressed -4.5% -6.5% +2.1% +30.0% ➖ noise
5 datafusion:vortex-compact +2.3% -1.3% +3.6% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -2.0% -1.3% -0.7% +30.0% ➖ noise
5 duckdb:vortex-compact +7.9% -1.3% +9.3% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -0.4% -1.3% +0.9% +30.0% ➖ noise
6 datafusion:vortex-compact -0.7% -2.9% +2.3% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -6.0% -2.9% -3.2% +30.0% ➖ noise
6 duckdb:vortex-compact +0.2% -2.9% +3.2% +30.0% ➖ noise
6 duckdb:vortex-file-compressed +11.7% -2.9% +15.1% +30.0% ➖ noise
7 datafusion:vortex-compact -9.1% -4.8% -4.5% +30.0% ➖ noise
7 datafusion:vortex-file-compressed -8.5% -4.8% -3.9% +30.0% ➖ noise
7 duckdb:vortex-compact +3.0% -4.8% +8.2% +30.0% ➖ noise
7 duckdb:vortex-file-compressed +3.8% -4.8% +9.0% +30.0% ➖ noise
8 datafusion:vortex-compact -10.0% +2.9% -12.5% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -8.1% +2.9% -10.6% +30.0% ➖ noise
8 duckdb:vortex-compact +9.2% +2.9% +6.2% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -0.8% +2.9% -3.6% +30.0% ➖ noise
9 datafusion:vortex-compact -6.2% -5.2% -1.0% +30.0% ➖ noise
9 datafusion:vortex-file-compressed +1.9% -5.2% +7.5% +30.0% ➖ noise
9 duckdb:vortex-compact +2.8% -5.2% +8.5% +30.0% ➖ noise
9 duckdb:vortex-file-compressed -0.5% -5.2% +5.0% +30.0% ➖ noise
10 datafusion:vortex-compact -14.2% -4.6% -10.1% +30.0% ➖ noise
10 datafusion:vortex-file-compressed -16.6% -4.6% -12.6% +30.0% ➖ noise
10 duckdb:vortex-compact +3.6% -4.6% +8.6% +30.0% ➖ noise
10 duckdb:vortex-file-compressed +4.8% -4.6% +9.9% +30.0% ➖ noise
11 datafusion:vortex-compact +3.8% -10.1% +15.5% +30.0% ➖ noise
11 datafusion:vortex-file-compressed -7.6% -10.1% +2.8% +30.0% ➖ noise
11 duckdb:vortex-compact +16.1% -10.1% +29.2% +30.0% ➖ noise
11 duckdb:vortex-file-compressed +1.7% -10.1% +13.1% +30.0% ➖ noise
12 datafusion:vortex-compact -6.9% -3.0% -4.0% +30.0% ➖ noise
12 datafusion:vortex-file-compressed -6.1% -3.0% -3.2% +30.0% ➖ noise
12 duckdb:vortex-compact +11.1% -3.0% +14.5% +30.0% ➖ noise
12 duckdb:vortex-file-compressed -2.4% -3.0% +0.6% +30.0% ➖ noise
13 datafusion:vortex-compact -2.5% +1.2% -3.7% +30.0% ➖ noise
13 datafusion:vortex-file-compressed -13.8% +1.2% -14.8% +36.7% ➖ noise
13 duckdb:vortex-compact +9.9% +1.2% +8.6% +40.1% ➖ noise
13 duckdb:vortex-file-compressed -8.4% +1.2% -9.5% +39.9% ➖ noise
14 datafusion:vortex-compact -18.6% +0.4% -18.9% +30.0% ➖ noise
14 datafusion:vortex-file-compressed +28.3% +0.4% +27.8% +77.4% ➖ noise
14 duckdb:vortex-compact +7.8% +0.4% +7.3% +30.0% ➖ noise
14 duckdb:vortex-file-compressed -0.8% +0.4% -1.2% +30.0% ➖ noise
15 datafusion:vortex-compact +10.3% -0.1% +10.4% +30.0% ➖ noise
15 datafusion:vortex-file-compressed +4.9% -0.1% +4.9% +30.0% ➖ noise
15 duckdb:vortex-compact +4.7% -0.1% +4.7% +30.0% ➖ noise
15 duckdb:vortex-file-compressed +3.1% -0.1% +3.2% +30.0% ➖ noise
16 datafusion:vortex-compact +28.8% +2.6% +25.5% +30.0% ➖ noise
16 datafusion:vortex-file-compressed -9.1% +2.6% -11.4% +30.0% ➖ noise
16 duckdb:vortex-compact +1.9% +2.6% -0.7% +30.0% ➖ noise
16 duckdb:vortex-file-compressed +4.6% +2.6% +1.9% +30.0% ➖ noise
17 datafusion:vortex-compact +2.7% -1.0% +3.7% +30.0% ➖ noise
17 datafusion:vortex-file-compressed -3.2% -1.0% -2.2% +30.0% ➖ noise
17 duckdb:vortex-compact +8.5% -1.0% +9.6% +30.0% ➖ noise
17 duckdb:vortex-file-compressed -1.4% -1.0% -0.4% +30.0% ➖ noise
18 datafusion:vortex-compact +0.8% -3.4% +4.3% +30.0% ➖ noise
18 datafusion:vortex-file-compressed -4.9% -3.4% -1.6% +30.0% ➖ noise
18 duckdb:vortex-compact +6.6% -3.4% +10.3% +30.0% ➖ noise
18 duckdb:vortex-file-compressed -2.1% -3.4% +1.4% +30.0% ➖ noise
19 datafusion:vortex-compact +2.2% -2.0% +4.3% +30.0% ➖ noise
19 datafusion:vortex-file-compressed -12.6% -2.0% -10.9% +30.0% ➖ noise
19 duckdb:vortex-compact +3.7% -2.0% +5.8% +30.0% ➖ noise
19 duckdb:vortex-file-compressed +13.5% -2.0% +15.8% +30.0% ➖ noise
20 datafusion:vortex-compact +0.1% +1.6% -1.5% +30.0% ➖ noise
20 datafusion:vortex-file-compressed -5.5% +1.6% -7.0% +30.0% ➖ noise
20 duckdb:vortex-compact -2.5% +1.6% -4.1% +30.0% ➖ noise
20 duckdb:vortex-file-compressed +17.2% +1.6% +15.3% +30.0% ➖ noise
21 datafusion:vortex-compact -0.9% -1.6% +0.7% +30.0% ➖ noise
21 datafusion:vortex-file-compressed -6.9% -1.6% -5.5% +30.0% ➖ noise
21 duckdb:vortex-compact +7.3% -1.6% +9.0% +30.0% ➖ noise
21 duckdb:vortex-file-compressed -1.0% -1.6% +0.5% +30.0% ➖ noise
22 datafusion:vortex-compact -3.0% +5.3% -7.8% +30.0% ➖ noise
22 datafusion:vortex-file-compressed -44.5% +5.3% -47.3% +47.1% ✅ faster
22 duckdb:vortex-compact +13.3% +5.3% +7.6% +30.0% ➖ noise
22 duckdb:vortex-file-compressed -5.4% +5.3% -10.2% +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: -2.0%
Vortex (geomean): 0.962x ➖
Parquet (geomean): 0.984x ➖
Shifts: Parquet (control) -1.6% · Median polish -2.1%


datafusion / vortex-file-compressed (0.891x ✅, 56↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-file-compressed 24669664 26214432 0.94
tpcds_q02/datafusion:vortex-file-compressed 🚀 41260729 47330583 0.87
tpcds_q03/datafusion:vortex-file-compressed 14985373 14958954 1.00
tpcds_q04/datafusion:vortex-file-compressed 246553955 255858435 0.96
tpcds_q05/datafusion:vortex-file-compressed 41165173 44843978 0.92
tpcds_q06/datafusion:vortex-file-compressed 🚀 34012499 59443350 0.57
tpcds_q07/datafusion:vortex-file-compressed 40106221 44168313 0.91
tpcds_q08/datafusion:vortex-file-compressed 28027166 29848682 0.94
tpcds_q09/datafusion:vortex-file-compressed 44029006 44841597 0.98
tpcds_q10/datafusion:vortex-file-compressed 37506048 40851621 0.92
tpcds_q11/datafusion:vortex-file-compressed 127393203 128307356 0.99
tpcds_q12/datafusion:vortex-file-compressed 19943630 20636331 0.97
tpcds_q13/datafusion:vortex-file-compressed 43582984 44891543 0.97
tpcds_q14/datafusion:vortex-file-compressed 171134526 171478839 1.00
tpcds_q15/datafusion:vortex-file-compressed 28360626 29482031 0.96
tpcds_q16/datafusion:vortex-file-compressed 28646106 29333019 0.98
tpcds_q17/datafusion:vortex-file-compressed 62017309 67138003 0.92
tpcds_q18/datafusion:vortex-file-compressed 67999961 69197208 0.98
tpcds_q19/datafusion:vortex-file-compressed 21619504 22022574 0.98
tpcds_q20/datafusion:vortex-file-compressed 🚀 20393289 23414784 0.87
tpcds_q21/datafusion:vortex-file-compressed 34993977 37861821 0.92
tpcds_q22/datafusion:vortex-file-compressed 🚀 113498251 137973377 0.82
tpcds_q23/datafusion:vortex-file-compressed 152996792 169562623 0.90
tpcds_q24/datafusion:vortex-file-compressed 🚀 80879834 91703885 0.88
tpcds_q25/datafusion:vortex-file-compressed 67638612 69936712 0.97
tpcds_q26/datafusion:vortex-file-compressed 32307790 34572426 0.93
tpcds_q27/datafusion:vortex-file-compressed 98198105 102330784 0.96
tpcds_q28/datafusion:vortex-file-compressed 40801646 42362080 0.96
tpcds_q29/datafusion:vortex-file-compressed 60877644 61860157 0.98
tpcds_q30/datafusion:vortex-file-compressed 22868319 23580407 0.97
tpcds_q31/datafusion:vortex-file-compressed 70405286 73564864 0.96
tpcds_q32/datafusion:vortex-file-compressed 🚀 19446658 23312241 0.83
tpcds_q33/datafusion:vortex-file-compressed 29660656 32470088 0.91
tpcds_q34/datafusion:vortex-file-compressed 🚀 23450156 27120981 0.86
tpcds_q35/datafusion:vortex-file-compressed 🚀 43429437 50788028 0.86
tpcds_q36/datafusion:vortex-file-compressed 🚀 56161713 63507375 0.88
tpcds_q37/datafusion:vortex-file-compressed 🚀 24875586 31451706 0.79
tpcds_q38/datafusion:vortex-file-compressed 🚀 41496272 51346301 0.81
tpcds_q39/datafusion:vortex-file-compressed 🚀 103757466 123912410 0.84
tpcds_q40/datafusion:vortex-file-compressed 32035114 35481891 0.90
tpcds_q41/datafusion:vortex-file-compressed 🚀 15285301 17704327 0.86
tpcds_q42/datafusion:vortex-file-compressed 🚀 13512460 15725266 0.86
tpcds_q43/datafusion:vortex-file-compressed 🚀 18226695 21145241 0.86
tpcds_q44/datafusion:vortex-file-compressed 🚀 31145490 36979400 0.84
tpcds_q45/datafusion:vortex-file-compressed 🚀 26844094 29852720 0.90
tpcds_q46/datafusion:vortex-file-compressed 🚀 33695379 38041970 0.89
tpcds_q47/datafusion:vortex-file-compressed 🚀 129342401 145760187 0.89
tpcds_q48/datafusion:vortex-file-compressed 🚀 37430424 44631258 0.84
tpcds_q49/datafusion:vortex-file-compressed 58579818 64223242 0.91
tpcds_q50/datafusion:vortex-file-compressed 🚀 38138687 42523249 0.90
tpcds_q51/datafusion:vortex-file-compressed 87050839 96553334 0.90
tpcds_q52/datafusion:vortex-file-compressed 🚀 14612293 16826716 0.87
tpcds_q53/datafusion:vortex-file-compressed 21723589 23709795 0.92
tpcds_q54/datafusion:vortex-file-compressed 34774577 37963077 0.92
tpcds_q55/datafusion:vortex-file-compressed 🚀 13534946 15306970 0.88
tpcds_q56/datafusion:vortex-file-compressed 29275426 32385409 0.90
tpcds_q57/datafusion:vortex-file-compressed 🚀 104448317 119462375 0.87
tpcds_q58/datafusion:vortex-file-compressed 53640975 58103145 0.92
tpcds_q59/datafusion:vortex-file-compressed 🚀 51645406 61861039 0.83
tpcds_q60/datafusion:vortex-file-compressed 🚀 29213380 32818343 0.89
tpcds_q61/datafusion:vortex-file-compressed 40222780 44508741 0.90
tpcds_q62/datafusion:vortex-file-compressed 26679344 29129812 0.92
tpcds_q63/datafusion:vortex-file-compressed 🚀 20960854 24202598 0.87
tpcds_q64/datafusion:vortex-file-compressed 🚀 412018356 467501796 0.88
tpcds_q65/datafusion:vortex-file-compressed 🚀 38824402 44422494 0.87
tpcds_q66/datafusion:vortex-file-compressed 71323525 78224990 0.91
tpcds_q67/datafusion:vortex-file-compressed 🚀 144006072 162896298 0.88
tpcds_q68/datafusion:vortex-file-compressed 33923912 35506996 0.96
tpcds_q69/datafusion:vortex-file-compressed 🚀 35195691 40834187 0.86
tpcds_q70/datafusion:vortex-file-compressed 🚀 83558076 95304211 0.88
tpcds_q71/datafusion:vortex-file-compressed 🚀 22075962 25048269 0.88
tpcds_q72/datafusion:vortex-file-compressed 🚀 2103266571 2429805416 0.87
tpcds_q73/datafusion:vortex-file-compressed 🚀 22022030 26298959 0.84
tpcds_q74/datafusion:vortex-file-compressed 🚀 79933247 89261189 0.90
tpcds_q75/datafusion:vortex-file-compressed 🚀 105863206 123247736 0.86
tpcds_q76/datafusion:vortex-file-compressed 🚀 23762741 26837064 0.89
tpcds_q77/datafusion:vortex-file-compressed 🚀 40465084 46341200 0.87
tpcds_q78/datafusion:vortex-file-compressed 🚀 121949488 144810643 0.84
tpcds_q79/datafusion:vortex-file-compressed 🚀 28220594 32236292 0.88
tpcds_q80/datafusion:vortex-file-compressed 🚀 91772304 107614095 0.85
tpcds_q81/datafusion:vortex-file-compressed 🚀 23239025 28323166 0.82
tpcds_q82/datafusion:vortex-file-compressed 🚀 27636262 32469462 0.85
tpcds_q83/datafusion:vortex-file-compressed 🚀 32165682 39286006 0.82
tpcds_q84/datafusion:vortex-file-compressed 🚀 12415515 15378391 0.81
tpcds_q85/datafusion:vortex-file-compressed 🚀 96278449 108675140 0.89
tpcds_q86/datafusion:vortex-file-compressed 17609799 18597545 0.95
tpcds_q87/datafusion:vortex-file-compressed 🚀 42402074 47674317 0.89
tpcds_q88/datafusion:vortex-file-compressed 53518877 58848802 0.91
tpcds_q89/datafusion:vortex-file-compressed 🚀 23504148 27405259 0.86
tpcds_q90/datafusion:vortex-file-compressed 🚀 14312513 16794132 0.85
tpcds_q91/datafusion:vortex-file-compressed 🚀 17560697 20574127 0.85
tpcds_q92/datafusion:vortex-file-compressed 🚀 18111509 21816601 0.83
tpcds_q93/datafusion:vortex-file-compressed 32969822 36589165 0.90
tpcds_q94/datafusion:vortex-file-compressed 🚀 22937613 25708508 0.89
tpcds_q95/datafusion:vortex-file-compressed 60327181 67023700 0.90
tpcds_q96/datafusion:vortex-file-compressed 🚀 13131726 14726492 0.89
tpcds_q97/datafusion:vortex-file-compressed 🚀 32039815 35881444 0.89
tpcds_q98/datafusion:vortex-file-compressed 🚀 22995414 27029779 0.85
tpcds_q99/datafusion:vortex-file-compressed 31937908 34406444 0.93
datafusion / vortex-compact (0.938x ➖, 22↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-compact 🚀 25124802 28642795 0.88
tpcds_q02/datafusion:vortex-compact 52695062 56569357 0.93
tpcds_q03/datafusion:vortex-compact 🚀 19608196 22047485 0.89
tpcds_q04/datafusion:vortex-compact 286762608 304924766 0.94
tpcds_q05/datafusion:vortex-compact 46077934 50637321 0.91
tpcds_q06/datafusion:vortex-compact 61875259 63932146 0.97
tpcds_q07/datafusion:vortex-compact 🚀 51075516 57999553 0.88
tpcds_q08/datafusion:vortex-compact 35193519 39020952 0.90
tpcds_q09/datafusion:vortex-compact 🚀 61125531 68069340 0.90
tpcds_q10/datafusion:vortex-compact 🚀 50079119 55935856 0.90
tpcds_q11/datafusion:vortex-compact 🚀 148952816 173467529 0.86
tpcds_q12/datafusion:vortex-compact 25567120 27590614 0.93
tpcds_q13/datafusion:vortex-compact 🚀 89682643 112683933 0.80
tpcds_q14/datafusion:vortex-compact 201414090 219989994 0.92
tpcds_q15/datafusion:vortex-compact 30625377 33566412 0.91
tpcds_q16/datafusion:vortex-compact 🚀 31465558 35464929 0.89
tpcds_q17/datafusion:vortex-compact 71843992 79639023 0.90
tpcds_q18/datafusion:vortex-compact 78330808 85929308 0.91
tpcds_q19/datafusion:vortex-compact 🚀 28772792 32787062 0.88
tpcds_q20/datafusion:vortex-compact 🚀 25984270 28963385 0.90
tpcds_q21/datafusion:vortex-compact 🚀 38424151 44574248 0.86
tpcds_q22/datafusion:vortex-compact 🚀 122990772 161515905 0.76
tpcds_q23/datafusion:vortex-compact 🚀 162647589 180942836 0.90
tpcds_q24/datafusion:vortex-compact 🚀 94442751 106613110 0.89
tpcds_q25/datafusion:vortex-compact 77929344 84700193 0.92
tpcds_q26/datafusion:vortex-compact 43781244 47227017 0.93
tpcds_q27/datafusion:vortex-compact 123950959 129714662 0.96
tpcds_q28/datafusion:vortex-compact 77054155 79858756 0.96
tpcds_q29/datafusion:vortex-compact 73396010 79698641 0.92
tpcds_q30/datafusion:vortex-compact 27034196 27186263 0.99
tpcds_q31/datafusion:vortex-compact 98492700 98920955 1.00
tpcds_q32/datafusion:vortex-compact 27876118 27685381 1.01
tpcds_q33/datafusion:vortex-compact 36681938 38357034 0.96
tpcds_q34/datafusion:vortex-compact 31835436 32814185 0.97
tpcds_q35/datafusion:vortex-compact 51961049 52318591 0.99
tpcds_q36/datafusion:vortex-compact 75672046 76984841 0.98
tpcds_q37/datafusion:vortex-compact 40791043 41934054 0.97
tpcds_q38/datafusion:vortex-compact 🚀 49942911 56318531 0.89
tpcds_q39/datafusion:vortex-compact 🚀 111717361 131075573 0.85
tpcds_q40/datafusion:vortex-compact 36950044 40374616 0.92
tpcds_q41/datafusion:vortex-compact 17507339 19374646 0.90
tpcds_q42/datafusion:vortex-compact 18040785 19331967 0.93
tpcds_q43/datafusion:vortex-compact 24874897 25564576 0.97
tpcds_q44/datafusion:vortex-compact 46599113 50110950 0.93
tpcds_q45/datafusion:vortex-compact 🚀 31014566 35012408 0.89
tpcds_q46/datafusion:vortex-compact 43700883 46772861 0.93
tpcds_q47/datafusion:vortex-compact 🚀 148436761 168103747 0.88
tpcds_q48/datafusion:vortex-compact 🚀 70732640 89328808 0.79
tpcds_q49/datafusion:vortex-compact 70288494 76301466 0.92
tpcds_q50/datafusion:vortex-compact 47214143 51493382 0.92
tpcds_q51/datafusion:vortex-compact 🚀 95413032 107248259 0.89
tpcds_q52/datafusion:vortex-compact 18597033 20340141 0.91
tpcds_q53/datafusion:vortex-compact 27574687 29964297 0.92
tpcds_q54/datafusion:vortex-compact 41682088 44392222 0.94
tpcds_q55/datafusion:vortex-compact 18482837 18751861 0.99
tpcds_q56/datafusion:vortex-compact 36932441 37835958 0.98
tpcds_q57/datafusion:vortex-compact 118624329 122162879 0.97
tpcds_q58/datafusion:vortex-compact 63441737 63469590 1.00
tpcds_q59/datafusion:vortex-compact 70818435 74032164 0.96
tpcds_q60/datafusion:vortex-compact 35942281 37991052 0.95
tpcds_q61/datafusion:vortex-compact 55199240 55463111 1.00
tpcds_q62/datafusion:vortex-compact 24423819 26141375 0.93
tpcds_q63/datafusion:vortex-compact 27861724 28966474 0.96
tpcds_q64/datafusion:vortex-compact 459258907 503293783 0.91
tpcds_q65/datafusion:vortex-compact 53931677 57072357 0.94
tpcds_q66/datafusion:vortex-compact 79002703 78351371 1.01
tpcds_q67/datafusion:vortex-compact 155226092 159675831 0.97
tpcds_q68/datafusion:vortex-compact 🚀 44102416 49189962 0.90
tpcds_q69/datafusion:vortex-compact 46637225 51506008 0.91
tpcds_q70/datafusion:vortex-compact 97451636 104845474 0.93
tpcds_q71/datafusion:vortex-compact 29776263 31223104 0.95
tpcds_q72/datafusion:vortex-compact 🚀 2114528978 2382802137 0.89
tpcds_q73/datafusion:vortex-compact 30009445 30826024 0.97
tpcds_q74/datafusion:vortex-compact 93928772 94714423 0.99
tpcds_q75/datafusion:vortex-compact 131569606 126604968 1.04
tpcds_q76/datafusion:vortex-compact 32217129 31972991 1.01
tpcds_q77/datafusion:vortex-compact 49968066 50594532 0.99
tpcds_q78/datafusion:vortex-compact 141788354 145743433 0.97
tpcds_q79/datafusion:vortex-compact 37396294 38086880 0.98
tpcds_q80/datafusion:vortex-compact 106148442 110172176 0.96
tpcds_q81/datafusion:vortex-compact 29294016 30391621 0.96
tpcds_q82/datafusion:vortex-compact 40569874 42154116 0.96
tpcds_q83/datafusion:vortex-compact 32807198 34332383 0.96
tpcds_q84/datafusion:vortex-compact 14379897 14312858 1.00
tpcds_q85/datafusion:vortex-compact 133735962 135087025 0.99
tpcds_q86/datafusion:vortex-compact 20984491 20629362 1.02
tpcds_q87/datafusion:vortex-compact 49399941 52673315 0.94
tpcds_q88/datafusion:vortex-compact 76245729 75922181 1.00
tpcds_q89/datafusion:vortex-compact 31673194 32155869 0.98
tpcds_q90/datafusion:vortex-compact 15302992 15253639 1.00
tpcds_q91/datafusion:vortex-compact 32992140 33735456 0.98
tpcds_q92/datafusion:vortex-compact 24812178 23408759 1.06
tpcds_q93/datafusion:vortex-compact 39050467 39218805 1.00
tpcds_q94/datafusion:vortex-compact 26436647 28657584 0.92
tpcds_q95/datafusion:vortex-compact 64395364 71196892 0.90
tpcds_q96/datafusion:vortex-compact 17231625 18953032 0.91
tpcds_q97/datafusion:vortex-compact 35937609 38414427 0.94
tpcds_q98/datafusion:vortex-compact 30802438 30270925 1.02
tpcds_q99/datafusion:vortex-compact 35128435 33417245 1.05
datafusion / parquet (0.967x ➖, 7↑ 2↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:parquet 30562288 31268033 0.98
tpcds_q02/datafusion:parquet 40860192 41756367 0.98
tpcds_q03/datafusion:parquet 12969812 13168342 0.98
tpcds_q04/datafusion:parquet 252600610 273547516 0.92
tpcds_q05/datafusion:parquet 39494959 41804213 0.94
tpcds_q06/datafusion:parquet 58244526 59439946 0.98
tpcds_q07/datafusion:parquet 74536609 75382921 0.99
tpcds_q08/datafusion:parquet 25414482 26006548 0.98
tpcds_q09/datafusion:parquet 43351718 43151606 1.00
tpcds_q10/datafusion:parquet 69280727 67681510 1.02
tpcds_q11/datafusion:parquet 149321205 148125297 1.01
tpcds_q12/datafusion:parquet 🚀 15807167 18318049 0.86
tpcds_q13/datafusion:parquet 72960320 77998248 0.94
tpcds_q14/datafusion:parquet 159535269 158570748 1.01
tpcds_q15/datafusion:parquet 20737684 21538315 0.96
tpcds_q16/datafusion:parquet 🚀 23238962 28185637 0.82
tpcds_q17/datafusion:parquet 60638457 64650741 0.94
tpcds_q18/datafusion:parquet 111130162 113756221 0.98
tpcds_q19/datafusion:parquet 22495441 22331457 1.01
tpcds_q20/datafusion:parquet 16170871 15907714 1.02
tpcds_q21/datafusion:parquet 17706458 18129359 0.98
tpcds_q22/datafusion:parquet 135065984 144571235 0.93
tpcds_q23/datafusion:parquet 144383850 142100045 1.02
tpcds_q24/datafusion:parquet 87440521 88746870 0.99
tpcds_q25/datafusion:parquet 62816488 63693405 0.99
tpcds_q26/datafusion:parquet 66715218 64089397 1.04
tpcds_q27/datafusion:parquet 143262170 143941456 1.00
tpcds_q28/datafusion:parquet 42978800 43277880 0.99
tpcds_q29/datafusion:parquet 62817874 64315210 0.98
tpcds_q30/datafusion:parquet 33421519 33441639 1.00
tpcds_q31/datafusion:parquet 61838593 66097816 0.94
tpcds_q32/datafusion:parquet 17600392 18653903 0.94
tpcds_q33/datafusion:parquet 26419950 26883423 0.98
tpcds_q34/datafusion:parquet 20248307 21296258 0.95
tpcds_q35/datafusion:parquet 65680430 71007736 0.92
tpcds_q36/datafusion:parquet 54460668 57157297 0.95
tpcds_q37/datafusion:parquet 18486376 19172402 0.96
tpcds_q38/datafusion:parquet 🚀 38144914 43138774 0.88
tpcds_q39/datafusion:parquet 71589172 73840462 0.97
tpcds_q40/datafusion:parquet 22233807 23626113 0.94
tpcds_q41/datafusion:parquet 13041574 12757244 1.02
tpcds_q42/datafusion:parquet 10948783 11069837 0.99
tpcds_q43/datafusion:parquet 16625984 16526654 1.01
tpcds_q44/datafusion:parquet 32265959 31391162 1.03
tpcds_q45/datafusion:parquet 27489190 28362266 0.97
tpcds_q46/datafusion:parquet 30938052 31672419 0.98
tpcds_q47/datafusion:parquet 122626002 122654210 1.00
tpcds_q48/datafusion:parquet 67277090 69604003 0.97
tpcds_q49/datafusion:parquet 53718716 54664715 0.98
tpcds_q50/datafusion:parquet 42591412 43492659 0.98
tpcds_q51/datafusion:parquet 83964589 84546136 0.99
tpcds_q52/datafusion:parquet 11600088 11606671 1.00
tpcds_q53/datafusion:parquet 17064939 17377232 0.98
tpcds_q54/datafusion:parquet 33121393 34560262 0.96
tpcds_q55/datafusion:parquet 10740634 10985566 0.98
tpcds_q56/datafusion:parquet 26095507 27296599 0.96
tpcds_q57/datafusion:parquet 97091993 98998621 0.98
tpcds_q58/datafusion:parquet 49583784 49597892 1.00
tpcds_q59/datafusion:parquet 55193566 57859907 0.95
tpcds_q60/datafusion:parquet 27770520 27148004 1.02
tpcds_q61/datafusion:parquet 42795939 42717189 1.00
tpcds_q62/datafusion:parquet 🚀 19231551 25752497 0.75
tpcds_q63/datafusion:parquet 17170361 17338235 0.99
tpcds_q64/datafusion:parquet 493884978 509017965 0.97
tpcds_q65/datafusion:parquet 36434813 36964180 0.99
tpcds_q66/datafusion:parquet 64725967 70614725 0.92
tpcds_q67/datafusion:parquet 145414379 145912560 1.00
tpcds_q68/datafusion:parquet 30610503 31271931 0.98
tpcds_q69/datafusion:parquet 62460118 65022083 0.96
tpcds_q70/datafusion:parquet 83578265 87559615 0.95
tpcds_q71/datafusion:parquet 21501754 20990220 1.02
tpcds_q72/datafusion:parquet 579861057 595026173 0.97
tpcds_q73/datafusion:parquet 19708374 20421645 0.97
tpcds_q74/datafusion:parquet 80454253 81778545 0.98
tpcds_q75/datafusion:parquet 97381222 100134333 0.97
tpcds_q76/datafusion:parquet 29480260 29442144 1.00
tpcds_q77/datafusion:parquet 37324495 40496201 0.92
tpcds_q78/datafusion:parquet 113727657 116550323 0.98
tpcds_q79/datafusion:parquet 25371348 25899941 0.98
tpcds_q80/datafusion:parquet 76342015 79227049 0.96
tpcds_q81/datafusion:parquet 30586498 32016596 0.96
tpcds_q82/datafusion:parquet 19975614 19527209 1.02
tpcds_q83/datafusion:parquet 35452353 37765528 0.94
tpcds_q84/datafusion:parquet 37787344 39912815 0.95
tpcds_q85/datafusion:parquet 144309109 146007307 0.99
tpcds_q86/datafusion:parquet 🚨 15718605 14211633 1.11
tpcds_q87/datafusion:parquet 39327327 41050581 0.96
tpcds_q88/datafusion:parquet 57075362 58869577 0.97
tpcds_q89/datafusion:parquet 20759774 21062846 0.99
tpcds_q90/datafusion:parquet 🚀 13404174 15616628 0.86
tpcds_q91/datafusion:parquet 57017409 62140649 0.92
tpcds_q92/datafusion:parquet 🚀 17151289 20996271 0.82
tpcds_q93/datafusion:parquet 31674969 33813167 0.94
tpcds_q94/datafusion:parquet 19726058 20624222 0.96
tpcds_q95/datafusion:parquet 57735448 60933486 0.95
tpcds_q96/datafusion:parquet 11212545 12206615 0.92
tpcds_q97/datafusion:parquet 🚀 28662182 32178976 0.89
tpcds_q98/datafusion:parquet 21682272 22867414 0.95
tpcds_q99/datafusion:parquet 🚨 30642608 26992877 1.14
duckdb / vortex-file-compressed (1.028x ➖, 1↑ 12↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-file-compressed 22728552 22924580 0.99
tpcds_q02/duckdb:vortex-file-compressed 34517338 34131355 1.01
tpcds_q03/duckdb:vortex-file-compressed 🚨 34325179 31190386 1.10
tpcds_q04/duckdb:vortex-file-compressed 110889791 101201778 1.10
tpcds_q05/duckdb:vortex-file-compressed 🚨 39706695 35845489 1.11
tpcds_q06/duckdb:vortex-file-compressed 🚨 35797034 31389823 1.14
tpcds_q07/duckdb:vortex-file-compressed 🚨 21820498 18610841 1.17
tpcds_q08/duckdb:vortex-file-compressed 29301087 29657919 0.99
tpcds_q09/duckdb:vortex-file-compressed 39894568 37241729 1.07
tpcds_q10/duckdb:vortex-file-compressed 🚨 43808443 39419583 1.11
tpcds_q11/duckdb:vortex-file-compressed 🚨 67452079 60783393 1.11
tpcds_q12/duckdb:vortex-file-compressed 🚨 15881549 14107920 1.13
tpcds_q13/duckdb:vortex-file-compressed 34495213 32307457 1.07
tpcds_q14/duckdb:vortex-file-compressed 110504237 102230879 1.08
tpcds_q15/duckdb:vortex-file-compressed 🚨 29577073 26046853 1.14
tpcds_q16/duckdb:vortex-file-compressed 🚨 29898497 25739608 1.16
tpcds_q17/duckdb:vortex-file-compressed 🚨 46528344 41843238 1.11
tpcds_q18/duckdb:vortex-file-compressed 49559045 46524604 1.07
tpcds_q19/duckdb:vortex-file-compressed 35407291 32614564 1.09
tpcds_q20/duckdb:vortex-file-compressed 🚨 16932853 15150829 1.12
tpcds_q21/duckdb:vortex-file-compressed 17847452 16468584 1.08
tpcds_q22/duckdb:vortex-file-compressed 78635724 74315035 1.06
tpcds_q23/duckdb:vortex-file-compressed 109467366 108334387 1.01
tpcds_q24/duckdb:vortex-file-compressed 48974778 48939824 1.00
tpcds_q25/duckdb:vortex-file-compressed 50284614 48780063 1.03
tpcds_q26/duckdb:vortex-file-compressed 38803283 38877722 1.00
tpcds_q27/duckdb:vortex-file-compressed 48419025 46014920 1.05
tpcds_q28/duckdb:vortex-file-compressed 36251189 35453907 1.02
tpcds_q29/duckdb:vortex-file-compressed 41662075 41010376 1.02
tpcds_q30/duckdb:vortex-file-compressed 23550108 22785551 1.03
tpcds_q31/duckdb:vortex-file-compressed 33840666 34713629 0.97
tpcds_q32/duckdb:vortex-file-compressed 14875740 14617611 1.02
tpcds_q33/duckdb:vortex-file-compressed 25058254 23725709 1.06
tpcds_q34/duckdb:vortex-file-compressed 23969657 23053627 1.04
tpcds_q35/duckdb:vortex-file-compressed 63586612 66265161 0.96
tpcds_q36/duckdb:vortex-file-compressed 26370500 24796200 1.06
tpcds_q37/duckdb:vortex-file-compressed 16341448 15665309 1.04
tpcds_q38/duckdb:vortex-file-compressed 35152491 36197104 0.97
tpcds_q39/duckdb:vortex-file-compressed 34980220 34788747 1.01
tpcds_q40/duckdb:vortex-file-compressed 20395935 20425621 1.00
tpcds_q41/duckdb:vortex-file-compressed 13699039 12882326 1.06
tpcds_q42/duckdb:vortex-file-compressed 🚨 13676767 12425511 1.10
tpcds_q43/duckdb:vortex-file-compressed 23342597 22484807 1.04
tpcds_q44/duckdb:vortex-file-compressed 19605016 20351429 0.96
tpcds_q45/duckdb:vortex-file-compressed 29794249 29364936 1.01
tpcds_q46/duckdb:vortex-file-compressed 53241814 51129682 1.04
tpcds_q47/duckdb:vortex-file-compressed 47745851 45754812 1.04
tpcds_q48/duckdb:vortex-file-compressed 30373681 29937889 1.01
tpcds_q49/duckdb:vortex-file-compressed 33032335 36248877 0.91
tpcds_q50/duckdb:vortex-file-compressed 35326067 33133357 1.07
tpcds_q51/duckdb:vortex-file-compressed 99842365 97198820 1.03
tpcds_q52/duckdb:vortex-file-compressed 13409933 12681229 1.06
tpcds_q53/duckdb:vortex-file-compressed 23079932 23036263 1.00
tpcds_q54/duckdb:vortex-file-compressed 28070149 27578204 1.02
tpcds_q55/duckdb:vortex-file-compressed 12993268 12564666 1.03
tpcds_q56/duckdb:vortex-file-compressed 23042191 23794733 0.97
tpcds_q57/duckdb:vortex-file-compressed 39541128 38709978 1.02
tpcds_q58/duckdb:vortex-file-compressed 31359654 30670380 1.02
tpcds_q59/duckdb:vortex-file-compressed 68914943 66132292 1.04
tpcds_q60/duckdb:vortex-file-compressed 25750812 25610211 1.01
tpcds_q61/duckdb:vortex-file-compressed 32088597 30535792 1.05
tpcds_q62/duckdb:vortex-file-compressed 17192574 17111786 1.00
tpcds_q63/duckdb:vortex-file-compressed 21826923 21079825 1.04
tpcds_q64/duckdb:vortex-file-compressed 86778337 82564725 1.05
tpcds_q65/duckdb:vortex-file-compressed 22703713 22585469 1.01
tpcds_q66/duckdb:vortex-file-compressed 30039543 28983113 1.04
tpcds_q67/duckdb:vortex-file-compressed 139142248 137812637 1.01
tpcds_q68/duckdb:vortex-file-compressed 40367756 41641260 0.97
tpcds_q69/duckdb:vortex-file-compressed 42254003 41205929 1.03
tpcds_q70/duckdb:vortex-file-compressed 25723393 25805203 1.00
tpcds_q71/duckdb:vortex-file-compressed 20676263 20993471 0.98
tpcds_q72/duckdb:vortex-file-compressed 172260435 173129853 0.99
tpcds_q73/duckdb:vortex-file-compressed 22702034 22593344 1.00
tpcds_q74/duckdb:vortex-file-compressed 🚀 73235865 83221765 0.88
tpcds_q75/duckdb:vortex-file-compressed 56903238 59558110 0.96
tpcds_q76/duckdb:vortex-file-compressed 18314270 19946416 0.92
tpcds_q77/duckdb:vortex-file-compressed 26456718 25545140 1.04
tpcds_q78/duckdb:vortex-file-compressed 74581041 76696263 0.97
tpcds_q79/duckdb:vortex-file-compressed 32362123 32596918 0.99
tpcds_q80/duckdb:vortex-file-compressed 50276921 48563960 1.04
tpcds_q81/duckdb:vortex-file-compressed 30040956 28799899 1.04
tpcds_q82/duckdb:vortex-file-compressed 16397500 17286454 0.95
tpcds_q83/duckdb:vortex-file-compressed 24752164 24604963 1.01
tpcds_q84/duckdb:vortex-file-compressed 21046483 19985909 1.05
tpcds_q85/duckdb:vortex-file-compressed 45388978 44361471 1.02
tpcds_q86/duckdb:vortex-file-compressed 16645346 16278940 1.02
tpcds_q87/duckdb:vortex-file-compressed 39203427 40546025 0.97
tpcds_q88/duckdb:vortex-file-compressed 33642597 33997016 0.99
tpcds_q89/duckdb:vortex-file-compressed 22429475 22752434 0.99
tpcds_q90/duckdb:vortex-file-compressed 12757994 12741249 1.00
tpcds_q91/duckdb:vortex-file-compressed 30932987 30113524 1.03
tpcds_q92/duckdb:vortex-file-compressed 23459490 24737730 0.95
tpcds_q93/duckdb:vortex-file-compressed 29317020 28419142 1.03
tpcds_q94/duckdb:vortex-file-compressed 22937671 22741503 1.01
tpcds_q95/duckdb:vortex-file-compressed 152011372 140323847 1.08
tpcds_q96/duckdb:vortex-file-compressed 13091952 12689119 1.03
tpcds_q97/duckdb:vortex-file-compressed 38150828 37652452 1.01
tpcds_q98/duckdb:vortex-file-compressed 18186335 18093408 1.01
tpcds_q99/duckdb:vortex-file-compressed 27772130 28147140 0.99
duckdb / vortex-compact (0.996x ➖, 3↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-compact 25180574 23775906 1.06
tpcds_q02/duckdb:vortex-compact 41600940 39593000 1.05
tpcds_q03/duckdb:vortex-compact 58671177 57256936 1.02
tpcds_q04/duckdb:vortex-compact 125301620 124735553 1.00
tpcds_q05/duckdb:vortex-compact 54265240 53579237 1.01
tpcds_q06/duckdb:vortex-compact 39822829 39856745 1.00
tpcds_q07/duckdb:vortex-compact 33583147 33858726 0.99
tpcds_q08/duckdb:vortex-compact 46803652 42648784 1.10
tpcds_q09/duckdb:vortex-compact 61673109 58587123 1.05
tpcds_q10/duckdb:vortex-compact 59592055 62456965 0.95
tpcds_q11/duckdb:vortex-compact 77753128 74060256 1.05
tpcds_q12/duckdb:vortex-compact 21615018 23009062 0.94
tpcds_q13/duckdb:vortex-compact 60665866 57524698 1.05
tpcds_q14/duckdb:vortex-compact 136516642 129576580 1.05
tpcds_q15/duckdb:vortex-compact 31684922 30707227 1.03
tpcds_q16/duckdb:vortex-compact 32656010 29957669 1.09
tpcds_q17/duckdb:vortex-compact 56170713 54853100 1.02
tpcds_q18/duckdb:vortex-compact 58735174 58348353 1.01
tpcds_q19/duckdb:vortex-compact 51400330 49973023 1.03
tpcds_q20/duckdb:vortex-compact 19926940 19993959 1.00
tpcds_q21/duckdb:vortex-compact 18950014 18879097 1.00
tpcds_q22/duckdb:vortex-compact 80564783 75257405 1.07
tpcds_q23/duckdb:vortex-compact 123797567 122858812 1.01
tpcds_q24/duckdb:vortex-compact 64519367 62321959 1.04
tpcds_q25/duckdb:vortex-compact 81092298 80809732 1.00
tpcds_q26/duckdb:vortex-compact 52170980 54305187 0.96
tpcds_q27/duckdb:vortex-compact 70179433 66877163 1.05
tpcds_q28/duckdb:vortex-compact 86836597 83681123 1.04
tpcds_q29/duckdb:vortex-compact 55586081 53803240 1.03
tpcds_q30/duckdb:vortex-compact 29317008 27850987 1.05
tpcds_q31/duckdb:vortex-compact 46370149 45924564 1.01
tpcds_q32/duckdb:vortex-compact 22648713 22509276 1.01
tpcds_q33/duckdb:vortex-compact 34384217 34709968 0.99
tpcds_q34/duckdb:vortex-compact 37055778 37852432 0.98
tpcds_q35/duckdb:vortex-compact 81816656 82018932 1.00
tpcds_q36/duckdb:vortex-compact 40131547 41641518 0.96
tpcds_q37/duckdb:vortex-compact 24838595 24167722 1.03
tpcds_q38/duckdb:vortex-compact 44858245 48475044 0.93
tpcds_q39/duckdb:vortex-compact 36493222 38303736 0.95
tpcds_q40/duckdb:vortex-compact 24334673 24844969 0.98
tpcds_q41/duckdb:vortex-compact 16042443 16513116 0.97
tpcds_q42/duckdb:vortex-compact 22184027 22010702 1.01
tpcds_q43/duckdb:vortex-compact 35658961 35264641 1.01
tpcds_q44/duckdb:vortex-compact 27866711 28958197 0.96
tpcds_q45/duckdb:vortex-compact 37931307 38205570 0.99
tpcds_q46/duckdb:vortex-compact 70004891 72914392 0.96
tpcds_q47/duckdb:vortex-compact 62487099 63205267 0.99
tpcds_q48/duckdb:vortex-compact 52483730 50975396 1.03
tpcds_q49/duckdb:vortex-compact 56145047 54896719 1.02
tpcds_q50/duckdb:vortex-compact 46547649 47538298 0.98
tpcds_q51/duckdb:vortex-compact 106374834 107178102 0.99
tpcds_q52/duckdb:vortex-compact 22289153 22287296 1.00
tpcds_q53/duckdb:vortex-compact 39011815 37955782 1.03
tpcds_q54/duckdb:vortex-compact 40553162 42586969 0.95
tpcds_q55/duckdb:vortex-compact 22312443 22462151 0.99
tpcds_q56/duckdb:vortex-compact 34233117 35349259 0.97
tpcds_q57/duckdb:vortex-compact 44637770 45008260 0.99
tpcds_q58/duckdb:vortex-compact 42540425 46104093 0.92
tpcds_q59/duckdb:vortex-compact 88916704 93517011 0.95
tpcds_q60/duckdb:vortex-compact 37725635 38934135 0.97
tpcds_q61/duckdb:vortex-compact 65610382 63414688 1.03
tpcds_q62/duckdb:vortex-compact 27079012 24811692 1.09
tpcds_q63/duckdb:vortex-compact 37351821 39098460 0.96
tpcds_q64/duckdb:vortex-compact 118841689 122357091 0.97
tpcds_q65/duckdb:vortex-compact 32998960 32999027 1.00
tpcds_q66/duckdb:vortex-compact 38085313 40471055 0.94
tpcds_q67/duckdb:vortex-compact 154096554 156910744 0.98
tpcds_q68/duckdb:vortex-compact 59624543 65760432 0.91
tpcds_q69/duckdb:vortex-compact 62679871 66731846 0.94
tpcds_q70/duckdb:vortex-compact 35588632 36329381 0.98
tpcds_q71/duckdb:vortex-compact 33948975 34916408 0.97
tpcds_q72/duckdb:vortex-compact 192954076 196969259 0.98
tpcds_q73/duckdb:vortex-compact 36965045 37935279 0.97
tpcds_q74/duckdb:vortex-compact 91542744 83604728 1.09
tpcds_q75/duckdb:vortex-compact 73893132 75135683 0.98
tpcds_q76/duckdb:vortex-compact 34105136 35560232 0.96
tpcds_q77/duckdb:vortex-compact 🚀 41424157 46650795 0.89
tpcds_q78/duckdb:vortex-compact 85682579 91872606 0.93
tpcds_q79/duckdb:vortex-compact 52875890 55135258 0.96
tpcds_q80/duckdb:vortex-compact 83208140 82422073 1.01
tpcds_q81/duckdb:vortex-compact 🚀 33537282 37609024 0.89
tpcds_q82/duckdb:vortex-compact 26851641 26976932 1.00
tpcds_q83/duckdb:vortex-compact 33347272 34173975 0.98
tpcds_q84/duckdb:vortex-compact 27104104 27169037 1.00
tpcds_q85/duckdb:vortex-compact 60133130 61030377 0.99
tpcds_q86/duckdb:vortex-compact 23393276 22990086 1.02
tpcds_q87/duckdb:vortex-compact 🚀 47540428 53533284 0.89
tpcds_q88/duckdb:vortex-compact 39900384 41706863 0.96
tpcds_q89/duckdb:vortex-compact 39414213 38947979 1.01
tpcds_q90/duckdb:vortex-compact 15954660 15326160 1.04
tpcds_q91/duckdb:vortex-compact 51392412 53820831 0.95
tpcds_q92/duckdb:vortex-compact 🚨 56733283 48004520 1.18
tpcds_q93/duckdb:vortex-compact 33494340 31256109 1.07
tpcds_q94/duckdb:vortex-compact 33537922 34035215 0.99
tpcds_q95/duckdb:vortex-compact 147510471 149194212 0.99
tpcds_q96/duckdb:vortex-compact 17755137 19254699 0.92
tpcds_q97/duckdb:vortex-compact 44997390 47188754 0.95
tpcds_q98/duckdb:vortex-compact 29494584 30467979 0.97
tpcds_q99/duckdb:vortex-compact 36637272 34027205 1.08
duckdb / parquet (1.002x ➖, 1↑ 3↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:parquet 29780935 27824737 1.07
tpcds_q02/duckdb:parquet 23623206 23721736 1.00
tpcds_q03/duckdb:parquet 11231146 11841246 0.95
tpcds_q04/duckdb:parquet 170324902 169937570 1.00
tpcds_q05/duckdb:parquet 27566092 28432760 0.97
tpcds_q06/duckdb:parquet 28033451 28328838 0.99
tpcds_q07/duckdb:parquet 20887526 20637130 1.01
tpcds_q08/duckdb:parquet 26692503 26503399 1.01
tpcds_q09/duckdb:parquet 39618349 39842034 0.99
tpcds_q10/duckdb:parquet 33245290 33648984 0.99
tpcds_q11/duckdb:parquet 84069167 91247294 0.92
tpcds_q12/duckdb:parquet 14284389 14493656 0.99
tpcds_q13/duckdb:parquet 32721554 32308643 1.01
tpcds_q14/duckdb:parquet 99503623 102201091 0.97
tpcds_q15/duckdb:parquet 29852320 31410115 0.95
tpcds_q16/duckdb:parquet 20501627 21337335 0.96
tpcds_q17/duckdb:parquet 37600878 37252326 1.01
tpcds_q18/duckdb:parquet 44982643 45345536 0.99
tpcds_q19/duckdb:parquet 30301664 28956271 1.05
tpcds_q20/duckdb:parquet 15329336 15684295 0.98
tpcds_q21/duckdb:parquet 11576137 10730367 1.08
tpcds_q22/duckdb:parquet 71355775 66744810 1.07
tpcds_q23/duckdb:parquet 78905223 83912332 0.94
tpcds_q24/duckdb:parquet 43792382 44774440 0.98
tpcds_q25/duckdb:parquet 33660340 33192062 1.01
tpcds_q26/duckdb:parquet 37186915 35028795 1.06
tpcds_q27/duckdb:parquet 48421033 49467582 0.98
tpcds_q28/duckdb:parquet 37263569 37118472 1.00
tpcds_q29/duckdb:parquet 36356790 36229515 1.00
tpcds_q30/duckdb:parquet 34134254 35332096 0.97
tpcds_q31/duckdb:parquet 24941536 23369491 1.07
tpcds_q32/duckdb:parquet 🚨 12097243 10785824 1.12
tpcds_q33/duckdb:parquet 20528632 20474743 1.00
tpcds_q34/duckdb:parquet 20276645 20264185 1.00
tpcds_q35/duckdb:parquet 54567705 55045982 0.99
tpcds_q36/duckdb:parquet 20882569 20051757 1.04
tpcds_q37/duckdb:parquet 12062232 12054080 1.00
tpcds_q38/duckdb:parquet 35355103 33631325 1.05
tpcds_q39/duckdb:parquet 30154794 31764926 0.95
tpcds_q40/duckdb:parquet 16638928 17806101 0.93
tpcds_q41/duckdb:parquet 7460328 7562035 0.99
tpcds_q42/duckdb:parquet 9888787 10128308 0.98
tpcds_q43/duckdb:parquet 15298586 15254311 1.00
tpcds_q44/duckdb:parquet 21621402 22175739 0.98
tpcds_q45/duckdb:parquet 27019693 25563008 1.06
tpcds_q46/duckdb:parquet 44023900 45240594 0.97
tpcds_q47/duckdb:parquet 44504132 44327913 1.00
tpcds_q48/duckdb:parquet 29533664 29071428 1.02
tpcds_q49/duckdb:parquet 24049175 24923877 0.96
tpcds_q50/duckdb:parquet 24038650 23768526 1.01
tpcds_q51/duckdb:parquet 94482578 95734366 0.99
tpcds_q52/duckdb:parquet 11185339 11661622 0.96
tpcds_q53/duckdb:parquet 14863827 15163983 0.98
tpcds_q54/duckdb:parquet 24857603 25698831 0.97
tpcds_q55/duckdb:parquet 10150621 10181654 1.00
tpcds_q56/duckdb:parquet 20336557 21399418 0.95
tpcds_q57/duckdb:parquet 33871696 34904661 0.97
tpcds_q58/duckdb:parquet 21618526 23136099 0.93
tpcds_q59/duckdb:parquet 35222505 35265667 1.00
tpcds_q60/duckdb:parquet 20914010 21278399 0.98
tpcds_q61/duckdb:parquet 30339940 30764538 0.99
tpcds_q62/duckdb:parquet 11626726 11713875 0.99
tpcds_q63/duckdb:parquet 14160356 13944493 1.02
tpcds_q64/duckdb:parquet 74088504 74990636 0.99
tpcds_q65/duckdb:parquet 19878642 19586388 1.01
tpcds_q66/duckdb:parquet 28520390 28533144 1.00
tpcds_q67/duckdb:parquet 135219095 132907867 1.02
tpcds_q68/duckdb:parquet 35967018 36338859 0.99
tpcds_q69/duckdb:parquet 35350748 36257821 0.97
tpcds_q70/duckdb:parquet 19317754 19090084 1.01
tpcds_q71/duckdb:parquet 18659351 18788721 0.99
tpcds_q72/duckdb:parquet 164216393 166002161 0.99
tpcds_q73/duckdb:parquet 17350358 17679373 0.98
tpcds_q74/duckdb:parquet 125490598 127192276 0.99
tpcds_q75/duckdb:parquet 51897000 53260316 0.97
tpcds_q76/duckdb:parquet 19926223 19140794 1.04
tpcds_q77/duckdb:parquet 20830090 21768646 0.96
tpcds_q78/duckdb:parquet 76226657 72744269 1.05
tpcds_q79/duckdb:parquet 27797956 27157047 1.02
tpcds_q80/duckdb:parquet 41377653 40624246 1.02
tpcds_q81/duckdb:parquet 31861928 29487460 1.08
tpcds_q82/duckdb:parquet 14002834 13873283 1.01
tpcds_q83/duckdb:parquet 17405687 16271465 1.07
tpcds_q84/duckdb:parquet 18419850 18627415 0.99
tpcds_q85/duckdb:parquet 36511298 39431288 0.93
tpcds_q86/duckdb:parquet 🚨 13424002 12074485 1.11
tpcds_q87/duckdb:parquet 37518220 37030796 1.01
tpcds_q88/duckdb:parquet 49492265 47535124 1.04
tpcds_q89/duckdb:parquet 17262882 15883000 1.09
tpcds_q90/duckdb:parquet 8016191 7432366 1.08
tpcds_q91/duckdb:parquet 23429109 23898131 0.98
tpcds_q92/duckdb:parquet 11941540 11912071 1.00
tpcds_q93/duckdb:parquet 31726442 30629469 1.04
tpcds_q94/duckdb:parquet 16619139 16189367 1.03
tpcds_q95/duckdb:parquet 🚀 127197407 146025338 0.87
tpcds_q96/duckdb:parquet 9279888 8661752 1.07
tpcds_q97/duckdb:parquet 🚨 39447839 35846679 1.10
tpcds_q98/duckdb:parquet 18079290 18668501 0.97
tpcds_q99/duckdb:parquet 20454490 19924068 1.03
duckdb / duckdb (0.976x ➖, 6↑ 1↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:duckdb 20549885 20881952 0.98
tpcds_q02/duckdb:duckdb 18892151 19682196 0.96
tpcds_q03/duckdb:duckdb 8627020 9320502 0.93
tpcds_q04/duckdb:duckdb 176496456 176275781 1.00
tpcds_q05/duckdb:duckdb 19180668 20650223 0.93
tpcds_q06/duckdb:duckdb 23504913 24719534 0.95
tpcds_q07/duckdb:duckdb 39871343 42119350 0.95
tpcds_q08/duckdb:duckdb 123235041 122245048 1.01
tpcds_q09/duckdb:duckdb 20148636 20948251 0.96
tpcds_q10/duckdb:duckdb 23490657 25901317 0.91
tpcds_q11/duckdb:duckdb 88600997 94088063 0.94
tpcds_q12/duckdb:duckdb 🚀 11672566 13369943 0.87
tpcds_q13/duckdb:duckdb 24976158 26204083 0.95
tpcds_q14/duckdb:duckdb 92312902 93386004 0.99
tpcds_q15/duckdb:duckdb 25322018 26759216 0.95
tpcds_q16/duckdb:duckdb 🚀 17558621 19954036 0.88
tpcds_q17/duckdb:duckdb 22117032 24044256 0.92
tpcds_q18/duckdb:duckdb 45356166 48836467 0.93
tpcds_q19/duckdb:duckdb 🚀 16581451 18926982 0.88
tpcds_q20/duckdb:duckdb 12392427 13274615 0.93
tpcds_q21/duckdb:duckdb 7172714 7220356 0.99
tpcds_q22/duckdb:duckdb 66131126 67540843 0.98
tpcds_q23/duckdb:duckdb 76918759 82315338 0.93
tpcds_q24/duckdb:duckdb 25566262 26367320 0.97
tpcds_q25/duckdb:duckdb 17883059 19018818 0.94
tpcds_q26/duckdb:duckdb 🚀 26227464 29377166 0.89
tpcds_q27/duckdb:duckdb 40219150 42425396 0.95
tpcds_q28/duckdb:duckdb 22266658 22464752 0.99
tpcds_q29/duckdb:duckdb 22964254 23652719 0.97
tpcds_q30/duckdb:duckdb 30752258 31202882 0.99
tpcds_q31/duckdb:duckdb 53500998 53051531 1.01
tpcds_q32/duckdb:duckdb 7530829 8334555 0.90
tpcds_q33/duckdb:duckdb 13576017 14732083 0.92
tpcds_q34/duckdb:duckdb 15279205 16834389 0.91
tpcds_q35/duckdb:duckdb 33686032 34487445 0.98
tpcds_q36/duckdb:duckdb 75984612 76107780 1.00
tpcds_q37/duckdb:duckdb 8384563 8366245 1.00
tpcds_q38/duckdb:duckdb 33808898 33168165 1.02
tpcds_q39/duckdb:duckdb 27931566 26537452 1.05
tpcds_q40/duckdb:duckdb 14838064 15456511 0.96
tpcds_q41/duckdb:duckdb 9603553 9794758 0.98
tpcds_q42/duckdb:duckdb 7106124 7379821 0.96
tpcds_q43/duckdb:duckdb 11931813 12472702 0.96
tpcds_q44/duckdb:duckdb 14606762 14354250 1.02
tpcds_q45/duckdb:duckdb 20215417 18660453 1.08
tpcds_q46/duckdb:duckdb 42048273 41371848 1.02
tpcds_q47/duckdb:duckdb 43722593 43821026 1.00
tpcds_q48/duckdb:duckdb 23865520 24443089 0.98
tpcds_q49/duckdb:duckdb 16769554 18457398 0.91
tpcds_q50/duckdb:duckdb 15289606 15651321 0.98
tpcds_q51/duckdb:duckdb 96455738 96929868 1.00
tpcds_q52/duckdb:duckdb 8022275 7937111 1.01
tpcds_q53/duckdb:duckdb 14762045 14361724 1.03
tpcds_q54/duckdb:duckdb 18354218 18262245 1.01
tpcds_q55/duckdb:duckdb 7799728 7767269 1.00
tpcds_q56/duckdb:duckdb 14999360 15083900 0.99
tpcds_q57/duckdb:duckdb 33668356 33135680 1.02
tpcds_q58/duckdb:duckdb 13890302 13494433 1.03
tpcds_q59/duckdb:duckdb 38129683 37702960 1.01
tpcds_q60/duckdb:duckdb 15988406 15487165 1.03
tpcds_q61/duckdb:duckdb 16574527 15837144 1.05
tpcds_q62/duckdb:duckdb 10646831 10635920 1.00
tpcds_q63/duckdb:duckdb 13166579 13530661 0.97
tpcds_q64/duckdb:duckdb 56891532 61169528 0.93
tpcds_q65/duckdb:duckdb 37165870 36596086 1.02
tpcds_q66/duckdb:duckdb 29431911 27966690 1.05
tpcds_q67/duckdb:duckdb 143446668 143739535 1.00
tpcds_q68/duckdb:duckdb 26026102 27016447 0.96
tpcds_q69/duckdb:duckdb 26462779 27660873 0.96
tpcds_q70/duckdb:duckdb 15161955 16345228 0.93
tpcds_q71/duckdb:duckdb 13745239 13877706 0.99
tpcds_q72/duckdb:duckdb 🚀 41648523 47153269 0.88
tpcds_q73/duckdb:duckdb 11756815 11530732 1.02
tpcds_q74/duckdb:duckdb 149180429 149173977 1.00
tpcds_q75/duckdb:duckdb 43993386 45645436 0.96
tpcds_q76/duckdb:duckdb 11993296 12399676 0.97
tpcds_q77/duckdb:duckdb 13104590 13702131 0.96
tpcds_q78/duckdb:duckdb 66350397 68023074 0.98
tpcds_q79/duckdb:duckdb 19267999 20186605 0.95
tpcds_q80/duckdb:duckdb 🚀 26535252 30153608 0.88
tpcds_q81/duckdb:duckdb 40461986 43491160 0.93
tpcds_q82/duckdb:duckdb 9186450 9742256 0.94
tpcds_q83/duckdb:duckdb 10047246 10791006 0.93
tpcds_q84/duckdb:duckdb 13805391 14604325 0.95
tpcds_q85/duckdb:duckdb 25667085 25399826 1.01
tpcds_q86/duckdb:duckdb 11496177 11104455 1.04
tpcds_q87/duckdb:duckdb 34211177 33042646 1.04
tpcds_q88/duckdb:duckdb 27027609 26007431 1.04
tpcds_q89/duckdb:duckdb 14948167 14620337 1.02
tpcds_q90/duckdb:duckdb 5824903 5835133 1.00
tpcds_q91/duckdb:duckdb 13517976 13380483 1.01
tpcds_q92/duckdb:duckdb 8874271 9120019 0.97
tpcds_q93/duckdb:duckdb 21259669 23585001 0.90
tpcds_q94/duckdb:duckdb 13743354 13214821 1.04
tpcds_q95/duckdb:duckdb 🚨 133565050 114259619 1.17
tpcds_q96/duckdb:duckdb 4863919 4692791 1.04
tpcds_q97/duckdb:duckdb 31375288 31335324 1.00
tpcds_q98/duckdb:duckdb 15102870 13957951 1.08
tpcds_q99/duckdb:duckdb 17785940 16961809 1.05
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact -12.3% +2.3% -14.2% +18.2% ➖ noise
1 datafusion:vortex-file-compressed -5.9% +2.3% -8.0% +19.1% ➖ noise
1 duckdb:duckdb -1.6% +2.3% -3.8% +21.1% ➖ noise
1 duckdb:vortex-compact +5.9% +2.3% +3.5% +20.2% ➖ noise
1 duckdb:vortex-file-compressed -0.9% +2.3% -3.1% +33.7% ➖ noise
2 datafusion:vortex-compact -6.8% -1.3% -5.6% +10.0% ➖ noise
2 datafusion:vortex-file-compressed -12.8% -1.3% -11.7% +10.0% ✅ faster
2 duckdb:duckdb -4.0% -1.3% -2.8% +10.1% ➖ noise
2 duckdb:vortex-compact +5.1% -1.3% +6.4% +29.0% ➖ noise
2 duckdb:vortex-file-compressed +1.1% -1.3% +2.4% +27.2% ➖ noise
3 datafusion:vortex-compact -11.1% -3.3% -8.0% +10.2% ➖ noise
3 datafusion:vortex-file-compressed +0.2% -3.3% +3.6% +10.0% ➖ noise
3 duckdb:duckdb -7.4% -3.3% -4.2% +17.0% ➖ noise
3 duckdb:vortex-compact +2.5% -3.3% +6.0% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +10.1% -3.3% +13.9% +10.0% 🚨 regression
4 datafusion:vortex-compact -6.0% -3.8% -2.2% +10.0% ➖ noise
4 datafusion:vortex-file-compressed -3.6% -3.8% +0.2% +10.0% ➖ noise
4 duckdb:duckdb +0.1% -3.8% +4.1% +10.0% ➖ noise
4 duckdb:vortex-compact +0.5% -3.8% +4.4% +11.2% ➖ noise
4 duckdb:vortex-file-compressed +9.6% -3.8% +13.9% +14.3% ➖ noise
5 datafusion:vortex-compact -9.0% -4.3% -4.9% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -8.2% -4.3% -4.1% +10.0% ➖ noise
5 duckdb:duckdb -7.1% -4.3% -2.9% +11.6% ➖ noise
5 duckdb:vortex-compact +1.3% -4.3% +5.8% +11.3% ➖ noise
5 duckdb:vortex-file-compressed +10.8% -4.3% +15.7% +10.0% 🚨 regression
6 datafusion:vortex-compact -3.2% -1.5% -1.7% +10.7% ➖ noise
6 datafusion:vortex-file-compressed -42.8% -1.5% -41.9% +10.0% ✅ faster
6 duckdb:duckdb -4.9% -1.5% -3.4% +13.5% ➖ noise
6 duckdb:vortex-compact -0.1% -1.5% +1.5% +10.0% ➖ noise
6 duckdb:vortex-file-compressed +14.0% -1.5% +15.8% +10.2% 🚨 regression
7 datafusion:vortex-compact -11.9% +0.0% -12.0% +10.0% ✅ faster
7 datafusion:vortex-file-compressed -9.2% +0.0% -9.2% +10.0% ✅ faster
7 duckdb:duckdb -5.3% +0.0% -5.4% +20.2% ➖ noise
7 duckdb:vortex-compact -0.8% +0.0% -0.9% +10.0% ➖ noise
7 duckdb:vortex-file-compressed +17.2% +0.0% +17.2% +11.3% 🚨 regression
8 datafusion:vortex-compact -9.8% -0.8% -9.1% +12.7% ➖ noise
8 datafusion:vortex-file-compressed -6.1% -0.8% -5.4% +12.8% ➖ noise
8 duckdb:duckdb +0.8% -0.8% +1.6% +10.0% ➖ noise
8 duckdb:vortex-compact +9.7% -0.8% +10.6% +13.2% ➖ noise
8 duckdb:vortex-file-compressed -1.2% -0.8% -0.4% +25.8% ➖ noise
9 datafusion:vortex-compact -10.2% -0.1% -10.2% +10.0% ✅ faster
9 datafusion:vortex-file-compressed -1.8% -0.1% -1.8% +10.0% ➖ noise
9 duckdb:duckdb -3.8% -0.1% -3.8% +10.0% ➖ noise
9 duckdb:vortex-compact +5.3% -0.1% +5.3% +10.0% ➖ noise
9 duckdb:vortex-file-compressed +7.1% -0.1% +7.2% +10.2% ➖ noise
10 datafusion:vortex-compact -10.5% +0.6% -11.0% +10.8% ✅ faster
10 datafusion:vortex-file-compressed -8.2% +0.6% -8.7% +10.0% ➖ noise
10 duckdb:duckdb -9.3% +0.6% -9.8% +12.0% ➖ noise
10 duckdb:vortex-compact -4.6% +0.6% -5.1% +10.0% ➖ noise
10 duckdb:vortex-file-compressed +11.1% +0.6% +10.5% +14.0% ➖ noise
11 datafusion:vortex-compact -14.1% -3.6% -10.9% +10.0% ✅ faster
11 datafusion:vortex-file-compressed -0.7% -3.6% +3.0% +10.0% ➖ noise
11 duckdb:duckdb -5.8% -3.6% -2.3% +10.2% ➖ noise
11 duckdb:vortex-compact +5.0% -3.6% +8.9% +10.0% ➖ noise
11 duckdb:vortex-file-compressed +11.0% -3.6% +15.1% +13.7% 🚨 regression
12 datafusion:vortex-compact -7.3% -7.8% +0.5% +12.8% ➖ noise
12 datafusion:vortex-file-compressed -3.4% -7.8% +4.8% +14.6% ➖ noise
12 duckdb:duckdb -12.7% -7.8% -5.3% +13.4% ➖ noise
12 duckdb:vortex-compact -6.1% -7.8% +1.9% +13.1% ➖ noise
12 duckdb:vortex-file-compressed +12.6% -7.8% +22.1% +10.0% 🚨 regression
13 datafusion:vortex-compact -20.4% -2.7% -18.2% +19.5% ✅ faster
13 datafusion:vortex-file-compressed -2.9% -2.7% -0.3% +10.0% ➖ noise
13 duckdb:duckdb -4.7% -2.7% -2.1% +10.0% ➖ noise
13 duckdb:vortex-compact +5.5% -2.7% +8.4% +10.0% ➖ noise
13 duckdb:vortex-file-compressed +6.8% -2.7% +9.7% +10.0% ➖ noise
14 datafusion:vortex-compact -8.4% -1.0% -7.5% +10.0% ➖ noise
14 datafusion:vortex-file-compressed -0.2% -1.0% +0.8% +10.0% ➖ noise
14 duckdb:duckdb -1.1% -1.0% -0.1% +10.0% ➖ noise
14 duckdb:vortex-compact +5.4% -1.0% +6.5% +10.0% ➖ noise
14 duckdb:vortex-file-compressed +8.1% -1.0% +9.2% +10.0% ➖ noise
15 datafusion:vortex-compact -8.8% -4.3% -4.6% +10.0% ➖ noise
15 datafusion:vortex-file-compressed -3.8% -4.3% +0.6% +10.0% ➖ noise
15 duckdb:duckdb -5.4% -4.3% -1.1% +11.2% ➖ noise
15 duckdb:vortex-compact +3.2% -4.3% +7.9% +16.5% ➖ noise
15 duckdb:vortex-file-compressed +13.6% -4.3% +18.7% +10.6% 🚨 regression
16 datafusion:vortex-compact -11.3% -11.0% -0.3% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -2.3% -11.0% +9.7% +15.2% ➖ noise
16 duckdb:duckdb -12.0% -11.0% -1.1% +12.4% ➖ noise
16 duckdb:vortex-compact +9.0% -11.0% +22.5% +10.9% 🚨 regression
16 duckdb:vortex-file-compressed +16.2% -11.0% +30.5% +18.5% 🚨 regression
17 datafusion:vortex-compact -9.8% -2.7% -7.3% +11.9% ➖ noise
17 datafusion:vortex-file-compressed -7.6% -2.7% -5.1% +10.0% ➖ noise
17 duckdb:duckdb -8.0% -2.7% -5.5% +10.0% ➖ noise
17 duckdb:vortex-compact +2.4% -2.7% +5.2% +10.0% ➖ noise
17 duckdb:vortex-file-compressed +11.2% -2.7% +14.3% +10.0% 🚨 regression
18 datafusion:vortex-compact -8.8% -1.6% -7.4% +10.0% ➖ noise
18 datafusion:vortex-file-compressed -1.7% -1.6% -0.2% +10.0% ➖ noise
18 duckdb:duckdb -7.1% -1.6% -5.7% +10.0% ➖ noise
18 duckdb:vortex-compact +0.7% -1.6% +2.3% +10.0% ➖ noise
18 duckdb:vortex-file-compressed +6.5% -1.6% +8.2% +10.0% ➖ noise
19 datafusion:vortex-compact -12.2% +2.7% -14.5% +11.8% ✅ faster
19 datafusion:vortex-file-compressed -1.8% +2.7% -4.4% +10.0% ➖ noise
19 duckdb:duckdb -12.4% +2.7% -14.7% +11.8% ✅ faster
19 duckdb:vortex-compact +2.9% +2.7% +0.2% +10.0% ➖ noise
19 duckdb:vortex-file-compressed +8.6% +2.7% +5.7% +17.4% ➖ noise
20 datafusion:vortex-compact -10.3% -0.3% -10.0% +16.2% ➖ noise
20 datafusion:vortex-file-compressed -12.9% -0.3% -12.6% +10.0% ✅ faster
20 duckdb:duckdb -6.6% -0.3% -6.3% +10.8% ➖ noise
20 duckdb:vortex-compact -0.3% -0.3% -0.0% +10.9% ➖ noise
20 duckdb:vortex-file-compressed +11.8% -0.3% +12.1% +10.2% 🚨 regression
21 datafusion:vortex-compact -13.8% +2.6% -16.0% +10.0% ✅ faster
21 datafusion:vortex-file-compressed -7.6% +2.6% -10.0% +10.5% ✅ faster
21 duckdb:duckdb -0.7% +2.6% -3.2% +22.6% ➖ noise
21 duckdb:vortex-compact +0.4% +2.6% -2.2% +14.8% ➖ noise
21 duckdb:vortex-file-compressed +8.4% +2.6% +5.6% +11.0% ➖ noise
22 datafusion:vortex-compact -23.9% -0.1% -23.8% +26.7% ✅ faster
22 datafusion:vortex-file-compressed -17.7% -0.1% -17.7% +32.7% ➖ noise
22 duckdb:duckdb -2.1% -0.1% -2.0% +12.4% ➖ noise
22 duckdb:vortex-compact +7.1% -0.1% +7.1% +12.9% ➖ noise
22 duckdb:vortex-file-compressed +5.8% -0.1% +5.9% +12.3% ➖ noise
23 datafusion:vortex-compact -10.1% -2.3% -8.0% +10.0% ➖ noise
23 datafusion:vortex-file-compressed -9.8% -2.3% -7.7% +10.0% ➖ noise
23 duckdb:duckdb -6.6% -2.3% -4.4% +10.3% ➖ noise
23 duckdb:vortex-compact +0.8% -2.3% +3.1% +16.5% ➖ noise
23 duckdb:vortex-file-compressed +1.0% -2.3% +3.4% +15.6% ➖ noise
24 datafusion:vortex-compact -11.4% -1.8% -9.8% +10.0% ✅ faster
24 datafusion:vortex-file-compressed -11.8% -1.8% -10.2% +10.0% ✅ faster
24 duckdb:duckdb -3.0% -1.8% -1.2% +10.0% ➖ noise
24 duckdb:vortex-compact +3.5% -1.8% +5.5% +10.1% ➖ noise
24 duckdb:vortex-file-compressed +0.1% -1.8% +1.9% +10.0% ➖ noise
25 datafusion:vortex-compact -8.0% +0.0% -8.0% +10.0% ➖ noise
25 datafusion:vortex-file-compressed -3.3% +0.0% -3.3% +15.9% ➖ noise
25 duckdb:duckdb -6.0% +0.0% -6.0% +11.3% ➖ noise
25 duckdb:vortex-compact +0.3% +0.0% +0.3% +10.0% ➖ noise
25 duckdb:vortex-file-compressed +3.1% +0.0% +3.1% +11.6% ➖ noise
26 datafusion:vortex-compact -7.3% +5.1% -11.8% +10.0% ✅ faster
26 datafusion:vortex-file-compressed -6.6% +5.1% -11.1% +10.0% ✅ faster
26 duckdb:duckdb -10.7% +5.1% -15.1% +12.1% ✅ faster
26 duckdb:vortex-compact -3.9% +5.1% -8.6% +14.4% ➖ noise
26 duckdb:vortex-file-compressed -0.2% +5.1% -5.1% +10.0% ➖ noise
27 datafusion:vortex-compact -4.4% -1.3% -3.2% +11.5% ➖ noise
27 datafusion:vortex-file-compressed -4.0% -1.3% -2.8% +13.6% ➖ noise
27 duckdb:duckdb -5.2% -1.3% -4.0% +19.0% ➖ noise
27 duckdb:vortex-compact +4.9% -1.3% +6.3% +11.0% ➖ noise
27 duckdb:vortex-file-compressed +5.2% -1.3% +6.6% +16.1% ➖ noise
28 datafusion:vortex-compact -3.5% -0.2% -3.4% +10.0% ➖ noise
28 datafusion:vortex-file-compressed -3.7% -0.2% -3.5% +17.5% ➖ noise
28 duckdb:duckdb -0.9% -0.2% -0.7% +10.0% ➖ noise
28 duckdb:vortex-compact +3.8% -0.2% +3.9% +10.0% ➖ noise
28 duckdb:vortex-file-compressed +2.2% -0.2% +2.4% +10.0% ➖ noise
29 datafusion:vortex-compact -7.9% -1.0% -7.0% +10.0% ➖ noise
29 datafusion:vortex-file-compressed -1.6% -1.0% -0.6% +10.0% ➖ noise
29 duckdb:duckdb -2.9% -1.0% -1.9% +10.6% ➖ noise
29 duckdb:vortex-compact +3.3% -1.0% +4.4% +10.0% ➖ noise
29 duckdb:vortex-file-compressed +1.6% -1.0% +2.6% +10.0% ➖ noise
30 datafusion:vortex-compact -0.6% -1.7% +1.2% +10.0% ➖ noise
30 datafusion:vortex-file-compressed -3.0% -1.7% -1.3% +10.0% ➖ noise
30 duckdb:duckdb -1.4% -1.7% +0.3% +10.0% ➖ noise
30 duckdb:vortex-compact +5.3% -1.7% +7.1% +10.0% ➖ noise
30 duckdb:vortex-file-compressed +3.4% -1.7% +5.2% +10.0% ➖ noise
31 datafusion:vortex-compact -0.4% -0.1% -0.4% +10.0% ➖ noise
31 datafusion:vortex-file-compressed -4.3% -0.1% -4.2% +10.0% ➖ noise
31 duckdb:duckdb +0.8% -0.1% +0.9% +10.9% ➖ noise
31 duckdb:vortex-compact +1.0% -0.1% +1.0% +13.4% ➖ noise
31 duckdb:vortex-file-compressed -2.5% -0.1% -2.4% +12.2% ➖ noise
32 datafusion:vortex-compact +0.7% +2.9% -2.1% +15.5% ➖ noise
32 datafusion:vortex-file-compressed -16.6% +2.9% -18.9% +20.4% ✅ faster
32 duckdb:duckdb -9.6% +2.9% -12.2% +12.1% ✅ faster
32 duckdb:vortex-compact +0.6% +2.9% -2.2% +10.0% ➖ noise
32 duckdb:vortex-file-compressed +1.8% +2.9% -1.1% +35.4% ➖ noise
33 datafusion:vortex-compact -4.4% -0.7% -3.7% +10.2% ➖ noise
33 datafusion:vortex-file-compressed -8.7% -0.7% -8.0% +10.0% ➖ noise
33 duckdb:duckdb -7.8% -0.7% -7.2% +13.4% ➖ noise
33 duckdb:vortex-compact -0.9% -0.7% -0.2% +10.0% ➖ noise
33 duckdb:vortex-file-compressed +5.6% -0.7% +6.4% +10.5% ➖ noise
34 datafusion:vortex-compact -3.0% -2.5% -0.5% +13.6% ➖ noise
34 datafusion:vortex-file-compressed -13.5% -2.5% -11.4% +13.0% ➖ noise
34 duckdb:duckdb -9.2% -2.5% -6.9% +13.8% ➖ noise
34 duckdb:vortex-compact -2.1% -2.5% +0.4% +18.1% ➖ noise
34 duckdb:vortex-file-compressed +4.0% -2.5% +6.6% +11.2% ➖ noise
35 datafusion:vortex-compact -0.7% -4.2% +3.7% +10.0% ➖ noise
35 datafusion:vortex-file-compressed -14.5% -4.2% -10.7% +10.0% ✅ faster
35 duckdb:duckdb -2.3% -4.2% +2.0% +17.1% ➖ noise
35 duckdb:vortex-compact -0.2% -4.2% +4.2% +10.0% ➖ noise
35 duckdb:vortex-file-compressed -4.0% -4.2% +0.2% +10.0% ➖ noise
36 datafusion:vortex-compact -1.7% -0.4% -1.3% +11.2% ➖ noise
36 datafusion:vortex-file-compressed -11.6% -0.4% -11.2% +10.0% ✅ faster
36 duckdb:duckdb -0.2% -0.4% +0.2% +10.0% ➖ noise
36 duckdb:vortex-compact -3.6% -0.4% -3.3% +10.0% ➖ noise
36 duckdb:vortex-file-compressed +6.3% -0.4% +6.8% +12.4% ➖ noise
37 datafusion:vortex-compact -2.7% -1.8% -1.0% +10.0% ➖ noise
37 datafusion:vortex-file-compressed -20.9% -1.8% -19.5% +10.0% ✅ faster
37 duckdb:duckdb +0.2% -1.8% +2.0% +11.1% ➖ noise
37 duckdb:vortex-compact +2.8% -1.8% +4.6% +12.3% ➖ noise
37 duckdb:vortex-file-compressed +4.3% -1.8% +6.2% +19.0% ➖ noise
38 datafusion:vortex-compact -11.3% -3.6% -8.0% +10.0% ➖ noise
38 datafusion:vortex-file-compressed -19.2% -3.6% -16.2% +10.0% ✅ faster
38 duckdb:duckdb +1.9% -3.6% +5.7% +15.7% ➖ noise
38 duckdb:vortex-compact -7.5% -3.6% -4.0% +13.3% ➖ noise
38 duckdb:vortex-file-compressed -2.9% -3.6% +0.7% +13.7% ➖ noise
39 datafusion:vortex-compact -14.8% -4.1% -11.2% +13.0% ➖ noise
39 datafusion:vortex-file-compressed -16.3% -4.1% -12.7% +13.1% ✅ faster
39 duckdb:duckdb +5.3% -4.1% +9.7% +14.1% ➖ noise
39 duckdb:vortex-compact -4.7% -4.1% -0.7% +17.7% ➖ noise
39 duckdb:vortex-file-compressed +0.6% -4.1% +4.8% +18.2% ➖ noise
40 datafusion:vortex-compact -8.5% -6.2% -2.4% +10.0% ➖ noise
40 datafusion:vortex-file-compressed -9.7% -6.2% -3.7% +10.0% ➖ noise
40 duckdb:duckdb -4.0% -6.2% +2.4% +13.5% ➖ noise
40 duckdb:vortex-compact -2.1% -6.2% +4.4% +10.0% ➖ noise
40 duckdb:vortex-file-compressed -0.1% -6.2% +6.5% +10.7% ➖ noise
41 datafusion:vortex-compact -9.6% +0.4% -10.0% +10.0% ✅ faster
41 datafusion:vortex-file-compressed -13.7% +0.4% -14.0% +10.0% ✅ faster
41 duckdb:duckdb -2.0% +0.4% -2.4% +10.0% ➖ noise
41 duckdb:vortex-compact -2.9% +0.4% -3.3% +15.8% ➖ noise
41 duckdb:vortex-file-compressed +6.3% +0.4% +5.9% +10.0% ➖ noise
42 datafusion:vortex-compact -6.7% -1.7% -5.0% +10.0% ➖ noise
42 datafusion:vortex-file-compressed -14.1% -1.7% -12.6% +10.0% ✅ faster
42 duckdb:duckdb -3.7% -1.7% -2.0% +10.0% ➖ noise
42 duckdb:vortex-compact +0.8% -1.7% +2.6% +14.4% ➖ noise
42 duckdb:vortex-file-compressed +10.1% -1.7% +12.0% +10.0% 🚨 regression
43 datafusion:vortex-compact -2.7% +0.4% -3.1% +11.3% ➖ noise
43 datafusion:vortex-file-compressed -13.8% +0.4% -14.2% +10.0% ✅ faster
43 duckdb:duckdb -4.3% +0.4% -4.8% +10.0% ➖ noise
43 duckdb:vortex-compact +1.1% +0.4% +0.7% +14.1% ➖ noise
43 duckdb:vortex-file-compressed +3.8% +0.4% +3.4% +10.0% ➖ noise
44 datafusion:vortex-compact -7.0% +0.1% -7.1% +15.1% ➖ noise
44 datafusion:vortex-file-compressed -15.8% +0.1% -15.9% +14.2% ✅ faster
44 duckdb:duckdb +1.8% +0.1% +1.6% +13.1% ➖ noise
44 duckdb:vortex-compact -3.8% +0.1% -3.9% +10.0% ➖ noise
44 duckdb:vortex-file-compressed -3.7% +0.1% -3.8% +10.1% ➖ noise
45 datafusion:vortex-compact -11.4% +1.2% -12.5% +17.3% ➖ noise
45 datafusion:vortex-file-compressed -10.1% +1.2% -11.2% +10.0% ✅ faster
45 duckdb:duckdb +8.3% +1.2% +7.0% +11.7% ➖ noise
45 duckdb:vortex-compact -0.7% +1.2% -1.9% +11.5% ➖ noise
45 duckdb:vortex-file-compressed +1.5% +1.2% +0.2% +12.7% ➖ noise
46 datafusion:vortex-compact -6.6% -2.5% -4.2% +10.0% ➖ noise
46 datafusion:vortex-file-compressed -11.4% -2.5% -9.2% +14.7% ➖ noise
46 duckdb:duckdb +1.6% -2.5% +4.2% +10.0% ➖ noise
46 duckdb:vortex-compact -4.0% -2.5% -1.5% +10.0% ➖ noise
46 duckdb:vortex-file-compressed +4.1% -2.5% +6.8% +10.0% ➖ noise
47 datafusion:vortex-compact -11.7% +0.2% -11.9% +10.0% ✅ faster
47 datafusion:vortex-file-compressed -11.3% +0.2% -11.4% +10.0% ✅ faster
47 duckdb:duckdb -0.2% +0.2% -0.4% +10.0% ➖ noise
47 duckdb:vortex-compact -1.1% +0.2% -1.3% +10.0% ➖ noise
47 duckdb:vortex-file-compressed +4.4% +0.2% +4.2% +10.0% ➖ noise
48 datafusion:vortex-compact -20.8% -0.9% -20.1% +14.1% ✅ faster
48 datafusion:vortex-file-compressed -16.1% -0.9% -15.4% +14.7% ✅ faster
48 duckdb:duckdb -2.4% -0.9% -1.5% +10.0% ➖ noise
48 duckdb:vortex-compact +3.0% -0.9% +3.9% +10.0% ➖ noise
48 duckdb:vortex-file-compressed +1.5% -0.9% +2.4% +10.0% ➖ noise
49 datafusion:vortex-compact -7.9% -2.6% -5.4% +10.0% ➖ noise
49 datafusion:vortex-file-compressed -8.8% -2.6% -6.3% +11.8% ➖ noise
49 duckdb:duckdb -9.1% -2.6% -6.7% +15.1% ➖ noise
49 duckdb:vortex-compact +2.3% -2.6% +5.0% +10.7% ➖ noise
49 duckdb:vortex-file-compressed -8.9% -2.6% -6.4% +17.2% ➖ noise
50 datafusion:vortex-compact -8.3% -0.5% -7.9% +10.0% ➖ noise
50 datafusion:vortex-file-compressed -10.3% -0.5% -9.9% +10.0% ✅ faster
50 duckdb:duckdb -2.3% -0.5% -1.8% +10.0% ➖ noise
50 duckdb:vortex-compact -2.1% -0.5% -1.6% +10.0% ➖ noise
50 duckdb:vortex-file-compressed +6.6% -0.5% +7.1% +10.0% ➖ noise
51 datafusion:vortex-compact -11.0% -1.0% -10.1% +10.0% ✅ faster
51 datafusion:vortex-file-compressed -9.8% -1.0% -8.9% +10.0% ➖ noise
51 duckdb:duckdb -0.5% -1.0% +0.5% +10.0% ➖ noise
51 duckdb:vortex-compact -0.7% -1.0% +0.3% +10.0% ➖ noise
51 duckdb:vortex-file-compressed +2.7% -1.0% +3.8% +10.0% ➖ noise
52 datafusion:vortex-compact -8.6% -2.1% -6.6% +21.9% ➖ noise
52 datafusion:vortex-file-compressed -13.2% -2.1% -11.3% +12.5% ✅ faster
52 duckdb:duckdb +1.1% -2.1% +3.2% +15.1% ➖ noise
52 duckdb:vortex-compact +0.0% -2.1% +2.1% +10.0% ➖ noise
52 duckdb:vortex-file-compressed +5.7% -2.1% +8.0% +14.5% ➖ noise
53 datafusion:vortex-compact -8.0% -1.9% -6.2% +10.0% ➖ noise
53 datafusion:vortex-file-compressed -8.4% -1.9% -6.6% +11.0% ➖ noise
53 duckdb:duckdb +2.8% -1.9% +4.8% +10.0% ➖ noise
53 duckdb:vortex-compact +2.8% -1.9% +4.8% +15.9% ➖ noise
53 duckdb:vortex-file-compressed +0.2% -1.9% +2.1% +10.0% ➖ noise
54 datafusion:vortex-compact -6.1% -3.7% -2.5% +10.0% ➖ noise
54 datafusion:vortex-file-compressed -8.4% -3.7% -4.9% +10.0% ➖ noise
54 duckdb:duckdb +0.5% -3.7% +4.4% +14.2% ➖ noise
54 duckdb:vortex-compact -4.8% -3.7% -1.1% +10.0% ➖ noise
54 duckdb:vortex-file-compressed +1.8% -3.7% +5.7% +10.0% ➖ noise
55 datafusion:vortex-compact -1.4% -1.3% -0.2% +12.0% ➖ noise
55 datafusion:vortex-file-compressed -11.6% -1.3% -10.4% +10.0% ✅ faster
55 duckdb:duckdb +0.4% -1.3% +1.7% +12.9% ➖ noise
55 duckdb:vortex-compact -0.7% -1.3% +0.6% +10.0% ➖ noise
55 duckdb:vortex-file-compressed +3.4% -1.3% +4.7% +10.5% ➖ noise
56 datafusion:vortex-compact -2.4% -4.7% +2.4% +10.0% ➖ noise
56 datafusion:vortex-file-compressed -9.6% -4.7% -5.2% +10.0% ➖ noise
56 duckdb:duckdb -0.6% -4.7% +4.3% +10.0% ➖ noise
56 duckdb:vortex-compact -3.2% -4.7% +1.6% +10.0% ➖ noise
56 duckdb:vortex-file-compressed -3.2% -4.7% +1.6% +10.0% ➖ noise
57 datafusion:vortex-compact -2.9% -2.4% -0.5% +15.5% ➖ noise
57 datafusion:vortex-file-compressed -12.6% -2.4% -10.4% +12.0% ➖ noise
57 duckdb:duckdb +1.6% -2.4% +4.2% +12.8% ➖ noise
57 duckdb:vortex-compact -0.8% -2.4% +1.7% +20.6% ➖ noise
57 duckdb:vortex-file-compressed +2.1% -2.4% +4.7% +10.6% ➖ noise
58 datafusion:vortex-compact -0.0% -3.3% +3.4% +13.1% ➖ noise
58 datafusion:vortex-file-compressed -7.7% -3.3% -4.5% +10.0% ➖ noise
58 duckdb:duckdb +2.9% -3.3% +6.5% +12.0% ➖ noise
58 duckdb:vortex-compact -7.7% -3.3% -4.5% +17.1% ➖ noise
58 duckdb:vortex-file-compressed +2.2% -3.3% +5.8% +10.0% ➖ noise
59 datafusion:vortex-compact -4.3% -2.4% -2.0% +10.0% ➖ noise
59 datafusion:vortex-file-compressed -16.5% -2.4% -14.5% +10.0% ✅ faster
59 duckdb:duckdb +1.1% -2.4% +3.6% +10.0% ➖ noise
59 duckdb:vortex-compact -4.9% -2.4% -2.6% +10.0% ➖ noise
59 duckdb:vortex-file-compressed +4.2% -2.4% +6.8% +10.0% ➖ noise
60 datafusion:vortex-compact -5.4% +0.3% -5.6% +10.0% ➖ noise
60 datafusion:vortex-file-compressed -11.0% +0.3% -11.2% +10.0% ✅ faster
60 duckdb:duckdb +3.2% +0.3% +3.0% +11.6% ➖ noise
60 duckdb:vortex-compact -3.1% +0.3% -3.4% +10.0% ➖ noise
60 duckdb:vortex-file-compressed +0.5% +0.3% +0.3% +14.8% ➖ noise
61 datafusion:vortex-compact -0.5% -0.6% +0.1% +10.0% ➖ noise
61 datafusion:vortex-file-compressed -9.6% -0.6% -9.1% +11.3% ➖ noise
61 duckdb:duckdb +4.7% -0.6% +5.3% +10.0% ➖ noise
61 duckdb:vortex-compact +3.5% -0.6% +4.1% +10.4% ➖ noise
61 duckdb:vortex-file-compressed +5.1% -0.6% +5.7% +14.3% ➖ noise
62 datafusion:vortex-compact -6.6% -13.9% +8.5% +29.8% ➖ noise
62 datafusion:vortex-file-compressed -8.4% -13.9% +6.4% +21.8% ➖ noise
62 duckdb:duckdb +0.1% -13.9% +16.3% +21.4% ➖ noise
62 duckdb:vortex-compact +9.1% -13.9% +26.8% +26.8% 🚨 regression
62 duckdb:vortex-file-compressed +0.5% -13.9% +16.7% +16.7% ➖ noise
63 datafusion:vortex-compact -3.8% +0.3% -4.1% +10.0% ➖ noise
63 datafusion:vortex-file-compressed -13.4% +0.3% -13.6% +10.0% ✅ faster
63 duckdb:duckdb -2.7% +0.3% -3.0% +10.0% ➖ noise
63 duckdb:vortex-compact -4.5% +0.3% -4.7% +10.0% ➖ noise
63 duckdb:vortex-file-compressed +3.5% +0.3% +3.3% +10.0% ➖ noise
64 datafusion:vortex-compact -8.7% -2.1% -6.8% +10.0% ➖ noise
64 datafusion:vortex-file-compressed -11.9% -2.1% -10.0% +10.0% ✅ faster
64 duckdb:duckdb -7.0% -2.1% -5.0% +10.0% ➖ noise
64 duckdb:vortex-compact -2.9% -2.1% -0.8% +10.0% ➖ noise
64 duckdb:vortex-file-compressed +5.1% -2.1% +7.3% +10.8% ➖ noise
65 datafusion:vortex-compact -5.5% +0.0% -5.5% +15.0% ➖ noise
65 datafusion:vortex-file-compressed -12.6% +0.0% -12.6% +10.0% ✅ faster
65 duckdb:duckdb +1.6% +0.0% +1.5% +12.8% ➖ noise
65 duckdb:vortex-compact -0.0% +0.0% -0.0% +10.0% ➖ noise
65 duckdb:vortex-file-compressed +0.5% +0.0% +0.5% +10.0% ➖ noise
66 datafusion:vortex-compact +0.8% -4.3% +5.3% +13.4% ➖ noise
66 datafusion:vortex-file-compressed -8.8% -4.3% -4.7% +11.8% ➖ noise
66 duckdb:duckdb +5.2% -4.3% +9.9% +13.1% ➖ noise
66 duckdb:vortex-compact -5.9% -4.3% -1.7% +13.0% ➖ noise
66 duckdb:vortex-file-compressed +3.6% -4.3% +8.3% +11.4% ➖ noise
67 datafusion:vortex-compact -2.8% +0.7% -3.5% +11.6% ➖ noise
67 datafusion:vortex-file-compressed -11.6% +0.7% -12.2% +10.0% ✅ faster
67 duckdb:duckdb -0.2% +0.7% -0.9% +10.0% ➖ noise
67 duckdb:vortex-compact -1.8% +0.7% -2.5% +10.0% ➖ noise
67 duckdb:vortex-file-compressed +1.0% +0.7% +0.3% +10.0% ➖ noise
68 datafusion:vortex-compact -10.3% -1.6% -8.9% +13.0% ➖ noise
68 datafusion:vortex-file-compressed -4.5% -1.6% -2.9% +13.3% ➖ noise
68 duckdb:duckdb -3.7% -1.6% -2.1% +10.0% ➖ noise
68 duckdb:vortex-compact -9.3% -1.6% -7.9% +10.0% ➖ noise
68 duckdb:vortex-file-compressed -3.1% -1.6% -1.5% +13.7% ➖ noise
69 datafusion:vortex-compact -9.5% -3.2% -6.4% +10.0% ➖ noise
69 datafusion:vortex-file-compressed -13.8% -3.2% -10.9% +10.0% ✅ faster
69 duckdb:duckdb -4.3% -3.2% -1.1% +10.6% ➖ noise
69 duckdb:vortex-compact -6.1% -3.2% -2.9% +10.0% ➖ noise
69 duckdb:vortex-file-compressed +2.5% -3.2% +6.0% +10.0% ➖ noise
70 datafusion:vortex-compact -7.1% -1.7% -5.4% +10.0% ➖ noise
70 datafusion:vortex-file-compressed -12.3% -1.7% -10.8% +10.0% ✅ faster
70 duckdb:duckdb -7.2% -1.7% -5.6% +10.0% ➖ noise
70 duckdb:vortex-compact -2.0% -1.7% -0.3% +16.3% ➖ noise
70 duckdb:vortex-file-compressed -0.3% -1.7% +1.4% +10.0% ➖ noise
71 datafusion:vortex-compact -4.6% +0.9% -5.4% +14.1% ➖ noise
71 datafusion:vortex-file-compressed -11.9% +0.9% -12.6% +10.0% ✅ faster
71 duckdb:duckdb -1.0% +0.9% -1.8% +14.6% ➖ noise
71 duckdb:vortex-compact -2.8% +0.9% -3.6% +12.4% ➖ noise
71 duckdb:vortex-file-compressed -1.5% +0.9% -2.4% +10.0% ➖ noise
72 datafusion:vortex-compact -11.3% -1.8% -9.6% +10.0% ✅ faster
72 datafusion:vortex-file-compressed -13.4% -1.8% -11.8% +10.0% ✅ faster
72 duckdb:duckdb -11.7% -1.8% -10.0% +10.0% ✅ faster
72 duckdb:vortex-compact -2.0% -1.8% -0.2% +10.0% ➖ noise
72 duckdb:vortex-file-compressed -0.5% -1.8% +1.3% +10.0% ➖ noise
73 datafusion:vortex-compact -2.6% -2.7% +0.0% +19.0% ➖ noise
73 datafusion:vortex-file-compressed -16.3% -2.7% -14.0% +27.6% ➖ noise
73 duckdb:duckdb +2.0% -2.7% +4.8% +10.0% ➖ noise
73 duckdb:vortex-compact -2.6% -2.7% +0.1% +10.0% ➖ noise
73 duckdb:vortex-file-compressed +0.5% -2.7% +3.2% +10.0% ➖ noise
74 datafusion:vortex-compact -0.8% -1.5% +0.7% +10.0% ➖ noise
74 datafusion:vortex-file-compressed -10.5% -1.5% -9.1% +10.0% ✅ faster
74 duckdb:duckdb +0.0% -1.5% +1.5% +10.0% ➖ noise
74 duckdb:vortex-compact +9.5% -1.5% +11.1% +17.8% ➖ noise
74 duckdb:vortex-file-compressed -12.0% -1.5% -10.7% +22.6% ➖ noise
75 datafusion:vortex-compact +3.9% -2.7% +6.8% +10.8% ➖ noise
75 datafusion:vortex-file-compressed -14.1% -2.7% -11.8% +11.4% ✅ faster
75 duckdb:duckdb -3.6% -2.7% -1.0% +10.0% ➖ noise
75 duckdb:vortex-compact -1.7% -2.7% +1.0% +10.0% ➖ noise
75 duckdb:vortex-file-compressed -4.5% -2.7% -1.9% +10.0% ➖ noise
76 datafusion:vortex-compact +0.8% +2.1% -1.3% +10.0% ➖ noise
76 datafusion:vortex-file-compressed -11.5% +2.1% -13.3% +18.9% ➖ noise
76 duckdb:duckdb -3.3% +2.1% -5.3% +13.7% ➖ noise
76 duckdb:vortex-compact -4.1% +2.1% -6.1% +17.1% ➖ noise
76 duckdb:vortex-file-compressed -8.2% +2.1% -10.1% +22.9% ➖ noise
77 datafusion:vortex-compact -1.2% -6.1% +5.2% +13.7% ➖ noise
77 datafusion:vortex-file-compressed -12.7% -6.1% -7.0% +11.9% ➖ noise
77 duckdb:duckdb -4.4% -6.1% +1.8% +16.9% ➖ noise
77 duckdb:vortex-compact -11.2% -6.1% -5.4% +15.4% ➖ noise
77 duckdb:vortex-file-compressed +3.6% -6.1% +10.3% +11.4% ➖ noise
78 datafusion:vortex-compact -2.7% +1.1% -3.8% +10.0% ➖ noise
78 datafusion:vortex-file-compressed -15.8% +1.1% -16.7% +10.0% ✅ faster
78 duckdb:duckdb -2.5% +1.1% -3.5% +10.0% ➖ noise
78 duckdb:vortex-compact -6.7% +1.1% -7.8% +10.0% ➖ noise
78 duckdb:vortex-file-compressed -2.8% +1.1% -3.8% +10.0% ➖ noise
79 datafusion:vortex-compact -1.8% +0.1% -1.9% +10.0% ➖ noise
79 datafusion:vortex-file-compressed -12.5% +0.1% -12.6% +17.7% ➖ noise
79 duckdb:duckdb -4.6% +0.1% -4.7% +10.7% ➖ noise
79 duckdb:vortex-compact -4.1% +0.1% -4.2% +10.5% ➖ noise
79 duckdb:vortex-file-compressed -0.7% +0.1% -0.9% +27.6% ➖ noise
80 datafusion:vortex-compact -3.7% -0.9% -2.7% +10.0% ➖ noise
80 datafusion:vortex-file-compressed -14.7% -0.9% -13.9% +10.0% ✅ faster
80 duckdb:duckdb -12.0% -0.9% -11.2% +10.3% ✅ faster
80 duckdb:vortex-compact +1.0% -0.9% +1.9% +13.3% ➖ noise
80 duckdb:vortex-file-compressed +3.5% -0.9% +4.5% +10.0% ➖ noise
81 datafusion:vortex-compact -3.6% +1.6% -5.1% +10.4% ➖ noise
81 datafusion:vortex-file-compressed -18.0% +1.6% -19.2% +10.0% ✅ faster
81 duckdb:duckdb -7.0% +1.6% -8.4% +12.6% ➖ noise
81 duckdb:vortex-compact -10.8% +1.6% -12.2% +11.6% ✅ faster
81 duckdb:vortex-file-compressed +4.3% +1.6% +2.7% +12.1% ➖ noise
82 datafusion:vortex-compact -3.8% +1.6% -5.3% +10.0% ➖ noise
82 datafusion:vortex-file-compressed -14.9% +1.6% -16.2% +11.2% ✅ faster
82 duckdb:duckdb -5.7% +1.6% -7.2% +13.0% ➖ noise
82 duckdb:vortex-compact -0.5% +1.6% -2.0% +15.4% ➖ noise
82 duckdb:vortex-file-compressed -5.1% +1.6% -6.6% +11.0% ➖ noise
83 datafusion:vortex-compact -4.4% +0.2% -4.6% +10.0% ➖ noise
83 datafusion:vortex-file-compressed -18.1% +0.2% -18.3% +10.7% ✅ faster
83 duckdb:duckdb -6.9% +0.2% -7.1% +10.2% ➖ noise
83 duckdb:vortex-compact -2.4% +0.2% -2.6% +11.3% ➖ noise
83 duckdb:vortex-file-compressed +0.6% +0.2% +0.4% +14.7% ➖ noise
84 datafusion:vortex-compact +0.5% -3.2% +3.8% +10.0% ➖ noise
84 datafusion:vortex-file-compressed -19.3% -3.2% -16.6% +10.0% ✅ faster
84 duckdb:duckdb -5.5% -3.2% -2.3% +10.0% ➖ noise
84 duckdb:vortex-compact -0.2% -3.2% +3.1% +10.0% ➖ noise
84 duckdb:vortex-file-compressed +5.3% -3.2% +8.8% +10.0% ➖ noise
85 datafusion:vortex-compact -1.0% -4.3% +3.5% +13.6% ➖ noise
85 datafusion:vortex-file-compressed -11.4% -4.3% -7.4% +10.0% ➖ noise
85 duckdb:duckdb +1.1% -4.3% +5.6% +10.0% ➖ noise
85 duckdb:vortex-compact -1.5% -4.3% +3.0% +10.0% ➖ noise
85 duckdb:vortex-file-compressed +2.3% -4.3% +7.0% +10.0% ➖ noise
86 datafusion:vortex-compact +1.7% +10.9% -8.3% +20.3% ➖ noise
86 datafusion:vortex-file-compressed -5.3% +10.9% -14.6% +17.8% ➖ noise
86 duckdb:duckdb +3.5% +10.9% -6.6% +19.9% ➖ noise
86 duckdb:vortex-compact +1.8% +10.9% -8.2% +16.9% ➖ noise
86 duckdb:vortex-file-compressed +2.3% +10.9% -7.8% +15.1% ➖ noise
87 datafusion:vortex-compact -6.2% -1.5% -4.8% +10.0% ➖ noise
87 datafusion:vortex-file-compressed -11.1% -1.5% -9.7% +10.0% ✅ faster
87 duckdb:duckdb +3.5% -1.5% +5.1% +10.0% ➖ noise
87 duckdb:vortex-compact -11.2% -1.5% -9.9% +11.1% ➖ noise
87 duckdb:vortex-file-compressed -3.3% -1.5% -1.9% +11.0% ➖ noise
88 datafusion:vortex-compact +0.4% +0.5% -0.0% +10.0% ➖ noise
88 datafusion:vortex-file-compressed -9.1% +0.5% -9.5% +10.0% ✅ faster
88 duckdb:duckdb +3.9% +0.5% +3.4% +10.0% ➖ noise
88 duckdb:vortex-compact -4.3% +0.5% -4.8% +10.0% ➖ noise
88 duckdb:vortex-file-compressed -1.0% +0.5% -1.5% +16.4% ➖ noise
89 datafusion:vortex-compact -1.5% +3.5% -4.8% +10.0% ➖ noise
89 datafusion:vortex-file-compressed -14.2% +3.5% -17.1% +19.6% ✅ faster
89 duckdb:duckdb +2.2% +3.5% -1.2% +12.3% ➖ noise
89 duckdb:vortex-compact +1.2% +3.5% -2.2% +10.0% ➖ noise
89 duckdb:vortex-file-compressed -1.4% +3.5% -4.8% +10.0% ➖ noise
90 datafusion:vortex-compact +0.3% -3.8% +4.3% +13.2% ➖ noise
90 datafusion:vortex-file-compressed -14.8% -3.8% -11.4% +13.1% ➖ noise
90 duckdb:duckdb -0.2% -3.8% +3.8% +13.3% ➖ noise
90 duckdb:vortex-compact +4.1% -3.8% +8.2% +14.1% ➖ noise
90 duckdb:vortex-file-compressed +0.1% -3.8% +4.1% +12.4% ➖ noise
91 datafusion:vortex-compact -2.2% -5.2% +3.1% +10.0% ➖ noise
91 datafusion:vortex-file-compressed -14.6% -5.2% -10.0% +10.0% ✅ faster
91 duckdb:duckdb +1.0% -5.2% +6.5% +10.0% ➖ noise
91 duckdb:vortex-compact -4.5% -5.2% +0.7% +10.0% ➖ noise
91 duckdb:vortex-file-compressed +2.7% -5.2% +8.3% +10.0% ➖ noise
92 datafusion:vortex-compact +6.0% -9.5% +17.1% +12.9% 🚨 regression
92 datafusion:vortex-file-compressed -17.0% -9.5% -8.3% +14.8% ➖ noise
92 duckdb:duckdb -2.7% -9.5% +7.5% +11.0% ➖ noise
92 duckdb:vortex-compact +18.2% -9.5% +30.6% +15.5% 🚨 regression
92 duckdb:vortex-file-compressed -5.2% -9.5% +4.8% +24.6% ➖ noise
93 datafusion:vortex-compact -0.4% -1.5% +1.1% +20.9% ➖ noise
93 datafusion:vortex-file-compressed -9.9% -1.5% -8.5% +16.3% ➖ noise
93 duckdb:duckdb -9.9% -1.5% -8.5% +12.7% ➖ noise
93 duckdb:vortex-compact +7.2% -1.5% +8.8% +13.8% ➖ noise
93 duckdb:vortex-file-compressed +3.2% -1.5% +4.7% +11.2% ➖ noise
94 datafusion:vortex-compact -7.7% -0.9% -6.9% +12.1% ➖ noise
94 datafusion:vortex-file-compressed -10.8% -0.9% -10.0% +10.0% ✅ faster
94 duckdb:duckdb +4.0% -0.9% +5.0% +11.0% ➖ noise
94 duckdb:vortex-compact -1.5% -0.9% -0.6% +10.0% ➖ noise
94 duckdb:vortex-file-compressed +0.9% -0.9% +1.8% +10.9% ➖ noise
95 datafusion:vortex-compact -9.6% -9.2% -0.4% +10.0% ➖ noise
95 datafusion:vortex-file-compressed -10.0% -9.2% -0.9% +10.0% ➖ noise
95 duckdb:duckdb +16.9% -9.2% +28.7% +17.9% 🚨 regression
95 duckdb:vortex-compact -1.1% -9.2% +8.8% +15.8% ➖ noise
95 duckdb:vortex-file-compressed +8.3% -9.2% +19.2% +14.6% 🚨 regression
96 datafusion:vortex-compact -9.1% -0.8% -8.4% +11.9% ➖ noise
96 datafusion:vortex-file-compressed -10.8% -0.8% -10.1% +10.0% ✅ faster
96 duckdb:duckdb +3.6% -0.8% +4.5% +16.6% ➖ noise
96 duckdb:vortex-compact -7.8% -0.8% -7.0% +10.0% ➖ noise
96 duckdb:vortex-file-compressed +3.2% -0.8% +4.0% +13.1% ➖ noise
97 datafusion:vortex-compact -6.4% -1.0% -5.5% +10.4% ➖ noise
97 datafusion:vortex-file-compressed -10.7% -1.0% -9.8% +12.8% ➖ noise
97 duckdb:duckdb +0.1% -1.0% +1.1% +18.0% ➖ noise
97 duckdb:vortex-compact -4.6% -1.0% -3.7% +12.2% ➖ noise
97 duckdb:vortex-file-compressed +1.3% -1.0% +2.3% +14.0% ➖ noise
98 datafusion:vortex-compact +1.8% -4.2% +6.2% +14.9% ➖ noise
98 datafusion:vortex-file-compressed -14.9% -4.2% -11.2% +11.1% ✅ faster
98 duckdb:duckdb +8.2% -4.2% +12.9% +15.9% ➖ noise
98 duckdb:vortex-compact -3.2% -4.2% +1.0% +14.9% ➖ noise
98 duckdb:vortex-file-compressed +0.5% -4.2% +4.9% +10.0% ➖ noise
99 datafusion:vortex-compact +5.1% +8.0% -2.6% +23.9% ➖ noise
99 datafusion:vortex-file-compressed -7.2% +8.0% -14.0% +12.6% ✅ faster
99 duckdb:duckdb +4.9% +8.0% -2.9% +12.9% ➖ noise
99 duckdb:vortex-compact +7.7% +8.0% -0.3% +21.8% ➖ noise
99 duckdb:vortex-file-compressed -1.3% +8.0% -8.6% +14.3% ➖ 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: -0.7%
Vortex (geomean): 1.002x ➖
Parquet (geomean): 1.007x ➖
Shifts: Parquet (control) +0.7% · Median polish -0.1%


datafusion / vortex-file-compressed (0.999x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 383249369 395917870 0.97
tpch_q02/datafusion:vortex-file-compressed 103656664 104684379 0.99
tpch_q03/datafusion:vortex-file-compressed 209769865 212280490 0.99
tpch_q04/datafusion:vortex-file-compressed 112295442 111374683 1.01
tpch_q05/datafusion:vortex-file-compressed 365724922 368225799 0.99
tpch_q06/datafusion:vortex-file-compressed 41215406 41749890 0.99
tpch_q07/datafusion:vortex-file-compressed 499658093 493748354 1.01
tpch_q08/datafusion:vortex-file-compressed 352660774 347894444 1.01
tpch_q09/datafusion:vortex-file-compressed 619315359 619993994 1.00
tpch_q10/datafusion:vortex-file-compressed 227464893 224701798 1.01
tpch_q11/datafusion:vortex-file-compressed 80862549 81064921 1.00
tpch_q12/datafusion:vortex-file-compressed 118011746 118204126 1.00
tpch_q13/datafusion:vortex-file-compressed 207581133 212179474 0.98
tpch_q14/datafusion:vortex-file-compressed 55806212 54928514 1.02
tpch_q15/datafusion:vortex-file-compressed 104589635 104340720 1.00
tpch_q16/datafusion:vortex-file-compressed 74430430 76019925 0.98
tpch_q17/datafusion:vortex-file-compressed 619090964 619874305 1.00
tpch_q18/datafusion:vortex-file-compressed 836410912 836321511 1.00
tpch_q19/datafusion:vortex-file-compressed 91582786 91590645 1.00
tpch_q20/datafusion:vortex-file-compressed 164485402 163131466 1.01
tpch_q21/datafusion:vortex-file-compressed 643818722 644253012 1.00
tpch_q22/datafusion:vortex-file-compressed 66209946 64776642 1.02
datafusion / vortex-compact (1.005x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 434586103 427320388 1.02
tpch_q02/datafusion:vortex-compact 107592648 108010305 1.00
tpch_q03/datafusion:vortex-compact 213450668 210034990 1.02
tpch_q04/datafusion:vortex-compact 119604334 117897018 1.01
tpch_q05/datafusion:vortex-compact 367656586 367174190 1.00
tpch_q06/datafusion:vortex-compact 61294821 62792932 0.98
tpch_q07/datafusion:vortex-compact 508380699 509077235 1.00
tpch_q08/datafusion:vortex-compact 354433699 349478257 1.01
tpch_q09/datafusion:vortex-compact 625336587 624713766 1.00
tpch_q10/datafusion:vortex-compact 241308220 241961069 1.00
tpch_q11/datafusion:vortex-compact 81556750 80846948 1.01
tpch_q12/datafusion:vortex-compact 157891032 158254553 1.00
tpch_q13/datafusion:vortex-compact 260297006 256598441 1.01
tpch_q14/datafusion:vortex-compact 71661771 71824728 1.00
tpch_q15/datafusion:vortex-compact 158997129 157426838 1.01
tpch_q16/datafusion:vortex-compact 79753050 77741040 1.03
tpch_q17/datafusion:vortex-compact 624592382 629553259 0.99
tpch_q18/datafusion:vortex-compact 827416167 823819860 1.00
tpch_q19/datafusion:vortex-compact 131897039 129256074 1.02
tpch_q20/datafusion:vortex-compact 184878511 184872652 1.00
tpch_q21/datafusion:vortex-compact 651401193 642209100 1.01
tpch_q22/datafusion:vortex-compact 70505590 70910688 0.99
datafusion / parquet (1.006x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 467876098 445800999 1.05
tpch_q02/datafusion:parquet 167393786 170815665 0.98
tpch_q03/datafusion:parquet 276418954 277411905 1.00
tpch_q04/datafusion:parquet 124100587 122950104 1.01
tpch_q05/datafusion:parquet 426740091 422191830 1.01
tpch_q06/datafusion:parquet 132992599 124364106 1.07
tpch_q07/datafusion:parquet 590713353 588261930 1.00
tpch_q08/datafusion:parquet 450186480 447414037 1.01
tpch_q09/datafusion:parquet 725089189 719282627 1.01
tpch_q10/datafusion:parquet 482573360 482351647 1.00
tpch_q11/datafusion:parquet 114222105 115153863 0.99
tpch_q12/datafusion:parquet 199618970 192332534 1.04
tpch_q13/datafusion:parquet 327993543 328704069 1.00
tpch_q14/datafusion:parquet 151856035 157277744 0.97
tpch_q15/datafusion:parquet 243854646 248257926 0.98
tpch_q16/datafusion:parquet 127591540 121055002 1.05
tpch_q17/datafusion:parquet 668371458 666395048 1.00
tpch_q18/datafusion:parquet 859041006 871636070 0.99
tpch_q19/datafusion:parquet 255650058 254162436 1.01
tpch_q20/datafusion:parquet 284182100 285963536 0.99
tpch_q21/datafusion:parquet 678539713 679368287 1.00
tpch_q22/datafusion:parquet 210618379 212271509 0.99
datafusion / arrow (0.997x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 607054404 595923241 1.02
tpch_q02/datafusion:arrow 166419484 163932328 1.02
tpch_q03/datafusion:arrow 470031098 456514345 1.03
tpch_q04/datafusion:arrow 372728258 339832940 1.10
tpch_q05/datafusion:arrow 939855826 912006698 1.03
tpch_q06/datafusion:arrow 277660406 285287369 0.97
tpch_q07/datafusion:arrow 1140504627 1167189843 0.98
tpch_q08/datafusion:arrow 1134485135 1122633587 1.01
tpch_q09/datafusion:arrow 1334857239 1342921052 0.99
tpch_q10/datafusion:arrow 580488574 585624378 0.99
tpch_q11/datafusion:arrow 139002984 138394554 1.00
tpch_q12/datafusion:arrow 744569139 799654866 0.93
tpch_q13/datafusion:arrow 491605361 497084118 0.99
tpch_q14/datafusion:arrow 309064116 320305335 0.96
tpch_q15/datafusion:arrow 668684614 687068858 0.97
tpch_q16/datafusion:arrow 106885439 103129870 1.04
tpch_q17/datafusion:arrow 1301493885 1313045901 0.99
tpch_q18/datafusion:arrow 1825408027 1924658764 0.95
tpch_q19/datafusion:arrow 480246558 488894511 0.98
tpch_q20/datafusion:arrow 475523795 486776144 0.98
tpch_q21/datafusion:arrow 2955291640 2982894844 0.99
tpch_q22/datafusion:arrow 130138169 127545806 1.02
duckdb / vortex-file-compressed (1.002x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 172581489 171788246 1.00
tpch_q02/duckdb:vortex-file-compressed 50787019 50689977 1.00
tpch_q03/duckdb:vortex-file-compressed 123291285 123900890 1.00
tpch_q04/duckdb:vortex-file-compressed 150202789 151023320 0.99
tpch_q05/duckdb:vortex-file-compressed 128101334 128079767 1.00
tpch_q06/duckdb:vortex-file-compressed 46223261 45818857 1.01
tpch_q07/duckdb:vortex-file-compressed 142776065 144325758 0.99
tpch_q08/duckdb:vortex-file-compressed 170639851 168883478 1.01
tpch_q09/duckdb:vortex-file-compressed 323587281 321710520 1.01
tpch_q10/duckdb:vortex-file-compressed 142484897 141158699 1.01
tpch_q11/duckdb:vortex-file-compressed 32744213 33032558 0.99
tpch_q12/duckdb:vortex-file-compressed 91494103 93297614 0.98
tpch_q13/duckdb:vortex-file-compressed 225079889 225905797 1.00
tpch_q14/duckdb:vortex-file-compressed 65981434 66355216 0.99
tpch_q15/duckdb:vortex-file-compressed 87685089 86880895 1.01
tpch_q16/duckdb:vortex-file-compressed 80132583 78937930 1.02
tpch_q17/duckdb:vortex-file-compressed 98200440 99302736 0.99
tpch_q18/duckdb:vortex-file-compressed 292395740 287157573 1.02
tpch_q19/duckdb:vortex-file-compressed 83512898 83301337 1.00
tpch_q20/duckdb:vortex-file-compressed 157584714 156316853 1.01
tpch_q21/duckdb:vortex-file-compressed 564036537 566727211 1.00
tpch_q22/duckdb:vortex-file-compressed 72458989 71025576 1.02
duckdb / vortex-compact (1.003x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 227164192 226002378 1.01
tpch_q02/duckdb:vortex-compact 55070008 55665561 0.99
tpch_q03/duckdb:vortex-compact 138342603 137148922 1.01
tpch_q04/duckdb:vortex-compact 172496473 169108865 1.02
tpch_q05/duckdb:vortex-compact 143294374 142288763 1.01
tpch_q06/duckdb:vortex-compact 82458019 82174770 1.00
tpch_q07/duckdb:vortex-compact 195712762 196380270 1.00
tpch_q08/duckdb:vortex-compact 185000023 184701621 1.00
tpch_q09/duckdb:vortex-compact 349861535 348696975 1.00
tpch_q10/duckdb:vortex-compact 175380978 175101647 1.00
tpch_q11/duckdb:vortex-compact 40138185 39880688 1.01
tpch_q12/duckdb:vortex-compact 199394973 200106156 1.00
tpch_q13/duckdb:vortex-compact 275781128 275420298 1.00
tpch_q14/duckdb:vortex-compact 98925254 98810274 1.00
tpch_q15/duckdb:vortex-compact 110135491 113234449 0.97
tpch_q16/duckdb:vortex-compact 83704055 83192303 1.01
tpch_q17/duckdb:vortex-compact 112416261 110293539 1.02
tpch_q18/duckdb:vortex-compact 288485711 283742845 1.02
tpch_q19/duckdb:vortex-compact 107553542 106698751 1.01
tpch_q20/duckdb:vortex-compact 196281104 198946861 0.99
tpch_q21/duckdb:vortex-compact 605383844 604549810 1.00
tpch_q22/duckdb:vortex-compact 84900883 83686887 1.01
duckdb / parquet (1.008x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 256168878 255001897 1.00
tpch_q02/duckdb:parquet 99979832 93658169 1.07
tpch_q03/duckdb:parquet 208094922 210348444 0.99
tpch_q04/duckdb:parquet 131808646 133076884 0.99
tpch_q05/duckdb:parquet 215110500 213948198 1.01
tpch_q06/duckdb:parquet 66365832 64969881 1.02
tpch_q07/duckdb:parquet 181635316 179431776 1.01
tpch_q08/duckdb:parquet 249951997 250662478 1.00
tpch_q09/duckdb:parquet 497998111 476669982 1.04
tpch_q10/duckdb:parquet 607652268 608565472 1.00
tpch_q11/duckdb:parquet 57462078 56422782 1.02
tpch_q12/duckdb:parquet 124604694 123188463 1.01
tpch_q13/duckdb:parquet 444696866 444016238 1.00
tpch_q14/duckdb:parquet 174391793 169536506 1.03
tpch_q15/duckdb:parquet 97296595 95796279 1.02
tpch_q16/duckdb:parquet 158611841 159872288 0.99
tpch_q17/duckdb:parquet 173968541 174815081 1.00
tpch_q18/duckdb:parquet 351554627 356060118 0.99
tpch_q19/duckdb:parquet 282632961 279752484 1.01
tpch_q20/duckdb:parquet 223482099 226710250 0.99
tpch_q21/duckdb:parquet 551500022 554573223 0.99
tpch_q22/duckdb:parquet 290074248 290141384 1.00
duckdb / duckdb (0.996x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 116588278 116381526 1.00
tpch_q02/duckdb:duckdb 46685516 48699130 0.96
tpch_q03/duckdb:duckdb 97410403 96846105 1.01
tpch_q04/duckdb:duckdb 132339060 132360194 1.00
tpch_q05/duckdb:duckdb 111696095 110661928 1.01
tpch_q06/duckdb:duckdb 37399416 37708731 0.99
tpch_q07/duckdb:duckdb 85974376 86970487 0.99
tpch_q08/duckdb:duckdb 110902448 111244845 1.00
tpch_q09/duckdb:duckdb 269451983 274644624 0.98
tpch_q10/duckdb:duckdb 200095939 203964140 0.98
tpch_q11/duckdb:duckdb 15498334 15298711 1.01
tpch_q12/duckdb:duckdb 84860783 85225846 1.00
tpch_q13/duckdb:duckdb 220119661 220474898 1.00
tpch_q14/duckdb:duckdb 69906297 71010054 0.98
tpch_q15/duckdb:duckdb 77923486 79142050 0.98
tpch_q16/duckdb:duckdb 73215979 73300259 1.00
tpch_q17/duckdb:duckdb 85104096 84926866 1.00
tpch_q18/duckdb:duckdb 211507805 213486612 0.99
tpch_q19/duckdb:duckdb 116477654 116409341 1.00
tpch_q20/duckdb:duckdb 111975779 112122307 1.00
tpch_q21/duckdb:duckdb 289442301 289931460 1.00
tpch_q22/duckdb:duckdb 69997186 67713068 1.03
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow +1.9% +2.7% -0.8% +10.0% ➖ noise
1 datafusion:vortex-compact +1.7% +2.7% -1.0% +10.0% ➖ noise
1 datafusion:vortex-file-compressed -3.2% +2.7% -5.7% +10.0% ➖ noise
1 duckdb:duckdb +0.2% +2.7% -2.4% +10.0% ➖ noise
1 duckdb:vortex-compact +0.5% +2.7% -2.1% +10.0% ➖ noise
1 duckdb:vortex-file-compressed +0.5% +2.7% -2.2% +10.0% ➖ noise
2 datafusion:arrow +1.5% +2.3% -0.7% +10.0% ➖ noise
2 datafusion:vortex-compact -0.4% +2.3% -2.6% +10.0% ➖ noise
2 datafusion:vortex-file-compressed -1.0% +2.3% -3.2% +10.0% ➖ noise
2 duckdb:duckdb -4.1% +2.3% -6.3% +10.0% ➖ noise
2 duckdb:vortex-compact -1.1% +2.3% -3.3% +11.9% ➖ noise
2 duckdb:vortex-file-compressed +0.2% +2.3% -2.0% +10.0% ➖ noise
3 datafusion:arrow +3.0% -0.7% +3.7% +10.0% ➖ noise
3 datafusion:vortex-compact +1.6% -0.7% +2.4% +10.0% ➖ noise
3 datafusion:vortex-file-compressed -1.2% -0.7% -0.5% +10.0% ➖ noise
3 duckdb:duckdb +0.6% -0.7% +1.3% +10.0% ➖ noise
3 duckdb:vortex-compact +0.9% -0.7% +1.6% +10.0% ➖ noise
3 duckdb:vortex-file-compressed -0.5% -0.7% +0.2% +10.0% ➖ noise
4 datafusion:arrow +9.7% -0.0% +9.7% +10.0% ➖ noise
4 datafusion:vortex-compact +1.4% -0.0% +1.5% +10.0% ➖ noise
4 datafusion:vortex-file-compressed +0.8% -0.0% +0.8% +10.0% ➖ noise
4 duckdb:duckdb -0.0% -0.0% -0.0% +10.0% ➖ noise
4 duckdb:vortex-compact +2.0% -0.0% +2.0% +10.0% ➖ noise
4 duckdb:vortex-file-compressed -0.5% -0.0% -0.5% +10.0% ➖ noise
5 datafusion:arrow +3.1% +0.8% +2.2% +10.0% ➖ noise
5 datafusion:vortex-compact +0.1% +0.8% -0.7% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -0.7% +0.8% -1.5% +10.0% ➖ noise
5 duckdb:duckdb +0.9% +0.8% +0.1% +10.0% ➖ noise
5 duckdb:vortex-compact +0.7% +0.8% -0.1% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +0.0% +0.8% -0.8% +10.0% ➖ noise
6 datafusion:arrow -2.7% +4.5% -6.9% +10.0% ➖ noise
6 datafusion:vortex-compact -2.4% +4.5% -6.6% +10.0% ➖ noise
6 datafusion:vortex-file-compressed -1.3% +4.5% -5.5% +10.0% ➖ noise
6 duckdb:duckdb -0.8% +4.5% -5.1% +10.0% ➖ noise
6 duckdb:vortex-compact +0.3% +4.5% -4.0% +10.0% ➖ noise
6 duckdb:vortex-file-compressed +0.9% +4.5% -3.5% +12.3% ➖ noise
7 datafusion:arrow -2.3% +0.8% -3.1% +10.0% ➖ noise
7 datafusion:vortex-compact -0.1% +0.8% -1.0% +10.0% ➖ noise
7 datafusion:vortex-file-compressed +1.2% +0.8% +0.4% +10.0% ➖ noise
7 duckdb:duckdb -1.1% +0.8% -2.0% +10.0% ➖ noise
7 duckdb:vortex-compact -0.3% +0.8% -1.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -1.1% +0.8% -1.9% +10.0% ➖ noise
8 datafusion:arrow +1.1% +0.2% +0.9% +10.0% ➖ noise
8 datafusion:vortex-compact +1.4% +0.2% +1.2% +10.0% ➖ noise
8 datafusion:vortex-file-compressed +1.4% +0.2% +1.2% +10.0% ➖ noise
8 duckdb:duckdb -0.3% +0.2% -0.5% +10.0% ➖ noise
8 duckdb:vortex-compact +0.2% +0.2% -0.0% +10.0% ➖ noise
8 duckdb:vortex-file-compressed +1.0% +0.2% +0.9% +10.0% ➖ noise
9 datafusion:arrow -0.6% +2.6% -3.1% +10.0% ➖ noise
9 datafusion:vortex-compact +0.1% +2.6% -2.5% +10.0% ➖ noise
9 datafusion:vortex-file-compressed -0.1% +2.6% -2.7% +10.0% ➖ noise
9 duckdb:duckdb -1.9% +2.6% -4.4% +10.0% ➖ noise
9 duckdb:vortex-compact +0.3% +2.6% -2.2% +10.0% ➖ noise
9 duckdb:vortex-file-compressed +0.6% +2.6% -2.0% +10.0% ➖ noise
10 datafusion:arrow -0.9% -0.1% -0.8% +10.0% ➖ noise
10 datafusion:vortex-compact -0.3% -0.1% -0.2% +10.0% ➖ noise
10 datafusion:vortex-file-compressed +1.2% -0.1% +1.3% +10.0% ➖ noise
10 duckdb:duckdb -1.9% -0.1% -1.8% +10.0% ➖ noise
10 duckdb:vortex-compact +0.2% -0.1% +0.2% +10.0% ➖ noise
10 duckdb:vortex-file-compressed +0.9% -0.1% +1.0% +10.0% ➖ noise
11 datafusion:arrow +0.4% +0.5% -0.1% +10.0% ➖ noise
11 datafusion:vortex-compact +0.9% +0.5% +0.4% +10.0% ➖ noise
11 datafusion:vortex-file-compressed -0.2% +0.5% -0.8% +10.0% ➖ noise
11 duckdb:duckdb +1.3% +0.5% +0.8% +12.3% ➖ noise
11 duckdb:vortex-compact +0.6% +0.5% +0.1% +10.0% ➖ noise
11 duckdb:vortex-file-compressed -0.9% +0.5% -1.4% +15.0% ➖ noise
12 datafusion:arrow -6.9% +2.5% -9.1% +35.2% ➖ noise
12 datafusion:vortex-compact -0.2% +2.5% -2.6% +10.0% ➖ noise
12 datafusion:vortex-file-compressed -0.2% +2.5% -2.6% +10.0% ➖ noise
12 duckdb:duckdb -0.4% +2.5% -2.8% +10.0% ➖ noise
12 duckdb:vortex-compact -0.4% +2.5% -2.7% +10.0% ➖ noise
12 duckdb:vortex-file-compressed -1.9% +2.5% -4.3% +10.0% ➖ noise
13 datafusion:arrow -1.1% -0.0% -1.1% +10.0% ➖ noise
13 datafusion:vortex-compact +1.4% -0.0% +1.5% +10.0% ➖ noise
13 datafusion:vortex-file-compressed -2.2% -0.0% -2.1% +10.0% ➖ noise
13 duckdb:duckdb -0.2% -0.0% -0.1% +10.0% ➖ noise
13 duckdb:vortex-compact +0.1% -0.0% +0.2% +10.0% ➖ noise
13 duckdb:vortex-file-compressed -0.4% -0.0% -0.3% +10.0% ➖ noise
14 datafusion:arrow -3.5% -0.3% -3.2% +10.0% ➖ noise
14 datafusion:vortex-compact -0.2% -0.3% +0.1% +10.0% ➖ noise
14 datafusion:vortex-file-compressed +1.6% -0.3% +1.9% +10.0% ➖ noise
14 duckdb:duckdb -1.6% -0.3% -1.2% +10.0% ➖ noise
14 duckdb:vortex-compact +0.1% -0.3% +0.5% +10.0% ➖ noise
14 duckdb:vortex-file-compressed -0.6% -0.3% -0.2% +10.0% ➖ noise
15 datafusion:arrow -2.7% -0.1% -2.6% +10.0% ➖ noise
15 datafusion:vortex-compact +1.0% -0.1% +1.1% +10.0% ➖ noise
15 datafusion:vortex-file-compressed +0.2% -0.1% +0.4% +10.0% ➖ noise
15 duckdb:duckdb -1.5% -0.1% -1.4% +10.0% ➖ noise
15 duckdb:vortex-compact -2.7% -0.1% -2.6% +10.0% ➖ noise
15 duckdb:vortex-file-compressed +0.9% -0.1% +1.0% +10.0% ➖ noise
16 datafusion:arrow +3.6% +2.3% +1.4% +10.0% ➖ noise
16 datafusion:vortex-compact +2.6% +2.3% +0.3% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -2.1% +2.3% -4.3% +10.0% ➖ noise
16 duckdb:duckdb -0.1% +2.3% -2.3% +10.0% ➖ noise
16 duckdb:vortex-compact +0.6% +2.3% -1.6% +10.0% ➖ noise
16 duckdb:vortex-file-compressed +1.5% +2.3% -0.7% +10.0% ➖ noise
17 datafusion:arrow -0.9% -0.1% -0.8% +10.0% ➖ noise
17 datafusion:vortex-compact -0.8% -0.1% -0.7% +10.0% ➖ noise
17 datafusion:vortex-file-compressed -0.1% -0.1% -0.0% +10.0% ➖ noise
17 duckdb:duckdb +0.2% -0.1% +0.3% +10.0% ➖ noise
17 duckdb:vortex-compact +1.9% -0.1% +2.0% +10.0% ➖ noise
17 duckdb:vortex-file-compressed -1.1% -0.1% -1.0% +10.0% ➖ noise
18 datafusion:arrow -5.2% -1.4% -3.9% +10.0% ➖ noise
18 datafusion:vortex-compact +0.4% -1.4% +1.8% +10.0% ➖ noise
18 datafusion:vortex-file-compressed +0.0% -1.4% +1.4% +10.0% ➖ noise
18 duckdb:duckdb -0.9% -1.4% +0.4% +10.0% ➖ noise
18 duckdb:vortex-compact +1.7% -1.4% +3.1% +10.0% ➖ noise
18 duckdb:vortex-file-compressed +1.8% -1.4% +3.2% +10.0% ➖ noise
19 datafusion:arrow -1.8% +0.8% -2.6% +10.0% ➖ noise
19 datafusion:vortex-compact +2.0% +0.8% +1.2% +10.0% ➖ noise
19 datafusion:vortex-file-compressed -0.0% +0.8% -0.8% +10.0% ➖ noise
19 duckdb:duckdb +0.1% +0.8% -0.7% +10.0% ➖ noise
19 duckdb:vortex-compact +0.8% +0.8% -0.0% +10.0% ➖ noise
19 duckdb:vortex-file-compressed +0.3% +0.8% -0.5% +10.0% ➖ noise
20 datafusion:arrow -2.3% -1.0% -1.3% +10.0% ➖ noise
20 datafusion:vortex-compact +0.0% -1.0% +1.0% +10.0% ➖ noise
20 datafusion:vortex-file-compressed +0.8% -1.0% +1.9% +10.0% ➖ noise
20 duckdb:duckdb -0.1% -1.0% +0.9% +10.0% ➖ noise
20 duckdb:vortex-compact -1.3% -1.0% -0.3% +10.0% ➖ noise
20 duckdb:vortex-file-compressed +0.8% -1.0% +1.9% +10.0% ➖ noise
21 datafusion:arrow -0.9% -0.3% -0.6% +10.0% ➖ noise
21 datafusion:vortex-compact +1.4% -0.3% +1.8% +10.0% ➖ noise
21 datafusion:vortex-file-compressed -0.1% -0.3% +0.3% +10.0% ➖ noise
21 duckdb:duckdb -0.2% -0.3% +0.2% +10.0% ➖ noise
21 duckdb:vortex-compact +0.1% -0.3% +0.5% +10.0% ➖ noise
21 duckdb:vortex-file-compressed -0.5% -0.3% -0.1% +10.0% ➖ noise
22 datafusion:arrow +2.0% -0.4% +2.4% +10.0% ➖ noise
22 datafusion:vortex-compact -0.6% -0.4% -0.2% +10.0% ➖ noise
22 datafusion:vortex-file-compressed +2.2% -0.4% +2.6% +10.0% ➖ noise
22 duckdb:duckdb +3.4% -0.4% +3.8% +10.0% ➖ noise
22 duckdb:vortex-compact +1.5% -0.4% +1.9% +10.0% ➖ noise
22 duckdb:vortex-file-compressed +2.0% -0.4% +2.4% +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.3%
Vortex (geomean): 0.913x ➖
Parquet (geomean): 0.951x ➖
Shifts: Parquet (control) -4.9% · Median polish -4.9%


datafusion / vortex-file-compressed (0.898x ✅, 20↑ 1↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/datafusion:vortex-file-compressed 🚨 2014422 1759947 1.14
clickbench_q01/datafusion:vortex-file-compressed 18823724 19632344 0.96
clickbench_q02/datafusion:vortex-file-compressed 37228587 39676950 0.94
clickbench_q03/datafusion:vortex-file-compressed 🚀 44105490 49105396 0.90
clickbench_q04/datafusion:vortex-file-compressed 301280983 316080264 0.95
clickbench_q05/datafusion:vortex-file-compressed 344115217 343742842 1.00
clickbench_q06/datafusion:vortex-file-compressed 2020422 1872999 1.08
clickbench_q07/datafusion:vortex-file-compressed 21675732 23227238 0.93
clickbench_q08/datafusion:vortex-file-compressed 386311721 375700457 1.03
clickbench_q09/datafusion:vortex-file-compressed 611660819 623927561 0.98
clickbench_q10/datafusion:vortex-file-compressed 74150020 81802721 0.91
clickbench_q11/datafusion:vortex-file-compressed 🚀 84326192 96788796 0.87
clickbench_q12/datafusion:vortex-file-compressed 289462076 305929688 0.95
clickbench_q13/datafusion:vortex-file-compressed 447794606 472760854 0.95
clickbench_q14/datafusion:vortex-file-compressed 281006400 293053372 0.96
clickbench_q15/datafusion:vortex-file-compressed 🚀 328487511 387146637 0.85
clickbench_q16/datafusion:vortex-file-compressed 🚀 638661188 736415911 0.87
clickbench_q17/datafusion:vortex-file-compressed 🚀 628807248 749400456 0.84
clickbench_q18/datafusion:vortex-file-compressed 🚀 1283401583 1471330406 0.87
clickbench_q19/datafusion:vortex-file-compressed 🚀 28798442 33686934 0.85
clickbench_q20/datafusion:vortex-file-compressed 🚀 228243909 366027416 0.62
clickbench_q21/datafusion:vortex-file-compressed 🚀 317794465 405447111 0.78
clickbench_q22/datafusion:vortex-file-compressed 🚀 409027421 499366452 0.82
clickbench_q23/datafusion:vortex-file-compressed 🚀 527235769 766813495 0.69
clickbench_q24/datafusion:vortex-file-compressed 🚀 42472051 49887346 0.85
clickbench_q25/datafusion:vortex-file-compressed 🚀 67257241 80740819 0.83
clickbench_q26/datafusion:vortex-file-compressed 🚀 41364345 47152017 0.88
clickbench_q27/datafusion:vortex-file-compressed 🚀 646488166 732207361 0.88
clickbench_q28/datafusion:vortex-file-compressed 🚀 5783537494 6872433268 0.84
clickbench_q29/datafusion:vortex-file-compressed 🚀 211633567 253175364 0.84
clickbench_q30/datafusion:vortex-file-compressed 221584648 243221174 0.91
clickbench_q31/datafusion:vortex-file-compressed 260272339 269410306 0.97
clickbench_q32/datafusion:vortex-file-compressed 🚀 1080372026 1268114948 0.85
clickbench_q33/datafusion:vortex-file-compressed 1250251784 1373291204 0.91
clickbench_q34/datafusion:vortex-file-compressed 1258545546 1350683449 0.93
clickbench_q35/datafusion:vortex-file-compressed 443381559 477887315 0.93
clickbench_q36/datafusion:vortex-file-compressed 🚀 71068487 81544496 0.87
clickbench_q37/datafusion:vortex-file-compressed 34387076 37781319 0.91
clickbench_q38/datafusion:vortex-file-compressed 19141477 20593566 0.93
clickbench_q39/datafusion:vortex-file-compressed 132906773 145412656 0.91
clickbench_q40/datafusion:vortex-file-compressed 16994857 17162571 0.99
clickbench_q41/datafusion:vortex-file-compressed 15207317 16094117 0.94
clickbench_q42/datafusion:vortex-file-compressed 🚀 17440892 19446515 0.90
datafusion / parquet (0.934x ➖, 10↑ 0↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/datafusion:parquet 1548342 1586213 0.98
clickbench_q01/datafusion:parquet 17957806 19736440 0.91
clickbench_q02/datafusion:parquet 45485869 49205916 0.92
clickbench_q03/datafusion:parquet 37453311 39680505 0.94
clickbench_q04/datafusion:parquet 🚀 292881566 328798679 0.89
clickbench_q05/datafusion:parquet 352180784 382309655 0.92
clickbench_q06/datafusion:parquet 1543727 1577952 0.98
clickbench_q07/datafusion:parquet 22027638 22477006 0.98
clickbench_q08/datafusion:parquet 364612460 392034886 0.93
clickbench_q09/datafusion:parquet 601847811 657464447 0.92
clickbench_q10/datafusion:parquet 🚀 103148236 119222947 0.87
clickbench_q11/datafusion:parquet 🚀 127509019 142545402 0.89
clickbench_q12/datafusion:parquet 338000046 375451238 0.90
clickbench_q13/datafusion:parquet 482157709 506708447 0.95
clickbench_q14/datafusion:parquet 347437214 375969902 0.92
clickbench_q15/datafusion:parquet 🚀 333779610 377794319 0.88
clickbench_q16/datafusion:parquet 🚀 655177987 734110185 0.89
clickbench_q17/datafusion:parquet 🚀 628178165 725446911 0.87
clickbench_q18/datafusion:parquet 1304762849 1438611496 0.91
clickbench_q19/datafusion:parquet 🚀 28623883 31835423 0.90
clickbench_q20/datafusion:parquet 605718469 637285870 0.95
clickbench_q21/datafusion:parquet 647889261 713501037 0.91
clickbench_q22/datafusion:parquet 967138115 1051501896 0.92
clickbench_q23/datafusion:parquet 🚀 3570859987 3986912722 0.90
clickbench_q24/datafusion:parquet 83752684 86714520 0.97
clickbench_q25/datafusion:parquet 127707745 141162419 0.90
clickbench_q26/datafusion:parquet 79929306 86297917 0.93
clickbench_q27/datafusion:parquet 1035615269 1091487127 0.95
clickbench_q28/datafusion:parquet 6550061531 6859591418 0.95
clickbench_q29/datafusion:parquet 236123838 243911637 0.97
clickbench_q30/datafusion:parquet 324516034 346798684 0.94
clickbench_q31/datafusion:parquet 365572253 396295834 0.92
clickbench_q32/datafusion:parquet 🚀 1188479051 1391063643 0.85
clickbench_q33/datafusion:parquet 1494938171 1653263725 0.90
clickbench_q34/datafusion:parquet 🚀 1464803477 1653945997 0.89
clickbench_q35/datafusion:parquet 459088370 475607744 0.97
clickbench_q36/datafusion:parquet 153438172 150796897 1.02
clickbench_q37/datafusion:parquet 59733300 59005089 1.01
clickbench_q38/datafusion:parquet 87900525 88335773 1.00
clickbench_q39/datafusion:parquet 275983876 277324009 1.00
clickbench_q40/datafusion:parquet 31887896 32569173 0.98
clickbench_q41/datafusion:parquet 30410020 29859043 1.02
clickbench_q42/datafusion:parquet 31462168 31163090 1.01
duckdb / vortex-file-compressed (0.927x ➖, 11↑ 0↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:vortex-file-compressed 6397814 6129420 1.04
clickbench_q01/duckdb:vortex-file-compressed 13960627 13815865 1.01
clickbench_q02/duckdb:vortex-file-compressed 26231955 26347858 1.00
clickbench_q03/duckdb:vortex-file-compressed 29873018 32565079 0.92
clickbench_q04/duckdb:vortex-file-compressed 186161795 194345679 0.96
clickbench_q05/duckdb:vortex-file-compressed 181626796 185811745 0.98
clickbench_q06/duckdb:vortex-file-compressed 20566285 20139347 1.02
clickbench_q07/duckdb:vortex-file-compressed 16494425 16302415 1.01
clickbench_q08/duckdb:vortex-file-compressed 261984724 261716397 1.00
clickbench_q09/duckdb:vortex-file-compressed 339427432 334689554 1.01
clickbench_q10/duckdb:vortex-file-compressed 67936155 68101689 1.00
clickbench_q11/duckdb:vortex-file-compressed 75503098 80395386 0.94
clickbench_q12/duckdb:vortex-file-compressed 197573261 206424663 0.96
clickbench_q13/duckdb:vortex-file-compressed 401069225 416377103 0.96
clickbench_q14/duckdb:vortex-file-compressed 🚀 219669551 250635730 0.88
clickbench_q15/duckdb:vortex-file-compressed 242755978 248150159 0.98
clickbench_q16/duckdb:vortex-file-compressed 578098466 598366963 0.97
clickbench_q17/duckdb:vortex-file-compressed 464631930 493426732 0.94
clickbench_q18/duckdb:vortex-file-compressed 992927904 997954663 0.99
clickbench_q19/duckdb:vortex-file-compressed 20561066 21635560 0.95
clickbench_q20/duckdb:vortex-file-compressed 🚀 296428667 380559288 0.78
clickbench_q21/duckdb:vortex-file-compressed 🚀 312509932 414053596 0.75
clickbench_q22/duckdb:vortex-file-compressed 🚀 445797834 654608184 0.68
clickbench_q23/duckdb:vortex-file-compressed 270348734 247514172 1.09
clickbench_q24/duckdb:vortex-file-compressed 35476899 35584803 1.00
clickbench_q25/duckdb:vortex-file-compressed 71415536 75212681 0.95
clickbench_q26/duckdb:vortex-file-compressed 40137556 43935405 0.91
clickbench_q27/duckdb:vortex-file-compressed 🚀 437765080 507282544 0.86
clickbench_q28/duckdb:vortex-file-compressed 2918881701 3058210341 0.95
clickbench_q29/duckdb:vortex-file-compressed 28373698 29756212 0.95
clickbench_q30/duckdb:vortex-file-compressed 193428476 204236036 0.95
clickbench_q31/duckdb:vortex-file-compressed 281620774 300521569 0.94
clickbench_q32/duckdb:vortex-file-compressed 1226278821 1253484563 0.98
clickbench_q33/duckdb:vortex-file-compressed 1154227458 1220498485 0.95
clickbench_q34/duckdb:vortex-file-compressed 1218042771 1326604567 0.92
clickbench_q35/duckdb:vortex-file-compressed 370384773 387293837 0.96
clickbench_q36/duckdb:vortex-file-compressed 🚀 25700244 30149578 0.85
clickbench_q37/duckdb:vortex-file-compressed 🚀 19403014 22098257 0.88
clickbench_q38/duckdb:vortex-file-compressed 🚀 19452318 23983667 0.81
clickbench_q39/duckdb:vortex-file-compressed 🚀 39742960 45314921 0.88
clickbench_q40/duckdb:vortex-file-compressed 🚀 18318269 23949918 0.76
clickbench_q41/duckdb:vortex-file-compressed 🚀 18690169 24847027 0.75
clickbench_q42/duckdb:vortex-file-compressed 21793148 22141451 0.98
duckdb / parquet (0.968x ➖, 0↑ 2↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:parquet 26027340 26359637 0.99
clickbench_q01/duckdb:parquet 27580995 27433663 1.01
clickbench_q02/duckdb:parquet 48598804 49650039 0.98
clickbench_q03/duckdb:parquet 38623580 39461463 0.98
clickbench_q04/duckdb:parquet 205458727 218889597 0.94
clickbench_q05/duckdb:parquet 264217754 283285860 0.93
clickbench_q06/duckdb:parquet 46064215 45783540 1.01
clickbench_q07/duckdb:parquet 28726283 30394287 0.95
clickbench_q08/duckdb:parquet 264959649 270839019 0.98
clickbench_q09/duckdb:parquet 395909193 418955510 0.94
clickbench_q10/duckdb:parquet 80273867 88991690 0.90
clickbench_q11/duckdb:parquet 99466271 101877677 0.98
clickbench_q12/duckdb:parquet 283129962 298887960 0.95
clickbench_q13/duckdb:parquet 485197285 504111084 0.96
clickbench_q14/duckdb:parquet 320183113 333358889 0.96
clickbench_q15/duckdb:parquet 260541751 275270853 0.95
clickbench_q16/duckdb:parquet 633353090 698828176 0.91
clickbench_q17/duckdb:parquet 540840958 562804974 0.96
clickbench_q18/duckdb:parquet 1072868484 1150127100 0.93
clickbench_q19/duckdb:parquet 25357974 26367103 0.96
clickbench_q20/duckdb:parquet 423629541 440577064 0.96
clickbench_q21/duckdb:parquet 545520043 578441855 0.94
clickbench_q22/duckdb:parquet 932819850 1002419251 0.93
clickbench_q23/duckdb:parquet 305389834 318374806 0.96
clickbench_q24/duckdb:parquet 69544454 72378100 0.96
clickbench_q25/duckdb:parquet 158387132 166138441 0.95
clickbench_q26/duckdb:parquet 49288965 51085850 0.96
clickbench_q27/duckdb:parquet 665606949 707003811 0.94
clickbench_q28/duckdb:parquet 4944214882 5224337367 0.95
clickbench_q29/duckdb:parquet 41457350 44269928 0.94
clickbench_q30/duckdb:parquet 301117092 329760620 0.91
clickbench_q31/duckdb:parquet 367226235 395863669 0.93
clickbench_q32/duckdb:parquet 1180119730 1260046279 0.94
clickbench_q33/duckdb:parquet 1294618085 1404761995 0.92
clickbench_q34/duckdb:parquet 1373606224 1371663523 1.00
clickbench_q35/duckdb:parquet 374311104 372856665 1.00
clickbench_q36/duckdb:parquet 48384694 48750301 0.99
clickbench_q37/duckdb:parquet 33861266 31100966 1.09
clickbench_q38/duckdb:parquet 36270796 34587884 1.05
clickbench_q39/duckdb:parquet 🚨 92911690 81484493 1.14
clickbench_q40/duckdb:parquet 🚨 19935771 17865491 1.12
clickbench_q41/duckdb:parquet 18003416 19383405 0.93
clickbench_q42/duckdb:parquet 21447251 21602643 0.99
duckdb / duckdb (0.961x ➖, 3↑ 0↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
clickbench_q00/duckdb:duckdb 17756551 17520645 1.01
clickbench_q01/duckdb:duckdb 32796425 33016363 0.99
clickbench_q02/duckdb:duckdb 45264474 46016724 0.98
clickbench_q03/duckdb:duckdb 46702182 46152539 1.01
clickbench_q04/duckdb:duckdb 189990691 199601141 0.95
clickbench_q05/duckdb:duckdb 264453114 279124441 0.95
clickbench_q06/duckdb:duckdb 🚀 27891955 37040638 0.75
clickbench_q07/duckdb:duckdb 34855547 36203779 0.96
clickbench_q08/duckdb:duckdb 246933033 261627887 0.94
clickbench_q09/duckdb:duckdb 365603667 376778458 0.97
clickbench_q10/duckdb:duckdb 96787577 101839215 0.95
clickbench_q11/duckdb:duckdb 106563692 112145097 0.95
clickbench_q12/duckdb:duckdb 237798249 257326529 0.92
clickbench_q13/duckdb:duckdb 480947671 499600812 0.96
clickbench_q14/duckdb:duckdb 279325893 281130228 0.99
clickbench_q15/duckdb:duckdb 222685586 230412214 0.97
clickbench_q16/duckdb:duckdb 630621084 685357632 0.92
clickbench_q17/duckdb:duckdb 542983117 569846728 0.95
clickbench_q18/duckdb:duckdb 1167112295 1226964359 0.95
clickbench_q19/duckdb:duckdb 34353929 34720837 0.99
clickbench_q20/duckdb:duckdb 995239751 945138135 1.05
clickbench_q21/duckdb:duckdb 1038389249 969455828 1.07
clickbench_q22/duckdb:duckdb 1015714448 1081615428 0.94
clickbench_q23/duckdb:duckdb 253557302 267438598 0.95
clickbench_q24/duckdb:duckdb 61897567 62887469 0.98
clickbench_q25/duckdb:duckdb 143928730 152319623 0.94
clickbench_q26/duckdb:duckdb 60002723 63006171 0.95
clickbench_q27/duckdb:duckdb 1164522581 1096637619 1.06
clickbench_q28/duckdb:duckdb 4600277718 4880227889 0.94
clickbench_q29/duckdb:duckdb 47994332 48738847 0.98
clickbench_q30/duckdb:duckdb 263089859 268864945 0.98
clickbench_q31/duckdb:duckdb 416170712 440851912 0.94
clickbench_q32/duckdb:duckdb 1412152208 1548064813 0.91
clickbench_q33/duckdb:duckdb 1965974270 2096056161 0.94
clickbench_q34/duckdb:duckdb 🚀 1963343136 2228335360 0.88
clickbench_q35/duckdb:duckdb 279266061 290082422 0.96
clickbench_q36/duckdb:duckdb 40884861 42725168 0.96
clickbench_q37/duckdb:duckdb 31157019 30430793 1.02
clickbench_q38/duckdb:duckdb 31059729 32682298 0.95
clickbench_q39/duckdb:duckdb 🚀 67107848 76626744 0.88
clickbench_q40/duckdb:duckdb 31603316 31506403 1.00
clickbench_q41/duckdb:duckdb 30029000 30707744 0.98
clickbench_q42/duckdb:duckdb 31368397 31692602 0.99
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-file-compressed +14.5% -1.8% +16.6% +744.5% ➖ noise
0 duckdb:duckdb +1.3% -1.8% +3.2% +289.6% ➖ noise
0 duckdb:vortex-file-compressed +4.4% -1.8% +6.3% +487.8% ➖ noise
1 datafusion:vortex-file-compressed -4.1% -4.4% +0.2% +25.4% ➖ noise
1 duckdb:duckdb -0.7% -4.4% +3.9% +66.9% ➖ noise
1 duckdb:vortex-file-compressed +1.0% -4.4% +5.7% +27.3% ➖ noise
2 datafusion:vortex-file-compressed -6.2% -4.9% -1.4% +13.4% ➖ noise
2 duckdb:duckdb -1.6% -4.9% +3.4% +22.0% ➖ noise
2 duckdb:vortex-file-compressed -0.4% -4.9% +4.7% +13.8% ➖ noise
3 datafusion:vortex-file-compressed -10.2% -3.9% -6.6% +128.9% ➖ noise
3 duckdb:duckdb +1.2% -3.9% +5.3% +47.6% ➖ noise
3 duckdb:vortex-file-compressed -8.3% -3.9% -4.6% +53.6% ➖ noise
4 datafusion:vortex-file-compressed -4.7% -8.6% +4.2% +11.5% ➖ noise
4 duckdb:duckdb -4.8% -8.6% +4.1% +11.5% ➖ noise
4 duckdb:vortex-file-compressed -4.2% -8.6% +4.8% +11.5% ➖ noise
5 datafusion:vortex-file-compressed +0.1% -7.3% +8.0% +11.5% ➖ noise
5 duckdb:duckdb -5.3% -7.3% +2.2% +11.5% ➖ noise
5 duckdb:vortex-file-compressed -2.3% -7.3% +5.5% +11.5% ➖ noise
6 datafusion:vortex-file-compressed +7.9% -0.8% +8.7% +33.8% ➖ noise
6 duckdb:duckdb -24.7% -0.8% -24.1% +29.9% ✅ faster
6 duckdb:vortex-file-compressed +2.1% -0.8% +2.9% +16.3% ➖ noise
7 datafusion:vortex-file-compressed -6.7% -3.8% -3.0% +29.0% ➖ noise
7 duckdb:duckdb -3.7% -3.8% +0.0% +13.2% ➖ noise
7 duckdb:vortex-file-compressed +1.2% -3.8% +5.1% +13.1% ➖ noise
8 datafusion:vortex-file-compressed +2.8% -4.6% +7.8% +11.5% ➖ noise
8 duckdb:duckdb -5.6% -4.6% -1.1% +11.5% ➖ noise
8 duckdb:vortex-file-compressed +0.1% -4.6% +4.9% +11.5% ➖ noise
9 datafusion:vortex-file-compressed -2.0% -7.0% +5.4% +11.5% ➖ noise
9 duckdb:duckdb -3.0% -7.0% +4.3% +11.5% ➖ noise
9 duckdb:vortex-file-compressed +1.4% -7.0% +9.0% +11.5% ➖ noise
10 datafusion:vortex-file-compressed -9.4% -11.7% +2.6% +11.5% ➖ noise
10 duckdb:duckdb -5.0% -11.7% +7.6% +11.5% ➖ noise
10 duckdb:vortex-file-compressed -0.2% -11.7% +12.9% +11.5% 🚨 regression
11 datafusion:vortex-file-compressed -12.9% -6.5% -6.8% +11.5% ➖ noise
11 duckdb:duckdb -5.0% -6.5% +1.7% +11.5% ➖ noise
11 duckdb:vortex-file-compressed -6.1% -6.5% +0.5% +11.5% ➖ noise
12 datafusion:vortex-file-compressed -5.4% -7.7% +2.5% +11.5% ➖ noise
12 duckdb:duckdb -7.6% -7.7% +0.1% +11.5% ➖ noise
12 duckdb:vortex-file-compressed -4.3% -7.7% +3.6% +11.5% ➖ noise
13 datafusion:vortex-file-compressed -5.3% -4.3% -1.0% +11.5% ➖ noise
13 duckdb:duckdb -3.7% -4.3% +0.6% +11.5% ➖ noise
13 duckdb:vortex-file-compressed -3.7% -4.3% +0.7% +11.5% ➖ noise
14 datafusion:vortex-file-compressed -4.1% -5.8% +1.8% +11.5% ➖ noise
14 duckdb:duckdb -0.6% -5.8% +5.5% +11.5% ➖ noise
14 duckdb:vortex-file-compressed -12.4% -5.8% -7.0% +11.5% ➖ noise
15 datafusion:vortex-file-compressed -15.2% -8.6% -7.2% +11.5% ➖ noise
15 duckdb:duckdb -3.4% -8.6% +5.7% +11.5% ➖ noise
15 duckdb:vortex-file-compressed -2.2% -8.6% +7.0% +11.5% ➖ noise
16 datafusion:vortex-file-compressed -13.3% -10.1% -3.6% +11.5% ➖ noise
16 duckdb:duckdb -8.0% -10.1% +2.3% +11.5% ➖ noise
16 duckdb:vortex-file-compressed -3.4% -10.1% +7.4% +11.5% ➖ noise
17 datafusion:vortex-file-compressed -16.1% -8.8% -8.0% +11.5% ➖ noise
17 duckdb:duckdb -4.7% -8.8% +4.5% +11.5% ➖ noise
17 duckdb:vortex-file-compressed -5.8% -8.8% +3.2% +11.5% ➖ noise
18 datafusion:vortex-file-compressed -12.8% -8.0% -5.2% +11.5% ➖ noise
18 duckdb:duckdb -4.9% -8.0% +3.4% +11.5% ➖ noise
18 duckdb:vortex-file-compressed -0.5% -8.0% +8.2% +11.5% ➖ noise
19 datafusion:vortex-file-compressed -14.5% -7.0% -8.1% +25.5% ➖ noise
19 duckdb:duckdb -1.1% -7.0% +6.4% +15.8% ➖ noise
19 duckdb:vortex-file-compressed -5.0% -7.0% +2.2% +15.5% ➖ noise
20 datafusion:vortex-file-compressed -37.6% -4.4% -34.8% +184.6% ➖ noise
20 duckdb:duckdb +5.3% -4.4% +10.1% +27.2% ➖ noise
20 duckdb:vortex-file-compressed -22.1% -4.4% -18.5% +50.8% ➖ noise
21 datafusion:vortex-file-compressed -21.6% -7.5% -15.3% +11.5% ✅ faster
21 duckdb:duckdb +7.1% -7.5% +15.7% +12.8% 🚨 regression
21 duckdb:vortex-file-compressed -24.5% -7.5% -18.4% +11.5% ✅ faster
22 datafusion:vortex-file-compressed -18.1% -7.5% -11.5% +11.5% ✅ faster
22 duckdb:duckdb -6.1% -7.5% +1.5% +12.0% ➖ noise
22 duckdb:vortex-file-compressed -31.9% -7.5% -26.4% +21.5% ✅ faster
23 datafusion:vortex-file-compressed -31.2% -7.3% -25.8% +37.3% ➖ noise
23 duckdb:duckdb -5.2% -7.3% +2.3% +11.5% ➖ noise
23 duckdb:vortex-file-compressed +9.2% -7.3% +17.8% +15.7% 🚨 regression
24 datafusion:vortex-file-compressed -14.9% -3.7% -11.6% +13.6% ➖ noise
24 duckdb:duckdb -1.6% -3.7% +2.2% +11.5% ➖ noise
24 duckdb:vortex-file-compressed -0.3% -3.7% +3.5% +22.9% ➖ noise
25 datafusion:vortex-file-compressed -16.7% -7.1% -10.3% +11.5% ✅ faster
25 duckdb:duckdb -5.5% -7.1% +1.7% +11.5% ➖ noise
25 duckdb:vortex-file-compressed -5.0% -7.1% +2.2% +11.5% ➖ noise
26 datafusion:vortex-file-compressed -12.3% -5.5% -7.2% +11.5% ➖ noise
26 duckdb:duckdb -4.8% -5.5% +0.7% +15.6% ➖ noise
26 duckdb:vortex-file-compressed -8.6% -5.5% -3.4% +14.3% ➖ noise
27 datafusion:vortex-file-compressed -11.7% -5.5% -6.6% +11.5% ➖ noise
27 duckdb:duckdb +6.2% -5.5% +12.4% +11.5% 🚨 regression
27 duckdb:vortex-file-compressed -13.7% -5.5% -8.7% +11.5% ➖ noise
28 datafusion:vortex-file-compressed -15.8% -4.9% -11.5% +11.5% ✅ faster
28 duckdb:duckdb -5.7% -4.9% -0.8% +11.5% ➖ noise
28 duckdb:vortex-file-compressed -4.6% -4.9% +0.4% +11.5% ➖ noise
29 datafusion:vortex-file-compressed -16.4% -4.8% -12.2% +11.5% ✅ faster
29 duckdb:duckdb -1.5% -4.8% +3.4% +11.5% ➖ noise
29 duckdb:vortex-file-compressed -4.6% -4.8% +0.1% +11.5% ➖ noise
30 datafusion:vortex-file-compressed -8.9% -7.6% -1.4% +11.5% ➖ noise
30 duckdb:duckdb -2.1% -7.6% +5.9% +11.5% ➖ noise
30 duckdb:vortex-file-compressed -5.3% -7.6% +2.5% +11.5% ➖ noise
31 datafusion:vortex-file-compressed -3.4% -7.5% +4.4% +11.5% ➖ noise
31 duckdb:duckdb -5.6% -7.5% +2.0% +11.5% ➖ noise
31 duckdb:vortex-file-compressed -6.3% -7.5% +1.3% +11.5% ➖ noise
32 datafusion:vortex-file-compressed -14.8% -10.5% -4.8% +16.9% ➖ noise
32 duckdb:duckdb -8.8% -10.5% +2.0% +11.5% ➖ noise
32 duckdb:vortex-file-compressed -2.2% -10.5% +9.4% +11.5% ➖ noise
33 datafusion:vortex-file-compressed -9.0% -8.7% -0.3% +11.5% ➖ noise
33 duckdb:duckdb -6.2% -8.7% +2.7% +11.5% ➖ noise
33 duckdb:vortex-file-compressed -5.4% -8.7% +3.6% +11.5% ➖ noise
34 datafusion:vortex-file-compressed -6.8% -5.8% -1.1% +11.5% ➖ noise
34 duckdb:duckdb -11.9% -5.8% -6.4% +11.5% ➖ noise
34 duckdb:vortex-file-compressed -8.2% -5.8% -2.5% +11.5% ➖ noise
35 datafusion:vortex-file-compressed -7.2% -1.6% -5.7% +11.5% ➖ noise
35 duckdb:duckdb -3.7% -1.6% -2.2% +11.5% ➖ noise
35 duckdb:vortex-file-compressed -4.4% -1.6% -2.8% +11.5% ➖ noise
36 datafusion:vortex-file-compressed -12.8% +0.5% -13.3% +11.5% ✅ faster
36 duckdb:duckdb -4.3% +0.5% -4.8% +12.2% ➖ noise
36 duckdb:vortex-file-compressed -14.8% +0.5% -15.2% +11.5% ✅ faster
37 datafusion:vortex-file-compressed -9.0% +5.0% -13.3% +11.5% ✅ faster
37 duckdb:duckdb +2.4% +5.0% -2.5% +11.5% ➖ noise
37 duckdb:vortex-file-compressed -12.2% +5.0% -16.4% +11.5% ✅ faster
38 datafusion:vortex-file-compressed -7.1% +2.2% -9.0% +14.2% ➖ noise
38 duckdb:duckdb -5.0% +2.2% -7.0% +11.5% ➖ noise
38 duckdb:vortex-file-compressed -18.9% +2.2% -20.6% +12.1% ✅ faster
39 datafusion:vortex-file-compressed -8.6% +6.5% -14.2% +11.5% ✅ faster
39 duckdb:duckdb -12.4% +6.5% -17.8% +18.7% ✅ faster
39 duckdb:vortex-file-compressed -12.3% +6.5% -17.7% +12.2% ✅ faster
40 datafusion:vortex-file-compressed -1.0% +4.5% -5.3% +13.9% ➖ noise
40 duckdb:duckdb +0.3% +4.5% -4.0% +14.9% ➖ noise
40 duckdb:vortex-file-compressed -23.5% +4.5% -26.8% +23.6% ✅ faster
41 datafusion:vortex-file-compressed -5.5% -2.7% -2.8% +11.5% ➖ noise
41 duckdb:duckdb -2.2% -2.7% +0.5% +11.5% ➖ noise
41 duckdb:vortex-file-compressed -24.8% -2.7% -22.7% +11.5% ✅ faster
42 datafusion:vortex-file-compressed -10.3% +0.1% -10.4% +12.5% ➖ noise
42 duckdb:duckdb -1.0% +0.1% -1.1% +11.5% ➖ noise
42 duckdb:vortex-file-compressed -1.6% +0.1% -1.7% +24.4% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: PolarSignals Profiling

Vortex (geomean): 1.053x ➖


datafusion / vortex-file-compressed (1.053x ➖, 0↑ 2↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
polarsignals_q00/datafusion:vortex-file-compressed 123805960 125439095 0.99
polarsignals_q01/datafusion:vortex-file-compressed 269555547 285167050 0.95
polarsignals_q02/datafusion:vortex-file-compressed 25084195 23421198 1.07
polarsignals_q03/datafusion:vortex-file-compressed 273943748 266547688 1.03
polarsignals_q04/datafusion:vortex-file-compressed 🚨 13103258 11560003 1.13
polarsignals_q05/datafusion:vortex-file-compressed 🚨 17658135 14894450 1.19
polarsignals_q06/datafusion:vortex-file-compressed 19580455 18769446 1.04
polarsignals_q07/datafusion:vortex-file-compressed 14863399 13689333 1.09
polarsignals_q08/datafusion:vortex-file-compressed 415807294 406122864 1.02
polarsignals_q09/datafusion:vortex-file-compressed 11791640 11243552 1.05

@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.15 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.7%
Vortex (geomean): 0.997x ➖
Parquet (geomean): 0.990x ➖
Shifts: Parquet (control) -1.0% · Median polish -0.2%


duckdb / vortex-file-compressed (0.985x ➖, 1↑ 2↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-file-compressed 11972197 11865711 1.01
statpopgen_q01/duckdb:vortex-file-compressed 🚀 20588476 28070500 0.73
statpopgen_q02/duckdb:vortex-file-compressed 1403332923 1424138095 0.99
statpopgen_q03/duckdb:vortex-file-compressed 3267736392 3211822689 1.02
statpopgen_q04/duckdb:vortex-file-compressed 🚨 3768789647 3255681733 1.16
statpopgen_q05/duckdb:vortex-file-compressed 🚨 1716865715 1501208903 1.14
statpopgen_q06/duckdb:vortex-file-compressed 2125389837 2179419370 0.98
statpopgen_q07/duckdb:vortex-file-compressed 205232302 219596189 0.93
statpopgen_q08/duckdb:vortex-file-compressed 237868734 245511977 0.97
statpopgen_q09/duckdb:vortex-file-compressed 2941347308 3019949612 0.97
statpopgen_q10/duckdb:vortex-file-compressed 4848109990 4850662834 1.00
duckdb / vortex-compact (1.010x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-compact 12164886 11819619 1.03
statpopgen_q01/duckdb:vortex-compact 169263461 173623456 0.97
statpopgen_q02/duckdb:vortex-compact 1859621215 1878067221 0.99
statpopgen_q03/duckdb:vortex-compact 3587687112 3583390084 1.00
statpopgen_q04/duckdb:vortex-compact 3740063421 3636664430 1.03
statpopgen_q05/duckdb:vortex-compact 2033344130 1882618018 1.08
statpopgen_q06/duckdb:vortex-compact 2830633310 2738795493 1.03
statpopgen_q07/duckdb:vortex-compact 896640237 902266664 0.99
statpopgen_q08/duckdb:vortex-compact 935931041 929983625 1.01
statpopgen_q09/duckdb:vortex-compact 3359387852 3380441800 0.99
statpopgen_q10/duckdb:vortex-compact 5420070423 5543762497 0.98
duckdb / parquet (0.990x ➖, 0↑ 0↓)
name PR a1ba67f (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:parquet 337458404 336061991 1.00
statpopgen_q01/duckdb:parquet 420928548 419978118 1.00
statpopgen_q02/duckdb:parquet 1015243713 1028391047 0.99
statpopgen_q03/duckdb:parquet 1505112757 1532247479 0.98
statpopgen_q04/duckdb:parquet 1533010013 1553859851 0.99
statpopgen_q05/duckdb:parquet 1018570378 1028360467 0.99
statpopgen_q06/duckdb:parquet 1513404779 1499003502 1.01
statpopgen_q07/duckdb:parquet 1312921764 1363767177 0.96
statpopgen_q08/duckdb:parquet 1344231042 1364584698 0.99
statpopgen_q09/duckdb:parquet 1382168620 1419622932 0.97
statpopgen_q10/duckdb:parquet 2718307558 2708965399 1.00
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 duckdb:vortex-compact +2.9% +0.4% +2.5% +10.0% ➖ noise
0 duckdb:vortex-file-compressed +0.9% +0.4% +0.5% +10.0% ➖ noise
1 duckdb:vortex-compact -2.5% +0.2% -2.7% +10.0% ➖ noise
1 duckdb:vortex-file-compressed -26.7% +0.2% -26.8% +185.5% ➖ noise
2 duckdb:vortex-compact -1.0% -1.3% +0.3% +10.0% ➖ noise
2 duckdb:vortex-file-compressed -1.5% -1.3% -0.2% +10.0% ➖ noise
3 duckdb:vortex-compact +0.1% -1.8% +1.9% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +1.7% -1.8% +3.6% +10.0% ➖ noise
4 duckdb:vortex-compact +2.8% -1.3% +4.2% +10.0% ➖ noise
4 duckdb:vortex-file-compressed +15.8% -1.3% +17.3% +13.4% 🚨 regression
5 duckdb:vortex-compact +8.0% -1.0% +9.0% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +14.4% -1.0% +15.5% +10.0% 🚨 regression
6 duckdb:vortex-compact +3.4% +1.0% +2.4% +10.0% ➖ noise
6 duckdb:vortex-file-compressed -2.5% +1.0% -3.4% +10.0% ➖ noise
7 duckdb:vortex-compact -0.6% -3.7% +3.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -6.5% -3.7% -2.9% +10.0% ➖ noise
8 duckdb:vortex-compact +0.6% -1.5% +2.2% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -3.1% -1.5% -1.6% +10.0% ➖ noise
9 duckdb:vortex-compact -0.6% -2.6% +2.1% +10.0% ➖ noise
9 duckdb:vortex-file-compressed -2.6% -2.6% +0.0% +10.0% ➖ noise
10 duckdb:vortex-compact -2.2% +0.3% -2.6% +10.0% ➖ noise
10 duckdb:vortex-file-compressed -0.1% +0.3% -0.4% +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.044x ➖
Parquet (geomean): 1.075x ➖


unknown / unknown (1.102x ❌, 5↑ 61↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
compress time/Arade 1268595816 1164865772 1.09
compress time/Bimbo 7562932388 7034536385 1.08
compress time/CMSprovider 🚨 3177268244 2883828600 1.10
compress time/Euro2016 🚨 1431849335 433386300 3.30
compress time/Food 🚨 453848802 383449898 1.18
compress time/HashTags 🚨 1652307354 819603765 2.02
compress time/TPC-H l_comment canonical 🚨 1466673850 1293810819 1.13
compress time/TPC-H l_comment chunked 🚨 1475589880 1312267730 1.12
compress time/taxi 775184712 734408453 1.06
compress time/wide table cols=100 chunks=1 rows=1000 🚨 15114426 12357538 1.22
compress time/wide table cols=100 chunks=50 rows=1000 14035792 12885020 1.09
compress time/wide table cols=1000 chunks=1 rows=1000 🚨 147172261 131506874 1.12
compress time/wide table cols=1000 chunks=50 rows=1000 🚨 146308913 126013301 1.16
compress time/wide table cols=10000 chunks=1 rows=1000 🚨 1613800286 1447645833 1.11
compress time/wide table cols=10000 chunks=50 rows=1000 🚨 1650690180 1455296613 1.13
decompress time/Arade 🚨 36303581 25560750 1.42
decompress time/Bimbo 🚨 96147992 82034909 1.17
decompress time/CMSprovider 🚨 110410642 76511380 1.44
decompress time/Euro2016 🚨 22289957 18977665 1.17
decompress time/Food 🚨 9725769 7530265 1.29
decompress time/HashTags 🚨 98001291 71777459 1.37
decompress time/TPC-H l_comment canonical 🚨 47910885 40207265 1.19
decompress time/TPC-H l_comment chunked 🚨 47890446 38986082 1.23
decompress time/taxi 🚨 17548721 14938991 1.17
decompress time/wide table cols=100 chunks=1 rows=1000 🚨 3189609 2571571 1.24
decompress time/wide table cols=100 chunks=50 rows=1000 🚨 3213284 2632353 1.22
decompress time/wide table cols=1000 chunks=1 rows=1000 🚨 29900290 22850475 1.31
decompress time/wide table cols=1000 chunks=50 rows=1000 🚨 30128310 23934794 1.26
decompress time/wide table cols=10000 chunks=1 rows=1000 🚨 330328245 270802108 1.22
decompress time/wide table cols=10000 chunks=50 rows=1000 🚨 332662020 263170720 1.26
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 🚨 2958435504 2612237542 1.13
parquet_rs-zstd compress time/Bimbo 🚨 14119147455 12739287832 1.11
parquet_rs-zstd compress time/CMSprovider 🚨 8017304454 6915466282 1.16
parquet_rs-zstd compress time/Euro2016 🚨 1515327476 1315393434 1.15
parquet_rs-zstd compress time/Food 862162385 799845165 1.08
parquet_rs-zstd compress time/HashTags 🚨 2614560452 2183352336 1.20
parquet_rs-zstd compress time/TPC-H l_comment canonical 🚨 3534168279 3162159801 1.12
parquet_rs-zstd compress time/TPC-H l_comment chunked 🚨 3532009991 3149978468 1.12
parquet_rs-zstd compress time/taxi 🚨 1348849779 1201780145 1.12
parquet_rs-zstd compress time/wide table cols=100 chunks=1 rows=1000 🚨 7711628 6148908 1.25
parquet_rs-zstd compress time/wide table cols=100 chunks=50 rows=1000 🚨 7930404 6507291 1.22
parquet_rs-zstd compress time/wide table cols=1000 chunks=1 rows=1000 🚨 85491395 75680840 1.13
parquet_rs-zstd compress time/wide table cols=1000 chunks=50 rows=1000 🚨 91761012 76192124 1.20
parquet_rs-zstd compress time/wide table cols=10000 chunks=1 rows=1000 🚨 909121000 777822184 1.17
parquet_rs-zstd compress time/wide table cols=10000 chunks=50 rows=1000 🚨 889767094 788388831 1.13
parquet_rs-zstd decompress time/Arade 662173294 617141589 1.07
parquet_rs-zstd decompress time/Bimbo 1760350784 1690964039 1.04
parquet_rs-zstd decompress time/CMSprovider 🚨 2019098153 1713259801 1.18
parquet_rs-zstd decompress time/Euro2016 🚨 426154560 380308278 1.12
parquet_rs-zstd decompress time/Food 🚨 226725019 199784798 1.13
parquet_rs-zstd decompress time/HashTags 🚨 792023066 643834992 1.23
parquet_rs-zstd decompress time/TPC-H l_comment canonical 641810065 586053733 1.10
parquet_rs-zstd decompress time/TPC-H l_comment chunked 🚨 649150495 587507041 1.10
parquet_rs-zstd decompress time/taxi 259019957 243913058 1.06
parquet_rs-zstd decompress time/wide table cols=100 chunks=1 rows=1000 2825957 2816138 1.00
parquet_rs-zstd decompress time/wide table cols=100 chunks=50 rows=1000 2642578 2823073 0.94
parquet_rs-zstd decompress time/wide table cols=1000 chunks=1 rows=1000 🚨 38943002 32573659 1.20
parquet_rs-zstd decompress time/wide table cols=1000 chunks=50 rows=1000 🚨 40162366 34097542 1.18
parquet_rs-zstd decompress time/wide table cols=10000 chunks=1 rows=1000 🚨 393780020 341523607 1.15
parquet_rs-zstd decompress time/wide table cols=10000 chunks=50 rows=1000 🚨 391943720 349644639 1.12
vortex-file-compressed size/Arade 145363532 145363796 1.00
vortex-file-compressed size/Bimbo 468763364 468763332 1.00
vortex-file-compressed size/CMSprovider 416689404 417907812 1.00
vortex-file-compressed size/Euro2016 🚀 138800172 163394740 0.85
vortex-file-compressed size/Food 41936384 41926936 1.00
vortex-file-compressed size/HashTags 🚀 174176908 195647828 0.89
vortex-file-compressed size/TPC-H l_comment canonical 173069640 179087360 0.97
vortex-file-compressed size/TPC-H l_comment chunked 173060640 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 0.96
vortex:parquet-zstd ratio compress time/Bimbo 0 0 0.97
vortex:parquet-zstd ratio compress time/CMSprovider 0 0 0.95
vortex:parquet-zstd ratio compress time/Euro2016 🚨 0 0 2.87
vortex:parquet-zstd ratio compress time/Food 0 0 1.10
vortex:parquet-zstd ratio compress time/HashTags 🚨 0 0 1.68
vortex:parquet-zstd ratio compress time/TPC-H l_comment canonical 0 0 1.01
vortex:parquet-zstd ratio compress time/TPC-H l_comment chunked 0 0 1.00
vortex:parquet-zstd ratio compress time/taxi 0 0 0.94
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=1 rows=1000 1 2 0.98
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=50 rows=1000 🚀 1 1 0.89
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=1 rows=1000 1 1 0.99
vortex:parquet-zstd ratio compress time/wide table cols=1000 chunks=50 rows=1000 1 1 0.96
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=1 rows=1000 1 1 0.95
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=50 rows=1000 1 1 1.01
vortex:parquet-zstd ratio decompress time/Arade 🚨 0 0 1.32
vortex:parquet-zstd ratio decompress time/Bimbo 🚨 0 0 1.13
vortex:parquet-zstd ratio decompress time/CMSprovider 🚨 0 0 1.22
vortex:parquet-zstd ratio decompress time/Euro2016 0 0 1.05
vortex:parquet-zstd ratio decompress time/Food 🚨 0 0 1.14
vortex:parquet-zstd ratio decompress time/HashTags 🚨 0 0 1.11
vortex:parquet-zstd ratio decompress time/TPC-H l_comment canonical 0 0 1.09
vortex:parquet-zstd ratio decompress time/TPC-H l_comment chunked 🚨 0 0 1.11
vortex:parquet-zstd ratio decompress time/taxi 🚨 0 0 1.11
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=1 rows=1000 🚨 1 0 1.24
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=50 rows=1000 🚨 1 0 1.30
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=1 rows=1000 0 0 1.09
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=50 rows=1000 0 0 1.07
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=1 rows=1000 0 0 1.06
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=50 rows=1000 🚨 0 0 1.13
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
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: TPC-H SF=1 on NVME

File Size Changes (18 files changed, -5.0% overall, 7↑ 11↓)
File Scale Format Base HEAD Change %
part_0.vortex 1.0 vortex-compact 3.64 MB 3.68 MB +41.72 KB +1.1%
region_0.vortex 1.0 vortex-compact 5.82 KB 5.86 KB +32 B +0.5%
region_0.vortex 1.0 vortex-file-compressed 6.13 KB 6.16 KB +32 B +0.5%
nation_0.vortex 1.0 vortex-compact 8.31 KB 8.34 KB +32 B +0.4%
supplier_0.vortex 1.0 vortex-compact 496.69 KB 496.72 KB +32 B +0.0%
customer_0.vortex 1.0 vortex-compact 7.43 MB 7.43 MB +32 B +0.0%
partsupp_0.vortex 1.0 vortex-compact 25.23 MB 25.23 MB +32 B +0.0%
orders_0.vortex 1.0 vortex-compact 31.73 MB 31.73 MB 272 B -0.0%
lineitem_1.vortex 1.0 vortex-compact 63.03 MB 63.03 MB 712 B -0.0%
lineitem_0.vortex 1.0 vortex-compact 63.00 MB 63.00 MB 712 B -0.0%
part_0.vortex 1.0 vortex-file-compressed 5.44 MB 5.31 MB 137.96 KB -2.5%
lineitem_1.vortex 1.0 vortex-file-compressed 84.90 MB 82.05 MB 2.85 MB -3.4%
lineitem_0.vortex 1.0 vortex-file-compressed 85.42 MB 82.51 MB 2.91 MB -3.4%
nation_0.vortex 1.0 vortex-file-compressed 10.97 KB 10.38 KB 608 B -5.4%
supplier_0.vortex 1.0 vortex-file-compressed 706.31 KB 657.86 KB 48.45 KB -6.9%
customer_0.vortex 1.0 vortex-file-compressed 10.50 MB 9.42 MB 1.08 MB -10.3%
orders_0.vortex 1.0 vortex-file-compressed 43.43 MB 38.17 MB 5.26 MB -12.1%
partsupp_0.vortex 1.0 vortex-file-compressed 35.94 MB 25.27 MB 10.67 MB -29.7%

Totals:

  • vortex-compact: 194.82 MB → 194.86 MB (+0.0%)
  • vortex-file-compressed: 266.60 MB → 243.65 MB (-8.6%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: FineWeb NVMe

File Size Changes (2 files changed, -12.1% overall, 1↑ 1↓)
File Scale Format Base HEAD Change %
sample.vortex 1.0 vortex-compact 1.23 GB 1.23 GB +32 B +0.0%
sample.vortex 1.0 vortex-file-compressed 1.79 GB 1.43 GB 374.96 MB -20.4%

Totals:

  • vortex-compact: 1.23 GB → 1.23 GB (+0.0%)
  • vortex-file-compressed: 1.79 GB → 1.43 GB (-20.4%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: TPC-DS SF=1 on NVME

File Size Changes (48 files changed, -0.3% overall, 26↑ 22↓)
File Scale Format Base HEAD Change %
reason.vortex 1.0 vortex-file-compressed 7.20 KB 8.26 KB +1.06 KB +14.8%
customer.vortex 1.0 vortex-compact 3.29 MB 3.32 MB +25.39 KB +0.8%
reason.vortex 1.0 vortex-compact 5.94 KB 5.97 KB +32 B +0.5%
income_band.vortex 1.0 vortex-compact 5.95 KB 5.98 KB +32 B +0.5%
income_band.vortex 1.0 vortex-file-compressed 6.16 KB 6.19 KB +32 B +0.5%
household_demographics.vortex 1.0 vortex-compact 10.76 KB 10.79 KB +32 B +0.3%
ship_mode.vortex 1.0 vortex-compact 10.92 KB 10.95 KB +32 B +0.3%
household_demographics.vortex 1.0 vortex-file-compressed 17.02 KB 17.05 KB +32 B +0.2%
warehouse.vortex 1.0 vortex-compact 22.20 KB 22.23 KB +32 B +0.1%
item.vortex 1.0 vortex-compact 994.18 KB 994.44 KB +264 B +0.0%
catalog_page.vortex 1.0 vortex-compact 362.64 KB 362.67 KB +32 B +0.0%
customer_address.vortex 1.0 vortex-compact 558.59 KB 558.62 KB +32 B +0.0%
web_returns.vortex 1.0 vortex-compact 2.99 MB 2.99 MB +32 B +0.0%
web_returns.vortex 1.0 vortex-file-compressed 3.55 MB 3.55 MB +32 B +0.0%
catalog_returns.vortex 1.0 vortex-compact 6.02 MB 6.02 MB +32 B +0.0%
catalog_returns.vortex 1.0 vortex-file-compressed 7.43 MB 7.43 MB +32 B +0.0%
store_returns.vortex 1.0 vortex-compact 9.31 MB 9.31 MB +32 B +0.0%
store_returns.vortex 1.0 vortex-file-compressed 11.39 MB 11.39 MB +32 B +0.0%
inventory.vortex 1.0 vortex-compact 16.07 MB 16.07 MB +32 B +0.0%
web_sales.vortex 1.0 vortex-compact 29.35 MB 29.35 MB +32 B +0.0%
web_sales.vortex 1.0 vortex-file-compressed 34.27 MB 34.27 MB +32 B +0.0%
inventory.vortex 1.0 vortex-file-compressed 36.64 MB 36.64 MB +32 B +0.0%
catalog_sales.vortex 1.0 vortex-compact 59.31 MB 59.31 MB +32 B +0.0%
catalog_sales.vortex 1.0 vortex-file-compressed 70.78 MB 70.78 MB +32 B +0.0%
store_sales.vortex 1.0 vortex-compact 77.87 MB 77.87 MB +32 B +0.0%
store_sales.vortex 1.0 vortex-file-compressed 97.04 MB 97.04 MB +32 B +0.0%
customer_demographics.vortex 1.0 vortex-file-compressed 1.49 MB 1.49 MB 928 B -0.1%
store.vortex 1.0 vortex-compact 45.73 KB 45.68 KB 48 B -0.1%
customer_demographics.vortex 1.0 vortex-compact 649.58 KB 648.89 KB 712 B -0.1%
web_site.vortex 1.0 vortex-compact 45.28 KB 44.87 KB 416 B -0.9%
web_page.vortex 1.0 vortex-file-compressed 31.89 KB 31.55 KB 344 B -1.1%
web_page.vortex 1.0 vortex-compact 27.80 KB 27.41 KB 408 B -1.4%
call_center.vortex 1.0 vortex-compact 50.11 KB 48.88 KB 1.23 KB -2.5%
store.vortex 1.0 vortex-file-compressed 49.46 KB 48.19 KB 1.27 KB -2.6%
promotion.vortex 1.0 vortex-file-compressed 60.16 KB 58.57 KB 1.59 KB -2.6%
date_dim.vortex 1.0 vortex-compact 153.96 KB 149.20 KB 4.77 KB -3.1%
time_dim.vortex 1.0 vortex-compact 97.32 KB 93.48 KB 3.84 KB -3.9%
warehouse.vortex 1.0 vortex-file-compressed 23.80 KB 22.82 KB 1008 B -4.1%
web_site.vortex 1.0 vortex-file-compressed 54.05 KB 51.73 KB 2.32 KB -4.3%
call_center.vortex 1.0 vortex-file-compressed 54.91 KB 51.73 KB 3.18 KB -5.8%
promotion.vortex 1.0 vortex-compact 51.48 KB 48.48 KB 3.00 KB -5.8%
ship_mode.vortex 1.0 vortex-file-compressed 13.09 KB 12.30 KB 800 B -6.0%
customer.vortex 1.0 vortex-file-compressed 4.52 MB 4.15 MB 372.92 KB -8.1%
customer_address.vortex 1.0 vortex-file-compressed 1012.93 KB 848.88 KB 164.05 KB -16.2%
item.vortex 1.0 vortex-file-compressed 1.75 MB 1.44 MB 314.26 KB -17.6%
catalog_page.vortex 1.0 vortex-file-compressed 611.54 KB 472.27 KB 139.27 KB -22.8%
date_dim.vortex 1.0 vortex-file-compressed 1.03 MB 790.32 KB 265.00 KB -25.1%
time_dim.vortex 1.0 vortex-file-compressed 687.27 KB 446.90 KB 240.37 KB -35.0%

Totals:

  • vortex-compact: 207.50 MB → 207.51 MB (+0.0%)
  • vortex-file-compressed: 272.70 MB → 271.23 MB (-0.5%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: Random Access

Vortex (geomean): 0.978x ➖
Parquet (geomean): 1.012x ➖


unknown / unknown (0.997x ➖, 2↑ 0↓)
name PR a1ba67f (ns) base 1f6fb0a (ns) ratio (PR/base)
random-access/feature-vectors/correlated/lance-tokio-local-disk 🚀 1964162 2408626 0.82
random-access/feature-vectors/correlated/lance-tokio-local-disk-footer 1499647 1471234 1.02
random-access/feature-vectors/correlated/parquet-tokio-local-disk 8193442876 8276831905 0.99
random-access/feature-vectors/correlated/parquet-tokio-local-disk-footer 8185628144 8178838701 1.00
random-access/feature-vectors/correlated/vortex-tokio-local-disk 7779650 7862628 0.99
random-access/feature-vectors/correlated/vortex-tokio-local-disk-footer 7247756 7412429 0.98
random-access/feature-vectors/uniform/lance-tokio-local-disk 5818664 5783586 1.01
random-access/feature-vectors/uniform/lance-tokio-local-disk-footer 6637777 6550889 1.01
random-access/feature-vectors/uniform/parquet-tokio-local-disk 8221214737 8128259529 1.01
random-access/feature-vectors/uniform/parquet-tokio-local-disk-footer 8215028117 8192557034 1.00
random-access/feature-vectors/uniform/vortex-tokio-local-disk 13338673 13330908 1.00
random-access/feature-vectors/uniform/vortex-tokio-local-disk-footer 13147209 13231153 0.99
random-access/lance-tokio-local-disk 761244 752151 1.01
random-access/lance-tokio-local-disk-footer 1321756 1309831 1.01
random-access/nested-lists/correlated/lance-tokio-local-disk 250320 250652 1.00
random-access/nested-lists/correlated/lance-tokio-local-disk-footer 628903 629239 1.00
random-access/nested-lists/correlated/parquet-tokio-local-disk 130920903 127990733 1.02
random-access/nested-lists/correlated/parquet-tokio-local-disk-footer 130616380 127557200 1.02
random-access/nested-lists/correlated/vortex-tokio-local-disk 559570 583675 0.96
random-access/nested-lists/correlated/vortex-tokio-local-disk-footer 576689 593655 0.97
random-access/nested-lists/uniform/lance-tokio-local-disk 1109889 1088319 1.02
random-access/nested-lists/uniform/lance-tokio-local-disk-footer 1519625 1471365 1.03
random-access/nested-lists/uniform/parquet-tokio-local-disk 130648063 126663766 1.03
random-access/nested-lists/uniform/parquet-tokio-local-disk-footer 130372828 126608989 1.03
random-access/nested-lists/uniform/vortex-tokio-local-disk 2065876 2096974 0.99
random-access/nested-lists/uniform/vortex-tokio-local-disk-footer 2079383 2077942 1.00
random-access/nested-structs/correlated/lance-tokio-local-disk 397841 394452 1.01
random-access/nested-structs/correlated/lance-tokio-local-disk-footer 600816 597107 1.01
random-access/nested-structs/correlated/parquet-tokio-local-disk 21646644 21764868 0.99
random-access/nested-structs/correlated/parquet-tokio-local-disk-footer 21252651 21669403 0.98
random-access/nested-structs/correlated/vortex-tokio-local-disk 763570 748421 1.02
random-access/nested-structs/correlated/vortex-tokio-local-disk-footer 763879 747290 1.02
random-access/nested-structs/uniform/lance-tokio-local-disk 2730117 2662385 1.03
random-access/nested-structs/uniform/lance-tokio-local-disk-footer 2964296 2887188 1.03
random-access/nested-structs/uniform/parquet-tokio-local-disk 21905938 21591751 1.01
random-access/nested-structs/uniform/parquet-tokio-local-disk-footer 21373960 21668664 0.99
random-access/nested-structs/uniform/vortex-tokio-local-disk 1639906 1633884 1.00
random-access/nested-structs/uniform/vortex-tokio-local-disk-footer 1595604 1634213 0.98
random-access/parquet-tokio-local-disk 168961497 163910640 1.03
random-access/parquet-tokio-local-disk-footer 167987753 163718173 1.03
random-access/taxi/correlated/lance-tokio-local-disk 948927 938376 1.01
random-access/taxi/correlated/lance-tokio-local-disk-footer 1599248 1580355 1.01
random-access/taxi/correlated/parquet-tokio-local-disk 250498614 246811059 1.01
random-access/taxi/correlated/parquet-tokio-local-disk-footer 250663047 246413912 1.02
random-access/taxi/correlated/vortex-tokio-local-disk 🚀 1571218 1784804 0.88
random-access/taxi/correlated/vortex-tokio-local-disk-footer 1720002 1798293 0.96
random-access/taxi/uniform/lance-tokio-local-disk 9426028 9488088 0.99
random-access/taxi/uniform/lance-tokio-local-disk-footer 10272534 10107395 1.02
random-access/taxi/uniform/parquet-tokio-local-disk 268133588 260808595 1.03
random-access/taxi/uniform/parquet-tokio-local-disk-footer 266211254 261165715 1.02
random-access/taxi/uniform/vortex-tokio-local-disk 4491373 4584772 0.98
random-access/taxi/uniform/vortex-tokio-local-disk-footer 4481872 4576592 0.98
random-access/vortex-tokio-local-disk 1206031 1241220 0.97
random-access/vortex-tokio-local-disk-footer 1213084 1277576 0.95

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: Statistical and Population Genetics

File Size Changes (2 files changed, -0.2% overall, 0↑ 2↓)
File Scale Format Base HEAD Change %
gnomad.genomes.v3.1.2.hgdp_tgp.chr21.vortex 100000 vortex-compact 959.35 MB 959.35 MB 280 B -0.0%
gnomad.genomes.v3.1.2.hgdp_tgp.chr21.vortex 100000 vortex-file-compressed 1.97 GB 1.96 GB 5.86 MB -0.3%

Totals:

  • vortex-compact: 959.62 MB → 959.62 MB (-0.0%)
  • vortex-file-compressed: 1.97 GB → 1.96 GB (-0.3%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: TPC-H SF=10 on NVME

File Size Changes (48 files changed, -4.2% overall, 8↑ 40↓)
File Scale Format Base HEAD Change %
part_0.vortex 10.0 vortex-compact 18.11 MB 18.28 MB +178.98 KB +1.0%
part_1.vortex 10.0 vortex-compact 18.11 MB 18.24 MB +131.14 KB +0.7%
region_0.vortex 10.0 vortex-compact 5.82 KB 5.86 KB +32 B +0.5%
region_0.vortex 10.0 vortex-file-compressed 6.13 KB 6.16 KB +32 B +0.5%
nation_0.vortex 10.0 vortex-compact 8.31 KB 8.34 KB +32 B +0.4%
supplier_0.vortex 10.0 vortex-compact 4.73 MB 4.73 MB +32 B +0.0%
customer_0.vortex 10.0 vortex-compact 74.12 MB 74.12 MB +32 B +0.0%
partsupp_1.vortex 10.0 vortex-compact 126.74 MB 126.74 MB +32 B +0.0%
orders_0.vortex 10.0 vortex-compact 114.79 MB 114.79 MB 272 B -0.0%
orders_2.vortex 10.0 vortex-compact 114.78 MB 114.78 MB 272 B -0.0%
orders_1.vortex 10.0 vortex-compact 114.76 MB 114.76 MB 272 B -0.0%
lineitem_5.vortex 10.0 vortex-compact 100.70 MB 100.70 MB 712 B -0.0%
lineitem_6.vortex 10.0 vortex-compact 100.68 MB 100.68 MB 712 B -0.0%
lineitem_1.vortex 10.0 vortex-compact 100.64 MB 100.64 MB 712 B -0.0%
lineitem_12.vortex 10.0 vortex-compact 100.62 MB 100.62 MB 712 B -0.0%
lineitem_10.vortex 10.0 vortex-compact 100.62 MB 100.62 MB 712 B -0.0%
lineitem_3.vortex 10.0 vortex-compact 100.62 MB 100.62 MB 712 B -0.0%
lineitem_0.vortex 10.0 vortex-compact 100.59 MB 100.59 MB 712 B -0.0%
lineitem_8.vortex 10.0 vortex-compact 100.59 MB 100.59 MB 712 B -0.0%
lineitem_2.vortex 10.0 vortex-compact 100.59 MB 100.59 MB 712 B -0.0%
lineitem_7.vortex 10.0 vortex-compact 100.58 MB 100.58 MB 712 B -0.0%
lineitem_4.vortex 10.0 vortex-compact 100.56 MB 100.56 MB 712 B -0.0%
lineitem_11.vortex 10.0 vortex-compact 100.53 MB 100.52 MB 712 B -0.0%
lineitem_9.vortex 10.0 vortex-compact 100.46 MB 100.46 MB 712 B -0.0%
partsupp_0.vortex 10.0 vortex-compact 126.76 MB 126.72 MB 41.26 KB -0.0%
part_0.vortex 10.0 vortex-file-compressed 27.02 MB 26.23 MB 816.30 KB -2.9%
part_1.vortex 10.0 vortex-file-compressed 26.99 MB 26.18 MB 832.06 KB -3.0%
lineitem_7.vortex 10.0 vortex-file-compressed 134.01 MB 129.67 MB 4.34 MB -3.2%
lineitem_12.vortex 10.0 vortex-file-compressed 134.52 MB 130.13 MB 4.38 MB -3.3%
lineitem_11.vortex 10.0 vortex-file-compressed 134.87 MB 130.48 MB 4.40 MB -3.3%
lineitem_9.vortex 10.0 vortex-file-compressed 134.65 MB 130.23 MB 4.42 MB -3.3%
lineitem_1.vortex 10.0 vortex-file-compressed 134.27 MB 129.86 MB 4.41 MB -3.3%
lineitem_2.vortex 10.0 vortex-file-compressed 134.38 MB 129.96 MB 4.42 MB -3.3%
lineitem_8.vortex 10.0 vortex-file-compressed 134.06 MB 129.65 MB 4.41 MB -3.3%
lineitem_0.vortex 10.0 vortex-file-compressed 134.65 MB 130.21 MB 4.44 MB -3.3%
lineitem_4.vortex 10.0 vortex-file-compressed 134.43 MB 129.99 MB 4.44 MB -3.3%
lineitem_3.vortex 10.0 vortex-file-compressed 133.74 MB 129.32 MB 4.43 MB -3.3%
lineitem_10.vortex 10.0 vortex-file-compressed 134.51 MB 130.05 MB 4.46 MB -3.3%
lineitem_5.vortex 10.0 vortex-file-compressed 133.86 MB 129.41 MB 4.45 MB -3.3%
lineitem_6.vortex 10.0 vortex-file-compressed 133.23 MB 128.79 MB 4.44 MB -3.3%
orders_0.vortex 10.0 vortex-file-compressed 163.92 MB 155.25 MB 8.67 MB -5.3%
orders_2.vortex 10.0 vortex-file-compressed 164.00 MB 155.25 MB 8.75 MB -5.3%
nation_0.vortex 10.0 vortex-file-compressed 10.97 KB 10.38 KB 608 B -5.4%
orders_1.vortex 10.0 vortex-file-compressed 164.15 MB 155.26 MB 8.89 MB -5.4%
supplier_0.vortex 10.0 vortex-file-compressed 6.69 MB 6.09 MB 607.28 KB -8.9%
customer_0.vortex 10.0 vortex-file-compressed 104.73 MB 93.65 MB 11.08 MB -10.6%
partsupp_0.vortex 10.0 vortex-file-compressed 180.47 MB 127.54 MB 52.93 MB -29.3%
partsupp_1.vortex 10.0 vortex-file-compressed 180.65 MB 127.49 MB 53.15 MB -29.4%

Totals:

  • vortex-compact: 1.97 GB → 1.97 GB (+0.0%)
  • vortex-file-compressed: 2.70 GB → 2.50 GB (-7.3%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

File Sizes: Clickbench on NVME

File Size Changes (201 files changed, -14.2% overall, 8↑ 193↓)
File Scale Format Base HEAD Change %
hits_55.vortex 1.0 vortex-compact 93.77 MB 96.15 MB +2.39 MB +2.5%
hits_90.vortex 1.0 vortex-compact 81.86 MB 82.65 MB +808.15 KB +1.0%
hits_39.vortex 1.0 vortex-compact 49.82 MB 50.20 MB +393.44 KB +0.8%
hits_68.vortex 1.0 vortex-compact 75.99 MB 76.27 MB +280.59 KB +0.4%
hits_10.vortex 1.0 vortex-compact 48.86 MB 49.00 MB +145.34 KB +0.3%
hits_27.vortex 1.0 vortex-compact 69.88 MB 70.02 MB +141.36 KB +0.2%
hits_63.vortex 1.0 vortex-compact 46.10 MB 46.15 MB +45.00 KB +0.1%
hits_2.vortex 1.0 vortex-compact 129.36 MB 129.45 MB +92.40 KB +0.1%
hits_12.vortex 1.0 vortex-compact 69.27 MB 69.27 MB 1.42 KB -0.0%
hits_6.vortex 1.0 vortex-compact 63.16 MB 63.16 MB 1.30 KB -0.0%
hits_8.vortex 1.0 vortex-compact 62.89 MB 62.89 MB 1.39 KB -0.0%
hits_28.vortex 1.0 vortex-compact 70.27 MB 70.27 MB 1.59 KB -0.0%
hits_54.vortex 1.0 vortex-compact 117.66 MB 117.66 MB 3.12 KB -0.0%
hits_64.vortex 1.0 vortex-compact 53.91 MB 53.91 MB 1.45 KB -0.0%
hits_13.vortex 1.0 vortex-compact 67.96 MB 67.96 MB 1.83 KB -0.0%
hits_14.vortex 1.0 vortex-compact 73.75 MB 73.75 MB 2.16 KB -0.0%
hits_29.vortex 1.0 vortex-compact 36.61 MB 36.61 MB 1.11 KB -0.0%
hits_7.vortex 1.0 vortex-compact 63.80 MB 63.80 MB 2.06 KB -0.0%
hits_43.vortex 1.0 vortex-compact 168.91 MB 168.90 MB 5.52 KB -0.0%
hits_42.vortex 1.0 vortex-compact 164.22 MB 164.22 MB 5.57 KB -0.0%
hits_41.vortex 1.0 vortex-compact 165.78 MB 165.77 MB 6.78 KB -0.0%
hits_26.vortex 1.0 vortex-compact 70.89 MB 70.89 MB 3.05 KB -0.0%
hits_57.vortex 1.0 vortex-compact 83.54 MB 83.53 MB 3.78 KB -0.0%
hits_62.vortex 1.0 vortex-compact 74.26 MB 74.26 MB 3.38 KB -0.0%
hits_60.vortex 1.0 vortex-compact 64.33 MB 64.32 MB 3.02 KB -0.0%
hits_73.vortex 1.0 vortex-compact 70.04 MB 70.04 MB 3.34 KB -0.0%
hits_84.vortex 1.0 vortex-compact 73.14 MB 73.13 MB 3.56 KB -0.0%
hits_30.vortex 1.0 vortex-compact 58.69 MB 58.69 MB 2.94 KB -0.0%
hits_44.vortex 1.0 vortex-compact 132.46 MB 132.46 MB 6.66 KB -0.0%
hits_5.vortex 1.0 vortex-compact 62.90 MB 62.90 MB 3.23 KB -0.0%
hits_51.vortex 1.0 vortex-compact 167.81 MB 167.80 MB 9.09 KB -0.0%
hits_92.vortex 1.0 vortex-compact 94.27 MB 94.27 MB 5.52 KB -0.0%
hits_65.vortex 1.0 vortex-compact 129.95 MB 129.94 MB 7.70 KB -0.0%
hits_67.vortex 1.0 vortex-compact 114.05 MB 114.04 MB 7.05 KB -0.0%
hits_1.vortex 1.0 vortex-compact 90.34 MB 90.34 MB 5.80 KB -0.0%
hits_77.vortex 1.0 vortex-compact 118.11 MB 118.10 MB 7.60 KB -0.0%
hits_38.vortex 1.0 vortex-compact 63.10 MB 63.10 MB 4.10 KB -0.0%
hits_37.vortex 1.0 vortex-compact 53.83 MB 53.83 MB 3.53 KB -0.0%
hits_25.vortex 1.0 vortex-compact 73.14 MB 73.13 MB 4.98 KB -0.0%
hits_74.vortex 1.0 vortex-compact 71.62 MB 71.62 MB 4.88 KB -0.0%
hits_9.vortex 1.0 vortex-compact 65.67 MB 65.67 MB 4.52 KB -0.0%
hits_89.vortex 1.0 vortex-compact 112.82 MB 112.81 MB 7.79 KB -0.0%
hits_71.vortex 1.0 vortex-compact 69.29 MB 69.29 MB 4.88 KB -0.0%
hits_85.vortex 1.0 vortex-compact 52.73 MB 52.73 MB 3.76 KB -0.0%
hits_50.vortex 1.0 vortex-compact 113.12 MB 113.11 MB 8.53 KB -0.0%
hits_94.vortex 1.0 vortex-compact 90.63 MB 90.62 MB 6.86 KB -0.0%
hits_69.vortex 1.0 vortex-compact 81.02 MB 81.01 MB 6.27 KB -0.0%
hits_21.vortex 1.0 vortex-compact 51.60 MB 51.59 MB 4.28 KB -0.0%
hits_79.vortex 1.0 vortex-compact 85.70 MB 85.70 MB 7.12 KB -0.0%
hits_56.vortex 1.0 vortex-compact 77.87 MB 77.87 MB 6.47 KB -0.0%
hits_99.vortex 1.0 vortex-compact 77.31 MB 77.31 MB 6.68 KB -0.0%
hits_80.vortex 1.0 vortex-compact 68.07 MB 68.06 MB 6.32 KB -0.0%
hits_70.vortex 1.0 vortex-compact 61.29 MB 61.28 MB 5.77 KB -0.0%
hits_82.vortex 1.0 vortex-compact 66.89 MB 66.88 MB 6.30 KB -0.0%
hits_47.vortex 1.0 vortex-compact 18.25 MB 18.24 MB 1.80 KB -0.0%
hits_34.vortex 1.0 vortex-compact 58.26 MB 58.25 MB 5.79 KB -0.0%
hits_96.vortex 1.0 vortex-compact 91.08 MB 91.07 MB 9.48 KB -0.0%
hits_78.vortex 1.0 vortex-compact 97.87 MB 97.86 MB 10.30 KB -0.0%
hits_40.vortex 1.0 vortex-compact 75.92 MB 75.92 MB 8.01 KB -0.0%
hits_58.vortex 1.0 vortex-compact 60.41 MB 60.41 MB 6.81 KB -0.0%
hits_45.vortex 1.0 vortex-compact 76.07 MB 76.06 MB 8.79 KB -0.0%
hits_91.vortex 1.0 vortex-compact 60.94 MB 60.93 MB 7.16 KB -0.0%
hits_3.vortex 1.0 vortex-compact 94.23 MB 94.22 MB 11.23 KB -0.0%
hits_19.vortex 1.0 vortex-compact 44.88 MB 44.88 MB 5.59 KB -0.0%
hits_97.vortex 1.0 vortex-compact 69.16 MB 69.15 MB 8.91 KB -0.0%
hits_4.vortex 1.0 vortex-compact 71.81 MB 71.80 MB 9.57 KB -0.0%
hits_76.vortex 1.0 vortex-compact 76.44 MB 76.43 MB 10.43 KB -0.0%
hits_20.vortex 1.0 vortex-compact 38.14 MB 38.13 MB 5.21 KB -0.0%
hits_46.vortex 1.0 vortex-compact 41.92 MB 41.91 MB 5.73 KB -0.0%
hits_53.vortex 1.0 vortex-compact 59.09 MB 59.09 MB 8.18 KB -0.0%
hits_16.vortex 1.0 vortex-compact 48.30 MB 48.29 MB 6.70 KB -0.0%
hits_31.vortex 1.0 vortex-compact 55.56 MB 55.55 MB 7.87 KB -0.0%
hits_11.vortex 1.0 vortex-compact 54.35 MB 54.34 MB 7.89 KB -0.0%
hits_61.vortex 1.0 vortex-compact 57.66 MB 57.65 MB 8.38 KB -0.0%
hits_95.vortex 1.0 vortex-compact 57.75 MB 57.75 MB 8.41 KB -0.0%
hits_22.vortex 1.0 vortex-compact 44.74 MB 44.73 MB 6.55 KB -0.0%
hits_18.vortex 1.0 vortex-compact 64.28 MB 64.28 MB 9.47 KB -0.0%
hits_59.vortex 1.0 vortex-compact 66.30 MB 66.29 MB 10.27 KB -0.0%
hits_88.vortex 1.0 vortex-compact 73.31 MB 73.30 MB 11.37 KB -0.0%
hits_52.vortex 1.0 vortex-compact 63.73 MB 63.72 MB 9.92 KB -0.0%
hits_81.vortex 1.0 vortex-compact 65.45 MB 65.44 MB 10.84 KB -0.0%
hits_23.vortex 1.0 vortex-compact 44.17 MB 44.17 MB 7.47 KB -0.0%
hits_17.vortex 1.0 vortex-compact 58.32 MB 58.31 MB 10.30 KB -0.0%
hits_93.vortex 1.0 vortex-compact 58.90 MB 58.89 MB 10.48 KB -0.0%
hits_98.vortex 1.0 vortex-compact 72.77 MB 72.76 MB 13.05 KB -0.0%
hits_83.vortex 1.0 vortex-compact 52.57 MB 52.56 MB 10.46 KB -0.0%
hits_32.vortex 1.0 vortex-compact 44.13 MB 44.12 MB 9.25 KB -0.0%
hits_24.vortex 1.0 vortex-compact 43.63 MB 43.62 MB 9.34 KB -0.0%
hits_33.vortex 1.0 vortex-compact 35.95 MB 35.94 MB 8.35 KB -0.0%
hits_66.vortex 1.0 vortex-compact 53.49 MB 53.48 MB 13.45 KB -0.0%
hits_72.vortex 1.0 vortex-compact 51.79 MB 51.77 MB 13.45 KB -0.0%
hits_35.vortex 1.0 vortex-compact 75.11 MB 75.09 MB 19.72 KB -0.0%
hits_49.vortex 1.0 vortex-compact 50.53 MB 50.52 MB 14.80 KB -0.0%
hits_75.vortex 1.0 vortex-compact 43.63 MB 43.61 MB 13.68 KB -0.0%
hits_0.vortex 1.0 vortex-compact 58.66 MB 58.64 MB 18.66 KB -0.0%
hits_86.vortex 1.0 vortex-compact 48.25 MB 48.23 MB 16.70 KB -0.0%
hits_15.vortex 1.0 vortex-compact 48.14 MB 48.12 MB 19.76 KB -0.0%
hits_36.vortex 1.0 vortex-compact 48.99 MB 48.97 MB 27.94 KB -0.1%
hits_48.vortex 1.0 vortex-compact 17.32 MB 17.31 MB 17.07 KB -0.1%
hits_87.vortex 1.0 vortex-compact 119.04 MB 118.85 MB 199.44 KB -0.2%
hits_47.vortex 1.0 vortex-file-compressed 41.86 MB 41.35 MB 522.84 KB -1.2%
hits_48.vortex 1.0 vortex-file-compressed 28.53 MB 28.07 MB 467.84 KB -1.6%
hits_24.vortex 1.0 vortex-file-compressed 79.71 MB 77.63 MB 2.08 MB -2.6%
hits_23.vortex 1.0 vortex-file-compressed 80.37 MB 78.17 MB 2.19 MB -2.7%
hits_22.vortex 1.0 vortex-file-compressed 81.17 MB 78.82 MB 2.35 MB -2.9%
hits_20.vortex 1.0 vortex-file-compressed 67.53 MB 63.56 MB 3.97 MB -5.9%
hits_21.vortex 1.0 vortex-file-compressed 101.28 MB 94.15 MB 7.13 MB -7.0%
hits_15.vortex 1.0 vortex-file-compressed 97.01 MB 89.33 MB 7.68 MB -7.9%
hits_16.vortex 1.0 vortex-file-compressed 87.59 MB 80.00 MB 7.59 MB -8.7%
hits_29.vortex 1.0 vortex-file-compressed 65.47 MB 59.78 MB 5.69 MB -8.7%
hits_33.vortex 1.0 vortex-file-compressed 62.97 MB 57.40 MB 5.56 MB -8.8%
hits_19.vortex 1.0 vortex-file-compressed 82.10 MB 73.76 MB 8.34 MB -10.2%
hits_53.vortex 1.0 vortex-file-compressed 98.26 MB 87.47 MB 10.78 MB -11.0%
hits_61.vortex 1.0 vortex-file-compressed 114.43 MB 101.44 MB 12.99 MB -11.4%
hits_72.vortex 1.0 vortex-file-compressed 96.27 MB 84.99 MB 11.28 MB -11.7%
hits_37.vortex 1.0 vortex-file-compressed 97.54 MB 86.10 MB 11.44 MB -11.7%
hits_34.vortex 1.0 vortex-file-compressed 111.68 MB 97.79 MB 13.89 MB -12.4%
hits_52.vortex 1.0 vortex-file-compressed 120.78 MB 105.38 MB 15.40 MB -12.7%
hits_32.vortex 1.0 vortex-file-compressed 77.12 MB 67.02 MB 10.10 MB -13.1%
hits_83.vortex 1.0 vortex-file-compressed 103.72 MB 89.93 MB 13.79 MB -13.3%
hits_46.vortex 1.0 vortex-file-compressed 80.32 MB 69.50 MB 10.82 MB -13.5%
hits_63.vortex 1.0 vortex-file-compressed 80.62 MB 69.72 MB 10.90 MB -13.5%
hits_31.vortex 1.0 vortex-file-compressed 104.39 MB 90.24 MB 14.15 MB -13.6%
hits_85.vortex 1.0 vortex-file-compressed 106.37 MB 91.87 MB 14.50 MB -13.6%
hits_10.vortex 1.0 vortex-file-compressed 81.76 MB 70.26 MB 11.49 MB -14.1%
hits_49.vortex 1.0 vortex-file-compressed 88.67 MB 76.18 MB 12.49 MB -14.1%
hits_66.vortex 1.0 vortex-file-compressed 105.34 MB 90.49 MB 14.85 MB -14.1%
hits_75.vortex 1.0 vortex-file-compressed 74.18 MB 63.71 MB 10.47 MB -14.1%
hits_36.vortex 1.0 vortex-file-compressed 80.27 MB 68.90 MB 11.37 MB -14.2%
hits_64.vortex 1.0 vortex-file-compressed 95.27 MB 81.58 MB 13.69 MB -14.4%
hits_86.vortex 1.0 vortex-file-compressed 81.40 MB 69.70 MB 11.71 MB -14.4%
hits_60.vortex 1.0 vortex-file-compressed 121.19 MB 103.57 MB 17.62 MB -14.5%
hits_39.vortex 1.0 vortex-file-compressed 94.06 MB 80.36 MB 13.70 MB -14.6%
hits_95.vortex 1.0 vortex-file-compressed 114.33 MB 96.74 MB 17.60 MB -15.4%
hits_80.vortex 1.0 vortex-file-compressed 124.24 MB 105.08 MB 19.16 MB -15.4%
hits_17.vortex 1.0 vortex-file-compressed 103.64 MB 87.58 MB 16.05 MB -15.5%
hits_93.vortex 1.0 vortex-file-compressed 107.66 MB 90.71 MB 16.95 MB -15.7%
hits_45.vortex 1.0 vortex-file-compressed 145.48 MB 122.29 MB 23.19 MB -15.9%
hits_30.vortex 1.0 vortex-file-compressed 104.00 MB 87.40 MB 16.60 MB -16.0%
hits_73.vortex 1.0 vortex-file-compressed 131.83 MB 110.73 MB 21.10 MB -16.0%
hits_69.vortex 1.0 vortex-file-compressed 147.61 MB 123.79 MB 23.83 MB -16.1%
hits_38.vortex 1.0 vortex-file-compressed 118.43 MB 99.30 MB 19.13 MB -16.2%
hits_91.vortex 1.0 vortex-file-compressed 116.23 MB 97.45 MB 18.79 MB -16.2%
hits_59.vortex 1.0 vortex-file-compressed 121.84 MB 102.02 MB 19.82 MB -16.3%
hits_11.vortex 1.0 vortex-file-compressed 96.07 MB 80.19 MB 15.88 MB -16.5%
hits_25.vortex 1.0 vortex-file-compressed 137.01 MB 114.17 MB 22.84 MB -16.7%
hits_18.vortex 1.0 vortex-file-compressed 126.06 MB 104.97 MB 21.09 MB -16.7%
hits_35.vortex 1.0 vortex-file-compressed 138.81 MB 115.54 MB 23.26 MB -16.8%
hits_14.vortex 1.0 vortex-file-compressed 135.14 MB 111.78 MB 23.36 MB -17.3%
hits_40.vortex 1.0 vortex-file-compressed 142.99 MB 118.12 MB 24.87 MB -17.4%
hits_76.vortex 1.0 vortex-file-compressed 140.05 MB 114.80 MB 25.25 MB -18.0%
hits_97.vortex 1.0 vortex-file-compressed 130.96 MB 107.17 MB 23.79 MB -18.2%
hits_70.vortex 1.0 vortex-file-compressed 115.14 MB 93.82 MB 21.32 MB -18.5%
hits_82.vortex 1.0 vortex-file-compressed 122.77 MB 100.02 MB 22.75 MB -18.5%
hits_88.vortex 1.0 vortex-file-compressed 137.34 MB 111.80 MB 25.54 MB -18.6%
hits_57.vortex 1.0 vortex-file-compressed 158.37 MB 128.35 MB 30.02 MB -19.0%
hits_84.vortex 1.0 vortex-file-compressed 145.05 MB 117.47 MB 27.59 MB -19.0%
hits_71.vortex 1.0 vortex-file-compressed 126.41 MB 102.27 MB 24.14 MB -19.1%
hits_12.vortex 1.0 vortex-file-compressed 125.34 MB 101.25 MB 24.08 MB -19.2%
hits_13.vortex 1.0 vortex-file-compressed 123.20 MB 99.47 MB 23.73 MB -19.3%
hits_9.vortex 1.0 vortex-file-compressed 124.22 MB 99.31 MB 24.91 MB -20.1%
hits_0.vortex 1.0 vortex-file-compressed 112.17 MB 89.66 MB 22.51 MB -20.1%
hits_81.vortex 1.0 vortex-file-compressed 126.55 MB 100.84 MB 25.71 MB -20.3%
hits_58.vortex 1.0 vortex-file-compressed 113.78 MB 90.51 MB 23.26 MB -20.4%
hits_62.vortex 1.0 vortex-file-compressed 148.36 MB 117.57 MB 30.78 MB -20.7%
hits_74.vortex 1.0 vortex-file-compressed 152.12 MB 119.83 MB 32.29 MB -21.2%
hits_98.vortex 1.0 vortex-file-compressed 150.55 MB 118.37 MB 32.18 MB -21.4%
hits_4.vortex 1.0 vortex-file-compressed 138.86 MB 108.82 MB 30.04 MB -21.6%
hits_87.vortex 1.0 vortex-file-compressed 221.68 MB 173.20 MB 48.49 MB -21.9%
hits_2.vortex 1.0 vortex-file-compressed 241.46 MB 187.77 MB 53.68 MB -22.2%
hits_65.vortex 1.0 vortex-file-compressed 238.05 MB 184.43 MB 53.61 MB -22.5%
hits_99.vortex 1.0 vortex-file-compressed 158.88 MB 123.07 MB 35.81 MB -22.5%
hits_77.vortex 1.0 vortex-file-compressed 218.96 MB 169.31 MB 49.66 MB -22.7%
hits_44.vortex 1.0 vortex-file-compressed 243.64 MB 187.69 MB 55.95 MB -23.0%
hits_1.vortex 1.0 vortex-file-compressed 181.16 MB 138.84 MB 42.33 MB -23.4%
hits_26.vortex 1.0 vortex-file-compressed 144.05 MB 110.16 MB 33.89 MB -23.5%
hits_6.vortex 1.0 vortex-file-compressed 122.86 MB 93.32 MB 29.54 MB -24.0%
hits_7.vortex 1.0 vortex-file-compressed 123.82 MB 94.04 MB 29.78 MB -24.0%
hits_8.vortex 1.0 vortex-file-compressed 122.86 MB 93.26 MB 29.60 MB -24.1%
hits_5.vortex 1.0 vortex-file-compressed 122.64 MB 93.00 MB 29.64 MB -24.2%
hits_56.vortex 1.0 vortex-file-compressed 163.76 MB 123.19 MB 40.56 MB -24.8%
hits_96.vortex 1.0 vortex-file-compressed 180.76 MB 135.63 MB 45.13 MB -25.0%
hits_42.vortex 1.0 vortex-file-compressed 298.79 MB 224.08 MB 74.71 MB -25.0%
hits_41.vortex 1.0 vortex-file-compressed 300.49 MB 225.13 MB 75.36 MB -25.1%
hits_94.vortex 1.0 vortex-file-compressed 185.12 MB 138.55 MB 46.58 MB -25.2%
hits_43.vortex 1.0 vortex-file-compressed 305.71 MB 228.34 MB 77.37 MB -25.3%
hits_92.vortex 1.0 vortex-file-compressed 196.47 MB 146.73 MB 49.74 MB -25.3%
hits_3.vortex 1.0 vortex-file-compressed 193.11 MB 142.34 MB 50.77 MB -26.3%
hits_68.vortex 1.0 vortex-file-compressed 172.16 MB 123.32 MB 48.85 MB -28.4%
hits_28.vortex 1.0 vortex-file-compressed 167.55 MB 119.42 MB 48.13 MB -28.7%
hits_79.vortex 1.0 vortex-file-compressed 204.16 MB 144.63 MB 59.53 MB -29.2%
hits_27.vortex 1.0 vortex-file-compressed 174.61 MB 122.31 MB 52.30 MB -30.0%
hits_50.vortex 1.0 vortex-file-compressed 255.24 MB 178.02 MB 77.22 MB -30.3%
hits_90.vortex 1.0 vortex-file-compressed 204.12 MB 141.56 MB 62.57 MB -30.7%
hits_89.vortex 1.0 vortex-file-compressed 266.01 MB 183.08 MB 82.92 MB -31.2%
hits_67.vortex 1.0 vortex-file-compressed 265.94 MB 182.64 MB 83.29 MB -31.3%
hits_78.vortex 1.0 vortex-file-compressed 238.59 MB 162.72 MB 75.87 MB -31.8%
hits_55.vortex 1.0 vortex-file-compressed 251.56 MB 168.32 MB 83.23 MB -33.1%
hits_51.vortex 1.0 vortex-file-compressed 428.84 MB 274.20 MB 154.64 MB -36.1%
hits_54.vortex 1.0 vortex-file-compressed 361.83 MB 219.46 MB 142.37 MB -39.3%
duckdb.db 1.0 vortex-compact 268.00 KB 0 B 268.00 KB -100.0%

Totals:

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

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
New crate `onpair-lib` at `encodings/onpair-rs/` that mirrors the subset of
`vortex-onpair-sys` actually consumed by `vortex-onpair`: BPE-style
dictionary training plus LSB-first bit-packed token encoding, exposed via
`Column::compress` and `Column::parts` with the same shape as the FFI
crate. Decode, LIKE, and EQ remain in `vortex-onpair` (already pure Rust)
and read the same `(dict_bytes, dict_offsets, codes_packed,
codes_boundaries, bits)` layout.

Modules ported from `gargiulofrancesco/onpair_cpp`:
  * types, dict, store, bit_writer, bit_unpack
  * lpm (flat HashMap keyed by (u128, u8); behavioural-equivalent
    replacement for the C++ short/long bucket split)
  * trainer (BPE pair-discovery + DynamicThresholdController + sort)
  * parser, column

Tests:
  * 162 unit tests ported from the C++ GoogleTest suite (types,
    dictionary, store, bit_writer, lpm, trainer, parser, column
    round-trip across all 8 bit widths).
  * 8 cross-impl tests in `tests/cross_impl.rs` against
    `vortex-onpair-sys`: structural parity, decompression equivalence,
    eq / starts_with / contains predicate equivalence on a shared decode
    loop, and dictionary invariants (covers all 256 bytes, lex-sorted).

Known divergence from C++: bit-exact dictionary equality is not asserted
because the two implementations use different RNGs (`std::mt19937_64` vs
Rust's `StdRng`). Every observable downstream operation matches.

Signed-off-by: Claude <noreply@anthropic.com>
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