Skip to content

Add OnPair string compression encoding with predicate pushdown#7927

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

Add OnPair string compression encoding with predicate pushdown#7927
joseph-isaacs wants to merge 17 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 degrade performance by 16.85%

⚠️ 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.

❌ 6 regressed benchmarks
✅ 1210 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation new_bp_prim_test_between[i32, 16384] 95.1 µs 109.6 µs -13.18%
Simulation new_bp_prim_test_between[i32, 32768] 141.5 µs 170.4 µs -16.98%
Simulation new_bp_prim_test_between[i16, 32768] 120.7 µs 134.7 µs -10.4%
Simulation new_bp_prim_test_between[i64, 16384] 115.5 µs 144.9 µs -20.29%
Simulation new_bp_prim_test_between[i64, 32768] 178.3 µs 237.2 µs -24.82%
Simulation new_alp_prim_test_between[f64, 16384] 127.5 µs 149.3 µs -14.61%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing claude/vortex-array-rust-bindings-FQfIX (53c3ea4) with develop (b3e1673)

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 adeda19 1 Explore Profiling Data
Previous Runs (6)
Status Commit Job Attempt Link
🟢 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: +3.1%
Vortex (geomean): 1.104x ❌
Parquet (geomean): 1.060x ➖
Shifts: Parquet (control) +6.0% · Median polish +6.0%


datafusion / vortex-file-compressed (1.159x ❌, 0↑ 17↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 🚨 55310615 49087547 1.13
tpch_q02/datafusion:vortex-file-compressed 🚨 24018519 21691323 1.11
tpch_q03/datafusion:vortex-file-compressed 🚨 31428004 27545878 1.14
tpch_q04/datafusion:vortex-file-compressed 🚨 22365277 20068145 1.11
tpch_q05/datafusion:vortex-file-compressed 🚨 57859574 48003960 1.21
tpch_q06/datafusion:vortex-file-compressed 🚨 13168814 11795581 1.12
tpch_q07/datafusion:vortex-file-compressed 🚨 62406814 53395838 1.17
tpch_q08/datafusion:vortex-file-compressed 🚨 46731785 38642763 1.21
tpch_q09/datafusion:vortex-file-compressed 🚨 60866552 51828174 1.17
tpch_q10/datafusion:vortex-file-compressed 🚨 49682243 38640328 1.29
tpch_q11/datafusion:vortex-file-compressed 🚨 17665409 15663012 1.13
tpch_q12/datafusion:vortex-file-compressed 27216215 25059228 1.09
tpch_q13/datafusion:vortex-file-compressed 🚨 27621791 24961228 1.11
tpch_q14/datafusion:vortex-file-compressed 🚨 18947692 16771084 1.13
tpch_q15/datafusion:vortex-file-compressed 28226104 25831992 1.09
tpch_q16/datafusion:vortex-file-compressed 20838457 19427934 1.07
tpch_q17/datafusion:vortex-file-compressed 🚨 76108072 65222330 1.17
tpch_q18/datafusion:vortex-file-compressed 🚨 92632951 80861061 1.15
tpch_q19/datafusion:vortex-file-compressed 🚨 24930674 22221727 1.12
tpch_q20/datafusion:vortex-file-compressed 35016698 31876229 1.10
tpch_q21/datafusion:vortex-file-compressed 82958085 76243071 1.09
tpch_q22/datafusion:vortex-file-compressed 🚨 23589823 13388830 1.76
datafusion / vortex-compact (1.061x ➖, 0↑ 4↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 61871740 58766469 1.05
tpch_q02/datafusion:vortex-compact 27826002 26130011 1.06
tpch_q03/datafusion:vortex-compact 31298982 31316847 1.00
tpch_q04/datafusion:vortex-compact 🚨 25913490 23534700 1.10
tpch_q05/datafusion:vortex-compact 58688336 54678770 1.07
tpch_q06/datafusion:vortex-compact 15719446 14318587 1.10
tpch_q07/datafusion:vortex-compact 66096897 61612846 1.07
tpch_q08/datafusion:vortex-compact 46932797 46003367 1.02
tpch_q09/datafusion:vortex-compact 60696962 58026033 1.05
tpch_q10/datafusion:vortex-compact 50842194 47540258 1.07
tpch_q11/datafusion:vortex-compact 18152679 17742903 1.02
tpch_q12/datafusion:vortex-compact 32877305 31719684 1.04
tpch_q13/datafusion:vortex-compact 33739462 32515011 1.04
tpch_q14/datafusion:vortex-compact 21807359 20757451 1.05
tpch_q15/datafusion:vortex-compact 34700749 33607053 1.03
tpch_q16/datafusion:vortex-compact 🚨 28143916 24747431 1.14
tpch_q17/datafusion:vortex-compact 🚨 79854222 72467569 1.10
tpch_q18/datafusion:vortex-compact 🚨 98552960 88936503 1.11
tpch_q19/datafusion:vortex-compact 32927547 30874387 1.07
tpch_q20/datafusion:vortex-compact 37247279 35484217 1.05
tpch_q21/datafusion:vortex-compact 83528906 80417068 1.04
tpch_q22/datafusion:vortex-compact 14101951 13249991 1.06
datafusion / parquet (1.078x ➖, 1↑ 5↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 🚨 129054617 94473347 1.37
tpch_q02/datafusion:parquet 66939066 61544514 1.09
tpch_q03/datafusion:parquet 73142617 69862423 1.05
tpch_q04/datafusion:parquet 45254821 42652934 1.06
tpch_q05/datafusion:parquet 100825501 92256908 1.09
tpch_q06/datafusion:parquet 43515713 42705172 1.02
tpch_q07/datafusion:parquet 114073148 104658334 1.09
tpch_q08/datafusion:parquet 104074835 98373357 1.06
tpch_q09/datafusion:parquet 136508331 128109522 1.07
tpch_q10/datafusion:parquet 117555850 109592543 1.07
tpch_q11/datafusion:parquet 44463142 40434529 1.10
tpch_q12/datafusion:parquet 🚨 91994956 80549730 1.14
tpch_q13/datafusion:parquet 221118063 206402320 1.07
tpch_q14/datafusion:parquet 49441420 46705812 1.06
tpch_q15/datafusion:parquet 60823024 57835766 1.05
tpch_q16/datafusion:parquet 🚨 44284775 39861946 1.11
tpch_q17/datafusion:parquet 🚨 152483246 127493550 1.20
tpch_q18/datafusion:parquet 173379378 163932760 1.06
tpch_q19/datafusion:parquet 🚀 64994895 78217127 0.83
tpch_q20/datafusion:parquet 🚨 74963078 67518823 1.11
tpch_q21/datafusion:parquet 140019041 129599674 1.08
tpch_q22/datafusion:parquet 32793805 31664866 1.04
datafusion / arrow (1.093x ➖, 0↑ 8↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 60189058 57881261 1.04
tpch_q02/datafusion:arrow 19926387 19444565 1.02
tpch_q03/datafusion:arrow 🚨 38247603 31057545 1.23
tpch_q04/datafusion:arrow 🚨 29440680 25955687 1.13
tpch_q05/datafusion:arrow 🚨 92977077 75021933 1.24
tpch_q06/datafusion:arrow 🚨 27536939 19842070 1.39
tpch_q07/datafusion:arrow 🚨 117127254 104675040 1.12
tpch_q08/datafusion:arrow 🚨 49286635 44630795 1.10
tpch_q09/datafusion:arrow 71185560 69573132 1.02
tpch_q10/datafusion:arrow 55262683 51018915 1.08
tpch_q11/datafusion:arrow 9530743 9457363 1.01
tpch_q12/datafusion:arrow 58413979 53651251 1.09
tpch_q13/datafusion:arrow 49469063 47517611 1.04
tpch_q14/datafusion:arrow 24075413 23312438 1.03
tpch_q15/datafusion:arrow 49243779 45472913 1.08
tpch_q16/datafusion:arrow 20796333 19590854 1.06
tpch_q17/datafusion:arrow 76006627 72364777 1.05
tpch_q18/datafusion:arrow 152539697 143593052 1.06
tpch_q19/datafusion:arrow 🚨 41056983 37019973 1.11
tpch_q20/datafusion:arrow 40478891 37344146 1.08
tpch_q21/datafusion:arrow 🚨 171031643 153013587 1.12
tpch_q22/datafusion:arrow 18046315 18174243 0.99
duckdb / vortex-file-compressed (1.139x ❌, 0↑ 9↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 32561494 31297720 1.04
tpch_q02/duckdb:vortex-file-compressed 🚨 39233853 25064330 1.57
tpch_q03/duckdb:vortex-file-compressed 34632901 31514612 1.10
tpch_q04/duckdb:vortex-file-compressed 34239183 31536580 1.09
tpch_q05/duckdb:vortex-file-compressed 35853857 34630216 1.04
tpch_q06/duckdb:vortex-file-compressed 10537928 10204011 1.03
tpch_q07/duckdb:vortex-file-compressed 41431875 38589678 1.07
tpch_q08/duckdb:vortex-file-compressed 40407116 40050716 1.01
tpch_q09/duckdb:vortex-file-compressed 🚨 85525554 76985253 1.11
tpch_q10/duckdb:vortex-file-compressed 🚨 53591417 36882904 1.45
tpch_q11/duckdb:vortex-file-compressed 15701853 15500832 1.01
tpch_q12/duckdb:vortex-file-compressed 23754818 22582813 1.05
tpch_q13/duckdb:vortex-file-compressed 🚨 40617288 35871993 1.13
tpch_q14/duckdb:vortex-file-compressed 🚨 25579822 21465540 1.19
tpch_q15/duckdb:vortex-file-compressed 17820066 16263852 1.10
tpch_q16/duckdb:vortex-file-compressed 30250040 27798635 1.09
tpch_q17/duckdb:vortex-file-compressed 🚨 27400475 24404338 1.12
tpch_q18/duckdb:vortex-file-compressed 54586727 49815480 1.10
tpch_q19/duckdb:vortex-file-compressed 31123490 29162059 1.07
tpch_q20/duckdb:vortex-file-compressed 🚨 37809854 34095776 1.11
tpch_q21/duckdb:vortex-file-compressed 🚨 119681136 106243396 1.13
tpch_q22/duckdb:vortex-file-compressed 🚨 30073787 17534403 1.72
duckdb / vortex-compact (1.061x ➖, 0↑ 4↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 39290495 38752585 1.01
tpch_q02/duckdb:vortex-compact 37006023 35535965 1.04
tpch_q03/duckdb:vortex-compact 35136628 32850516 1.07
tpch_q04/duckdb:vortex-compact 🚨 39856554 34178620 1.17
tpch_q05/duckdb:vortex-compact 39573897 39749632 1.00
tpch_q06/duckdb:vortex-compact 🚨 16063570 14107680 1.14
tpch_q07/duckdb:vortex-compact 45470593 42639278 1.07
tpch_q08/duckdb:vortex-compact 48266778 44628888 1.08
tpch_q09/duckdb:vortex-compact 90365554 87248060 1.04
tpch_q10/duckdb:vortex-compact 42637954 41501581 1.03
tpch_q11/duckdb:vortex-compact 🚨 21886079 19042057 1.15
tpch_q12/duckdb:vortex-compact 36704597 34965870 1.05
tpch_q13/duckdb:vortex-compact 47978637 44693856 1.07
tpch_q14/duckdb:vortex-compact 32164133 29688985 1.08
tpch_q15/duckdb:vortex-compact 20338058 19932925 1.02
tpch_q16/duckdb:vortex-compact 37438142 36068247 1.04
tpch_q17/duckdb:vortex-compact 33233174 31137500 1.07
tpch_q18/duckdb:vortex-compact 54400239 52256271 1.04
tpch_q19/duckdb:vortex-compact 38545773 36149736 1.07
tpch_q20/duckdb:vortex-compact 44768485 43142090 1.04
tpch_q21/duckdb:vortex-compact 🚨 129684832 117889036 1.10
tpch_q22/duckdb:vortex-compact 21144753 21083899 1.00
duckdb / parquet (1.041x ➖, 1↑ 4↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 🚨 105349556 78262420 1.35
tpch_q02/duckdb:parquet 41371815 39261245 1.05
tpch_q03/duckdb:parquet 72699978 71357564 1.02
tpch_q04/duckdb:parquet 49782184 49126859 1.01
tpch_q05/duckdb:parquet 67759755 67386835 1.01
tpch_q06/duckdb:parquet 🚨 24170521 20757588 1.16
tpch_q07/duckdb:parquet 72058088 70888166 1.02
tpch_q08/duckdb:parquet 🚀 88662553 99352126 0.89
tpch_q09/duckdb:parquet 🚨 163434309 148013462 1.10
tpch_q10/duckdb:parquet 132654348 128718059 1.03
tpch_q11/duckdb:parquet 22361000 21985608 1.02
tpch_q12/duckdb:parquet 47707716 46696472 1.02
tpch_q13/duckdb:parquet 278352515 273212644 1.02
tpch_q14/duckdb:parquet 50786910 49629116 1.02
tpch_q15/duckdb:parquet 30021872 28842932 1.04
tpch_q16/duckdb:parquet 58963828 58440015 1.01
tpch_q17/duckdb:parquet 54472797 53576805 1.02
tpch_q18/duckdb:parquet 115766087 112672637 1.03
tpch_q19/duckdb:parquet 🚨 78676007 71336348 1.10
tpch_q20/duckdb:parquet 65252773 67100714 0.97
tpch_q21/duckdb:parquet 183150967 166733380 1.10
tpch_q22/duckdb:parquet 53128391 53904268 0.99
duckdb / duckdb (1.047x ➖, 0↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 17009668 16336329 1.04
tpch_q02/duckdb:duckdb 13217246 13145182 1.01
tpch_q03/duckdb:duckdb 20096875 19077229 1.05
tpch_q04/duckdb:duckdb 20574005 19854704 1.04
tpch_q05/duckdb:duckdb 21170694 20696485 1.02
tpch_q06/duckdb:duckdb 5622537 5345991 1.05
tpch_q07/duckdb:duckdb 23068262 23326100 0.99
tpch_q08/duckdb:duckdb 22711715 21820523 1.04
tpch_q09/duckdb:duckdb 60585867 56669279 1.07
tpch_q10/duckdb:duckdb 46774845 43179299 1.08
tpch_q11/duckdb:duckdb 🚨 6720672 6084999 1.10
tpch_q12/duckdb:duckdb 14589392 14200073 1.03
tpch_q13/duckdb:duckdb 40108755 38769716 1.03
tpch_q14/duckdb:duckdb 20074007 18621044 1.08
tpch_q15/duckdb:duckdb 12818536 11959596 1.07
tpch_q16/duckdb:duckdb 25646421 23328039 1.10
tpch_q17/duckdb:duckdb 14725939 14218774 1.04
tpch_q18/duckdb:duckdb 40439278 39155120 1.03
tpch_q19/duckdb:duckdb 27717488 26347938 1.05
tpch_q20/duckdb:duckdb 23544189 23495912 1.00
tpch_q21/duckdb:duckdb 62627016 57759686 1.08
tpch_q22/duckdb:duckdb 25252640 24449846 1.03
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow +4.0% +35.6% -23.3% +21.0% ✅ faster
1 datafusion:vortex-compact +5.3% +35.6% -22.4% +20.1% ✅ faster
1 datafusion:vortex-file-compressed +12.7% +35.6% -16.9% +19.4% ✅ faster
1 duckdb:duckdb +4.1% +35.6% -23.2% +18.8% ✅ faster
1 duckdb:vortex-compact +1.4% +35.6% -25.2% +18.1% ✅ faster
1 duckdb:vortex-file-compressed +4.0% +35.6% -23.3% +21.0% ✅ faster
2 datafusion:arrow +2.5% +7.1% -4.3% +18.1% ➖ noise
2 datafusion:vortex-compact +6.5% +7.1% -0.5% +18.1% ➖ noise
2 datafusion:vortex-file-compressed +10.7% +7.1% +3.4% +18.1% ➖ noise
2 duckdb:duckdb +0.5% +7.1% -6.1% +18.1% ➖ noise
2 duckdb:vortex-compact +4.1% +7.1% -2.7% +18.1% ➖ noise
2 duckdb:vortex-file-compressed +56.5% +7.1% +46.2% +18.1% 🚨 regression
3 datafusion:arrow +23.2% +3.3% +19.2% +18.1% 🚨 regression
3 datafusion:vortex-compact -0.1% +3.3% -3.2% +18.1% ➖ noise
3 datafusion:vortex-file-compressed +14.1% +3.3% +10.5% +18.1% ➖ noise
3 duckdb:duckdb +5.3% +3.3% +2.0% +18.1% ➖ noise
3 duckdb:vortex-compact +7.0% +3.3% +3.6% +18.1% ➖ noise
3 duckdb:vortex-file-compressed +9.9% +3.3% +6.4% +18.1% ➖ noise
4 datafusion:arrow +13.4% +3.7% +9.4% +18.1% ➖ noise
4 datafusion:vortex-compact +10.1% +3.7% +6.2% +18.1% ➖ noise
4 datafusion:vortex-file-compressed +11.4% +3.7% +7.5% +18.1% ➖ noise
4 duckdb:duckdb +3.6% +3.7% -0.1% +18.1% ➖ noise
4 duckdb:vortex-compact +16.6% +3.7% +12.5% +18.1% ➖ noise
4 duckdb:vortex-file-compressed +8.6% +3.7% +4.7% +18.1% ➖ noise
5 datafusion:arrow +23.9% +4.8% +18.2% +18.1% 🚨 regression
5 datafusion:vortex-compact +7.3% +4.8% +2.4% +18.1% ➖ noise
5 datafusion:vortex-file-compressed +20.5% +4.8% +15.0% +18.1% ➖ noise
5 duckdb:duckdb +2.3% +4.8% -2.4% +18.1% ➖ noise
5 duckdb:vortex-compact -0.4% +4.8% -5.0% +18.1% ➖ noise
5 duckdb:vortex-file-compressed +3.5% +4.8% -1.2% +18.1% ➖ noise
6 datafusion:arrow +38.8% +8.9% +27.4% +21.5% 🚨 regression
6 datafusion:vortex-compact +9.8% +8.9% +0.8% +20.7% ➖ noise
6 datafusion:vortex-file-compressed +11.6% +8.9% +2.5% +18.1% ➖ noise
6 duckdb:duckdb +5.2% +8.9% -3.4% +18.1% ➖ noise
6 duckdb:vortex-compact +13.9% +8.9% +4.5% +19.4% ➖ noise
6 duckdb:vortex-file-compressed +3.3% +8.9% -5.2% +18.1% ➖ noise
7 datafusion:arrow +11.9% +5.3% +6.3% +18.1% ➖ noise
7 datafusion:vortex-compact +7.3% +5.3% +1.9% +18.1% ➖ noise
7 datafusion:vortex-file-compressed +16.9% +5.3% +11.0% +18.1% ➖ noise
7 duckdb:duckdb -1.1% +5.3% -6.0% +18.1% ➖ noise
7 duckdb:vortex-compact +6.6% +5.3% +1.3% +18.1% ➖ noise
7 duckdb:vortex-file-compressed +7.4% +5.3% +2.0% +18.1% ➖ noise
8 datafusion:arrow +10.4% -2.8% +13.7% +18.1% ➖ noise
8 datafusion:vortex-compact +2.0% -2.8% +5.0% +18.1% ➖ noise
8 datafusion:vortex-file-compressed +20.9% -2.8% +24.5% +18.1% 🚨 regression
8 duckdb:duckdb +4.1% -2.8% +7.1% +18.1% ➖ noise
8 duckdb:vortex-compact +8.2% -2.8% +11.3% +18.1% ➖ noise
8 duckdb:vortex-file-compressed +0.9% -2.8% +3.8% +18.1% ➖ noise
9 datafusion:arrow +2.3% +8.5% -5.7% +18.1% ➖ noise
9 datafusion:vortex-compact +4.6% +8.5% -3.6% +18.1% ➖ noise
9 datafusion:vortex-file-compressed +17.4% +8.5% +8.3% +18.1% ➖ noise
9 duckdb:duckdb +6.9% +8.5% -1.4% +18.1% ➖ noise
9 duckdb:vortex-compact +3.6% +8.5% -4.5% +18.1% ➖ noise
9 duckdb:vortex-file-compressed +11.1% +8.5% +2.4% +18.1% ➖ noise
10 datafusion:arrow +8.3% +5.1% +3.0% +18.1% ➖ noise
10 datafusion:vortex-compact +6.9% +5.1% +1.7% +18.1% ➖ noise
10 datafusion:vortex-file-compressed +28.6% +5.1% +22.3% +18.1% 🚨 regression
10 duckdb:duckdb +8.3% +5.1% +3.0% +18.1% ➖ noise
10 duckdb:vortex-compact +2.7% +5.1% -2.3% +18.1% ➖ noise
10 duckdb:vortex-file-compressed +45.3% +5.1% +38.2% +18.1% 🚨 regression
11 datafusion:arrow +0.8% +5.8% -4.7% +18.1% ➖ noise
11 datafusion:vortex-compact +2.3% +5.8% -3.3% +18.1% ➖ noise
11 datafusion:vortex-file-compressed +12.8% +5.8% +6.6% +18.1% ➖ noise
11 duckdb:duckdb +10.4% +5.8% +4.4% +18.1% ➖ noise
11 duckdb:vortex-compact +14.9% +5.8% +8.7% +18.1% ➖ noise
11 duckdb:vortex-file-compressed +1.3% +5.8% -4.2% +18.1% ➖ noise
12 datafusion:arrow +8.9% +8.0% +0.8% +21.9% ➖ noise
12 datafusion:vortex-compact +3.6% +8.0% -4.0% +18.1% ➖ noise
12 datafusion:vortex-file-compressed +8.6% +8.0% +0.5% +18.1% ➖ noise
12 duckdb:duckdb +2.7% +8.0% -4.9% +18.1% ➖ noise
12 duckdb:vortex-compact +5.0% +8.0% -2.8% +18.1% ➖ noise
12 duckdb:vortex-file-compressed +5.2% +8.0% -2.6% +18.1% ➖ noise
13 datafusion:arrow +4.1% +4.5% -0.4% +18.1% ➖ noise
13 datafusion:vortex-compact +3.8% +4.5% -0.7% +18.1% ➖ noise
13 datafusion:vortex-file-compressed +10.7% +4.5% +5.9% +18.1% ➖ noise
13 duckdb:duckdb +3.5% +4.5% -1.0% +18.1% ➖ noise
13 duckdb:vortex-compact +7.3% +4.5% +2.8% +18.1% ➖ noise
13 duckdb:vortex-file-compressed +13.2% +4.5% +8.4% +18.1% ➖ noise
14 datafusion:arrow +3.3% +4.1% -0.8% +18.1% ➖ noise
14 datafusion:vortex-compact +5.1% +4.1% +0.9% +18.1% ➖ noise
14 datafusion:vortex-file-compressed +13.0% +4.1% +8.5% +18.1% ➖ noise
14 duckdb:duckdb +7.8% +4.1% +3.6% +18.1% ➖ noise
14 duckdb:vortex-compact +8.3% +4.1% +4.1% +18.1% ➖ noise
14 duckdb:vortex-file-compressed +19.2% +4.1% +14.5% +18.1% ➖ noise
15 datafusion:arrow +8.3% +4.6% +3.5% +18.1% ➖ noise
15 datafusion:vortex-compact +3.3% +4.6% -1.3% +18.1% ➖ noise
15 datafusion:vortex-file-compressed +9.3% +4.6% +4.4% +18.1% ➖ noise
15 duckdb:duckdb +7.2% +4.6% +2.4% +21.8% ➖ noise
15 duckdb:vortex-compact +2.0% +4.6% -2.5% +18.1% ➖ noise
15 duckdb:vortex-file-compressed +9.6% +4.6% +4.7% +18.1% ➖ noise
16 datafusion:arrow +6.2% +5.9% +0.3% +18.1% ➖ noise
16 datafusion:vortex-compact +13.7% +5.9% +7.4% +18.1% ➖ noise
16 datafusion:vortex-file-compressed +7.3% +5.9% +1.3% +18.1% ➖ noise
16 duckdb:duckdb +9.9% +5.9% +3.8% +18.1% ➖ noise
16 duckdb:vortex-compact +3.8% +5.9% -2.0% +18.1% ➖ noise
16 duckdb:vortex-file-compressed +8.8% +5.9% +2.8% +18.1% ➖ noise
17 datafusion:arrow +5.0% +10.3% -4.8% +18.1% ➖ noise
17 datafusion:vortex-compact +10.2% +10.3% -0.1% +18.1% ➖ noise
17 datafusion:vortex-file-compressed +16.7% +10.3% +5.8% +18.1% ➖ noise
17 duckdb:duckdb +3.6% +10.3% -6.1% +18.1% ➖ noise
17 duckdb:vortex-compact +6.7% +10.3% -3.2% +18.1% ➖ noise
17 duckdb:vortex-file-compressed +12.3% +10.3% +1.8% +18.1% ➖ noise
18 datafusion:arrow +6.2% +4.2% +1.9% +18.1% ➖ noise
18 datafusion:vortex-compact +10.8% +4.2% +6.3% +18.1% ➖ noise
18 datafusion:vortex-file-compressed +14.6% +4.2% +9.9% +18.1% ➖ noise
18 duckdb:duckdb +3.3% +4.2% -0.9% +18.1% ➖ noise
18 duckdb:vortex-compact +4.1% +4.2% -0.1% +18.1% ➖ noise
18 duckdb:vortex-file-compressed +9.6% +4.2% +5.1% +18.1% ➖ noise
19 datafusion:arrow +10.9% -4.3% +15.9% +18.1% ➖ noise
19 datafusion:vortex-compact +6.7% -4.3% +11.4% +18.1% ➖ noise
19 datafusion:vortex-file-compressed +12.2% -4.3% +17.2% +18.1% ➖ noise
19 duckdb:duckdb +5.2% -4.3% +9.9% +18.1% ➖ noise
19 duckdb:vortex-compact +6.6% -4.3% +11.4% +18.1% ➖ noise
19 duckdb:vortex-file-compressed +6.7% -4.3% +11.5% +18.1% ➖ noise
20 datafusion:arrow +8.4% +3.9% +4.3% +18.1% ➖ noise
20 datafusion:vortex-compact +5.0% +3.9% +1.0% +18.1% ➖ noise
20 datafusion:vortex-file-compressed +9.9% +3.9% +5.7% +18.1% ➖ noise
20 duckdb:duckdb +0.2% +3.9% -3.6% +18.1% ➖ noise
20 duckdb:vortex-compact +3.8% +3.9% -0.1% +18.1% ➖ noise
20 duckdb:vortex-file-compressed +10.9% +3.9% +6.7% +18.1% ➖ noise
21 datafusion:arrow +11.8% +8.9% +2.6% +18.1% ➖ noise
21 datafusion:vortex-compact +3.9% +8.9% -4.7% +18.1% ➖ noise
21 datafusion:vortex-file-compressed +8.8% +8.9% -0.1% +18.1% ➖ noise
21 duckdb:duckdb +8.4% +8.9% -0.5% +18.1% ➖ noise
21 duckdb:vortex-compact +10.0% +8.9% +1.0% +18.1% ➖ noise
21 duckdb:vortex-file-compressed +12.6% +8.9% +3.4% +18.1% ➖ noise
22 datafusion:arrow -0.7% +1.0% -1.7% +18.1% ➖ noise
22 datafusion:vortex-compact +6.4% +1.0% +5.3% +18.1% ➖ noise
22 datafusion:vortex-file-compressed +76.2% +1.0% +74.4% +18.1% 🚨 regression
22 duckdb:duckdb +3.3% +1.0% +2.2% +18.1% ➖ noise
22 duckdb:vortex-compact +0.3% +1.0% -0.7% +18.1% ➖ noise
22 duckdb:vortex-file-compressed +71.5% +1.0% +69.8% +18.1% 🚨 regression

@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: +2.0%
Vortex (geomean): 0.999x ➖
Parquet (geomean): 0.979x ➖
Shifts: Parquet (control) -2.1% · Median polish -1.0%


datafusion / vortex-file-compressed (0.989x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 250525955 278436322 0.90
tpch_q02/datafusion:vortex-file-compressed 464286996 439342368 1.06
tpch_q03/datafusion:vortex-file-compressed 452806405 442784987 1.02
tpch_q04/datafusion:vortex-file-compressed 265632550 267400615 0.99
tpch_q05/datafusion:vortex-file-compressed 388555404 436586265 0.89
tpch_q06/datafusion:vortex-file-compressed 359268374 315433546 1.14
tpch_q07/datafusion:vortex-file-compressed 432888005 427641840 1.01
tpch_q08/datafusion:vortex-file-compressed 564077961 586136908 0.96
tpch_q09/datafusion:vortex-file-compressed 406838584 460696943 0.88
tpch_q10/datafusion:vortex-file-compressed 465064322 439455970 1.06
tpch_q11/datafusion:vortex-file-compressed 260311898 255780084 1.02
tpch_q12/datafusion:vortex-file-compressed 401475573 459293251 0.87
tpch_q13/datafusion:vortex-file-compressed 172385552 182514901 0.94
tpch_q14/datafusion:vortex-file-compressed 282957232 262563002 1.08
tpch_q15/datafusion:vortex-file-compressed 526846572 463528331 1.14
tpch_q16/datafusion:vortex-file-compressed 186284418 182596135 1.02
tpch_q17/datafusion:vortex-file-compressed 426639388 337607869 1.26
tpch_q18/datafusion:vortex-file-compressed 328941589 299730652 1.10
tpch_q19/datafusion:vortex-file-compressed 452533857 484156207 0.93
tpch_q20/datafusion:vortex-file-compressed 427508472 470900931 0.91
tpch_q21/datafusion:vortex-file-compressed 539339670 603160570 0.89
tpch_q22/datafusion:vortex-file-compressed 116349991 146331143 0.80
datafusion / vortex-compact (1.038x ➖, 0↑ 2↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 266360960 249743407 1.07
tpch_q02/datafusion:vortex-compact 436602537 398656342 1.10
tpch_q03/datafusion:vortex-compact 399691861 361937440 1.10
tpch_q04/datafusion:vortex-compact 252302638 220961667 1.14
tpch_q05/datafusion:vortex-compact 393166275 355965828 1.10
tpch_q06/datafusion:vortex-compact 313806043 307988549 1.02
tpch_q07/datafusion:vortex-compact 344920585 413674412 0.83
tpch_q08/datafusion:vortex-compact 485355381 497646709 0.98
tpch_q09/datafusion:vortex-compact 374709631 387252739 0.97
tpch_q10/datafusion:vortex-compact 409749239 433537303 0.95
tpch_q11/datafusion:vortex-compact 266313422 285456366 0.93
tpch_q12/datafusion:vortex-compact 482458305 397172705 1.21
tpch_q13/datafusion:vortex-compact 126690306 165447349 0.77
tpch_q14/datafusion:vortex-compact 254382456 252121536 1.01
tpch_q15/datafusion:vortex-compact 469321189 448452808 1.05
tpch_q16/datafusion:vortex-compact 177670119 245478137 0.72
tpch_q17/datafusion:vortex-compact 🚨 508956388 354241432 1.44
tpch_q18/datafusion:vortex-compact 🚨 433300683 258498330 1.68
tpch_q19/datafusion:vortex-compact 546993653 446104365 1.23
tpch_q20/datafusion:vortex-compact 455371601 456337537 1.00
tpch_q21/datafusion:vortex-compact 564072604 512740011 1.10
tpch_q22/datafusion:vortex-compact 123952315 143956962 0.86
datafusion / parquet (0.969x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 220668473 264295620 0.83
tpch_q02/datafusion:parquet 429480775 422270040 1.02
tpch_q03/datafusion:parquet 296478128 332126958 0.89
tpch_q04/datafusion:parquet 156239014 205924350 0.76
tpch_q05/datafusion:parquet 431473090 486504981 0.89
tpch_q06/datafusion:parquet 138951371 133496082 1.04
tpch_q07/datafusion:parquet 469711971 475686808 0.99
tpch_q08/datafusion:parquet 599543114 551642068 1.09
tpch_q09/datafusion:parquet 445332885 512615663 0.87
tpch_q10/datafusion:parquet 495530152 534248762 0.93
tpch_q11/datafusion:parquet 317439233 319865172 0.99
tpch_q12/datafusion:parquet 218597950 231962442 0.94
tpch_q13/datafusion:parquet 434519318 453490160 0.96
tpch_q14/datafusion:parquet 179133065 181727129 0.99
tpch_q15/datafusion:parquet 293392853 302029289 0.97
tpch_q16/datafusion:parquet 167808021 181514505 0.92
tpch_q17/datafusion:parquet 383752008 425911093 0.90
tpch_q18/datafusion:parquet 499019940 462442753 1.08
tpch_q19/datafusion:parquet 324896147 299706888 1.08
tpch_q20/datafusion:parquet 362607239 312800321 1.16
tpch_q21/datafusion:parquet 508808142 484779948 1.05
tpch_q22/datafusion:parquet 112794295 105564758 1.07
duckdb / vortex-file-compressed (0.974x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 256221711 262999170 0.97
tpch_q02/duckdb:vortex-file-compressed 962114470 976054909 0.99
tpch_q03/duckdb:vortex-file-compressed 636424909 628280566 1.01
tpch_q04/duckdb:vortex-file-compressed 367558773 355680270 1.03
tpch_q05/duckdb:vortex-file-compressed 890607156 957134907 0.93
tpch_q06/duckdb:vortex-file-compressed 429742801 431604986 1.00
tpch_q07/duckdb:vortex-file-compressed 785607869 820085130 0.96
tpch_q08/duckdb:vortex-file-compressed 994554090 1006732996 0.99
tpch_q09/duckdb:vortex-file-compressed 839031701 910420436 0.92
tpch_q10/duckdb:vortex-file-compressed 762450408 719079598 1.06
tpch_q11/duckdb:vortex-file-compressed 510806992 503986303 1.01
tpch_q12/duckdb:vortex-file-compressed 476482005 496018488 0.96
tpch_q13/duckdb:vortex-file-compressed 497506773 467362216 1.06
tpch_q14/duckdb:vortex-file-compressed 426429898 471382958 0.90
tpch_q15/duckdb:vortex-file-compressed 275281616 281293493 0.98
tpch_q16/duckdb:vortex-file-compressed 383938030 356574267 1.08
tpch_q17/duckdb:vortex-file-compressed 668994274 724040783 0.92
tpch_q18/duckdb:vortex-file-compressed 492937670 596078187 0.83
tpch_q19/duckdb:vortex-file-compressed 457523457 489240107 0.94
tpch_q20/duckdb:vortex-file-compressed 773924325 815356622 0.95
tpch_q21/duckdb:vortex-file-compressed 1044583116 1123264737 0.93
tpch_q22/duckdb:vortex-file-compressed 388330736 371317560 1.05
duckdb / vortex-compact (0.996x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 312596155 270046918 1.16
tpch_q02/duckdb:vortex-compact 916644522 939708970 0.98
tpch_q03/duckdb:vortex-compact 549760002 568142340 0.97
tpch_q04/duckdb:vortex-compact 345134338 356019300 0.97
tpch_q05/duckdb:vortex-compact 874894770 816560584 1.07
tpch_q06/duckdb:vortex-compact 431457508 372354022 1.16
tpch_q07/duckdb:vortex-compact 756282600 811960900 0.93
tpch_q08/duckdb:vortex-compact 903656148 897663632 1.01
tpch_q09/duckdb:vortex-compact 854429226 893247952 0.96
tpch_q10/duckdb:vortex-compact 696203763 677710192 1.03
tpch_q11/duckdb:vortex-compact 496938740 513769907 0.97
tpch_q12/duckdb:vortex-compact 495956473 450772177 1.10
tpch_q13/duckdb:vortex-compact 438030307 426138566 1.03
tpch_q14/duckdb:vortex-compact 450065762 464277076 0.97
tpch_q15/duckdb:vortex-compact 258520769 298552427 0.87
tpch_q16/duckdb:vortex-compact 364036394 355072658 1.03
tpch_q17/duckdb:vortex-compact 635037333 690412794 0.92
tpch_q18/duckdb:vortex-compact 473932653 475198011 1.00
tpch_q19/duckdb:vortex-compact 408139397 393612446 1.04
tpch_q20/duckdb:vortex-compact 760945862 813803150 0.94
tpch_q21/duckdb:vortex-compact 1044298035 1054991387 0.99
tpch_q22/duckdb:vortex-compact 332378427 367706989 0.90
duckdb / parquet (0.990x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 410336063 443370002 0.93
tpch_q02/duckdb:parquet 1090230164 1118107778 0.98
tpch_q03/duckdb:parquet 1055313819 984115102 1.07
tpch_q04/duckdb:parquet 631315151 612665044 1.03
tpch_q05/duckdb:parquet 1262316018 1142266941 1.11
tpch_q06/duckdb:parquet 442408524 442159480 1.00
tpch_q07/duckdb:parquet 1098221877 1146005918 0.96
tpch_q08/duckdb:parquet 1482922304 1434415637 1.03
tpch_q09/duckdb:parquet 1355456227 1344710192 1.01
tpch_q10/duckdb:parquet 1211330606 1217043419 1.00
tpch_q11/duckdb:parquet 707731294 733669750 0.96
tpch_q12/duckdb:parquet 639269717 632279942 1.01
tpch_q13/duckdb:parquet 928022129 876206941 1.06
tpch_q14/duckdb:parquet 674235634 686712489 0.98
tpch_q15/duckdb:parquet 509974392 590534685 0.86
tpch_q16/duckdb:parquet 649368722 657739526 0.99
tpch_q17/duckdb:parquet 743645033 741751952 1.00
tpch_q18/duckdb:parquet 825571413 820390237 1.01
tpch_q19/duckdb:parquet 723149694 725067452 1.00
tpch_q20/duckdb:parquet 1071670370 1092126958 0.98
tpch_q21/duckdb:parquet 1036862208 1083782968 0.96
tpch_q22/duckdb:parquet 526816299 586302784 0.90
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +6.7% -12.1% +21.3% +67.2% ➖ noise
1 datafusion:vortex-file-compressed -10.0% -12.1% +2.4% +83.5% ➖ noise
1 duckdb:vortex-compact +15.8% -12.1% +31.7% +31.9% ➖ noise
1 duckdb:vortex-file-compressed -2.6% -12.1% +10.8% +30.0% ➖ noise
2 datafusion:vortex-compact +9.5% -0.4% +10.0% +30.0% ➖ noise
2 datafusion:vortex-file-compressed +5.7% -0.4% +6.1% +30.0% ➖ noise
2 duckdb:vortex-compact -2.5% -0.4% -2.0% +30.0% ➖ noise
2 duckdb:vortex-file-compressed -1.4% -0.4% -1.0% +30.0% ➖ noise
3 datafusion:vortex-compact +10.4% -2.2% +12.9% +32.8% ➖ noise
3 datafusion:vortex-file-compressed +2.3% -2.2% +4.5% +50.4% ➖ noise
3 duckdb:vortex-compact -3.2% -2.2% -1.1% +30.0% ➖ noise
3 duckdb:vortex-file-compressed +1.3% -2.2% +3.5% +30.0% ➖ noise
4 datafusion:vortex-compact +14.2% -11.6% +29.1% +33.1% ➖ noise
4 datafusion:vortex-file-compressed -0.7% -11.6% +12.3% +35.4% ➖ noise
4 duckdb:vortex-compact -3.1% -11.6% +9.6% +30.0% ➖ noise
4 duckdb:vortex-file-compressed +3.3% -11.6% +16.9% +33.4% ➖ noise
5 datafusion:vortex-compact +10.5% -1.0% +11.6% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -11.0% -1.0% -10.1% +30.0% ➖ noise
5 duckdb:vortex-compact +7.1% -1.0% +8.2% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -7.0% -1.0% -6.0% +30.0% ➖ noise
6 datafusion:vortex-compact +1.9% +2.1% -0.2% +30.0% ➖ noise
6 datafusion:vortex-file-compressed +13.9% +2.1% +11.6% +30.0% ➖ noise
6 duckdb:vortex-compact +15.9% +2.1% +13.5% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -0.4% +2.1% -2.4% +32.1% ➖ noise
7 datafusion:vortex-compact -16.6% -2.7% -14.3% +30.0% ➖ noise
7 datafusion:vortex-file-compressed +1.2% -2.7% +4.1% +30.0% ➖ noise
7 duckdb:vortex-compact -6.9% -2.7% -4.2% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -4.2% -2.7% -1.5% +30.0% ➖ noise
8 datafusion:vortex-compact -2.5% +6.0% -8.0% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -3.8% +6.0% -9.2% +30.0% ➖ noise
8 duckdb:vortex-compact +0.7% +6.0% -5.0% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -1.2% +6.0% -6.8% +30.0% ➖ noise
9 datafusion:vortex-compact -3.2% -6.4% +3.4% +30.0% ➖ noise
9 datafusion:vortex-file-compressed -11.7% -6.4% -5.6% +30.0% ➖ noise
9 duckdb:vortex-compact -4.3% -6.4% +2.2% +30.0% ➖ noise
9 duckdb:vortex-file-compressed -7.8% -6.4% -1.5% +30.0% ➖ noise
10 datafusion:vortex-compact -5.5% -3.9% -1.6% +30.0% ➖ noise
10 datafusion:vortex-file-compressed +5.8% -3.9% +10.1% +30.0% ➖ noise
10 duckdb:vortex-compact +2.7% -3.9% +6.9% +30.0% ➖ noise
10 duckdb:vortex-file-compressed +6.0% -3.9% +10.4% +30.0% ➖ noise
11 datafusion:vortex-compact -6.7% -2.2% -4.6% +30.0% ➖ noise
11 datafusion:vortex-file-compressed +1.8% -2.2% +4.0% +30.0% ➖ noise
11 duckdb:vortex-compact -3.3% -2.2% -1.1% +30.0% ➖ noise
11 duckdb:vortex-file-compressed +1.4% -2.2% +3.6% +30.0% ➖ noise
12 datafusion:vortex-compact +21.5% -2.4% +24.4% +37.8% ➖ noise
12 datafusion:vortex-file-compressed -12.6% -2.4% -10.4% +30.0% ➖ noise
12 duckdb:vortex-compact +10.0% -2.4% +12.7% +30.0% ➖ noise
12 duckdb:vortex-file-compressed -3.9% -2.4% -1.6% +30.0% ➖ noise
13 datafusion:vortex-compact -23.4% +0.7% -24.0% +55.1% ➖ noise
13 datafusion:vortex-file-compressed -5.5% +0.7% -6.2% +50.6% ➖ noise
13 duckdb:vortex-compact +2.8% +0.7% +2.0% +30.0% ➖ noise
13 duckdb:vortex-file-compressed +6.4% +0.7% +5.7% +30.0% ➖ noise
14 datafusion:vortex-compact +0.9% -1.6% +2.6% +37.2% ➖ noise
14 datafusion:vortex-file-compressed +7.8% -1.6% +9.5% +30.0% ➖ noise
14 duckdb:vortex-compact -3.1% -1.6% -1.5% +30.0% ➖ noise
14 duckdb:vortex-file-compressed -9.5% -1.6% -8.0% +30.0% ➖ noise
15 datafusion:vortex-compact +4.7% -8.4% +14.3% +30.0% ➖ noise
15 datafusion:vortex-file-compressed +13.7% -8.4% +24.1% +30.0% ➖ noise
15 duckdb:vortex-compact -13.4% -8.4% -5.5% +30.0% ➖ noise
15 duckdb:vortex-file-compressed -2.1% -8.4% +6.8% +30.0% ➖ noise
16 datafusion:vortex-compact -27.6% -4.5% -24.2% +30.0% ✅ faster
16 datafusion:vortex-file-compressed +2.0% -4.5% +6.8% +30.0% ➖ noise
16 duckdb:vortex-compact +2.5% -4.5% +7.3% +30.0% ➖ noise
16 duckdb:vortex-file-compressed +7.7% -4.5% +12.7% +30.0% ➖ noise
17 datafusion:vortex-compact +43.7% -5.0% +51.2% +30.0% 🚨 regression
17 datafusion:vortex-file-compressed +26.4% -5.0% +33.0% +30.0% 🚨 regression
17 duckdb:vortex-compact -8.0% -5.0% -3.2% +30.0% ➖ noise
17 duckdb:vortex-file-compressed -7.6% -5.0% -2.8% +30.0% ➖ noise
18 datafusion:vortex-compact +67.6% +4.2% +60.9% +30.0% 🚨 regression
18 datafusion:vortex-file-compressed +9.7% +4.2% +5.3% +53.1% ➖ noise
18 duckdb:vortex-compact -0.3% +4.2% -4.3% +30.0% ➖ noise
18 duckdb:vortex-file-compressed -17.3% +4.2% -20.6% +30.0% ➖ noise
19 datafusion:vortex-compact +22.6% +4.0% +17.9% +30.0% ➖ noise
19 datafusion:vortex-file-compressed -6.5% +4.0% -10.1% +30.0% ➖ noise
19 duckdb:vortex-compact +3.7% +4.0% -0.3% +30.0% ➖ noise
19 duckdb:vortex-file-compressed -6.5% +4.0% -10.1% +30.0% ➖ noise
20 datafusion:vortex-compact -0.2% +6.7% -6.4% +30.0% ➖ noise
20 datafusion:vortex-file-compressed -9.2% +6.7% -14.9% +30.0% ➖ noise
20 duckdb:vortex-compact -6.5% +6.7% -12.3% +30.0% ➖ noise
20 duckdb:vortex-file-compressed -5.1% +6.7% -11.0% +30.0% ➖ noise
21 datafusion:vortex-compact +10.0% +0.2% +9.8% +30.0% ➖ noise
21 datafusion:vortex-file-compressed -10.6% +0.2% -10.8% +30.0% ➖ noise
21 duckdb:vortex-compact -1.0% +0.2% -1.2% +30.0% ➖ noise
21 duckdb:vortex-file-compressed -7.0% +0.2% -7.2% +30.0% ➖ noise
22 datafusion:vortex-compact -13.9% -2.0% -12.1% +30.0% ➖ noise
22 datafusion:vortex-file-compressed -20.5% -2.0% -18.9% +43.3% ➖ noise
22 duckdb:vortex-compact -9.6% -2.0% -7.7% +30.0% ➖ noise
22 duckdb:vortex-file-compressed +4.6% -2.0% +6.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 (environment too noisy confidence)
Attributed Vortex impact: +9.7%
Vortex (geomean): 1.099x ➖
Parquet (geomean): 1.002x ➖
Shifts: Parquet (control) +0.2% · Median polish +1.8%


datafusion / vortex-file-compressed (1.146x ➖, 0↑ 4↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 🚨 51225314 35324943 1.45
fineweb_q01/datafusion:vortex-file-compressed 🚨 963008941 638817689 1.51
fineweb_q02/datafusion:vortex-file-compressed 🚨 869804843 487193797 1.79
fineweb_q03/datafusion:vortex-file-compressed 1242481659 1388855878 0.89
fineweb_q04/datafusion:vortex-file-compressed 🚨 2109895333 1363745271 1.55
fineweb_q05/datafusion:vortex-file-compressed 1340686075 1364080525 0.98
fineweb_q06/datafusion:vortex-file-compressed 1268633055 1557741489 0.81
fineweb_q07/datafusion:vortex-file-compressed 1153553545 1318512320 0.87
fineweb_q08/datafusion:vortex-file-compressed 451655446 500036267 0.90
datafusion / vortex-compact (1.063x ➖, 0↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 🚨 52433389 37845516 1.39
fineweb_q01/datafusion:vortex-compact 583950732 562429619 1.04
fineweb_q02/datafusion:vortex-compact 554790342 587356013 0.94
fineweb_q03/datafusion:vortex-compact 1368510168 1319717153 1.04
fineweb_q04/datafusion:vortex-compact 1543616452 1525458593 1.01
fineweb_q05/datafusion:vortex-compact 1357717717 1355639271 1.00
fineweb_q06/datafusion:vortex-compact 1333900094 1268979389 1.05
fineweb_q07/datafusion:vortex-compact 1133414301 1100781017 1.03
fineweb_q08/datafusion:vortex-compact 408001672 362662825 1.13
datafusion / parquet (1.019x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 1266311110 1037999623 1.22
fineweb_q01/datafusion:parquet 1912869106 1834962339 1.04
fineweb_q02/datafusion:parquet 1721284585 1745396710 0.99
fineweb_q03/datafusion:parquet 1819761011 1713005358 1.06
fineweb_q04/datafusion:parquet 1764053024 1748614275 1.01
fineweb_q05/datafusion:parquet 1843050449 1842782175 1.00
fineweb_q06/datafusion:parquet 1694487070 1824987256 0.93
fineweb_q07/datafusion:parquet 1833178173 1809480611 1.01
fineweb_q08/datafusion:parquet 1777465826 1899429403 0.94
duckdb / vortex-file-compressed (1.169x ➖, 0↑ 3↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 82492925 78391782 1.05
fineweb_q01/duckdb:vortex-file-compressed 🚨 838098977 591673606 1.42
fineweb_q02/duckdb:vortex-file-compressed 🚨 923515913 458612376 2.01
fineweb_q03/duckdb:vortex-file-compressed 1703367709 1518240612 1.12
fineweb_q04/duckdb:vortex-file-compressed 🚨 2361760859 1607883753 1.47
fineweb_q05/duckdb:vortex-file-compressed 1692495252 1484017777 1.14
fineweb_q06/duckdb:vortex-file-compressed 1574379548 1641205109 0.96
fineweb_q07/duckdb:vortex-file-compressed 1402343410 1449626093 0.97
fineweb_q08/duckdb:vortex-file-compressed 546893393 702475641 0.78
duckdb / vortex-compact (1.024x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 85697262 79382246 1.08
fineweb_q01/duckdb:vortex-compact 545500241 532588029 1.02
fineweb_q02/duckdb:vortex-compact 566836818 588597229 0.96
fineweb_q03/duckdb:vortex-compact 1721020651 1633575416 1.05
fineweb_q04/duckdb:vortex-compact 1783719122 1704170762 1.05
fineweb_q05/duckdb:vortex-compact 1533733733 1475896854 1.04
fineweb_q06/duckdb:vortex-compact 1499085461 1587668747 0.94
fineweb_q07/duckdb:vortex-compact 1407477727 1395290109 1.01
fineweb_q08/duckdb:vortex-compact 478034433 449138387 1.06
duckdb / parquet (0.986x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 1156486307 1126631879 1.03
fineweb_q01/duckdb:parquet 1400194098 1325675237 1.06
fineweb_q02/duckdb:parquet 1340772299 1303156171 1.03
fineweb_q03/duckdb:parquet 3515383316 3592713315 0.98
fineweb_q04/duckdb:parquet 1852165695 2041870168 0.91
fineweb_q05/duckdb:parquet 2087969750 2125802839 0.98
fineweb_q06/duckdb:parquet 4290335619 4188417082 1.02
fineweb_q07/duckdb:parquet 2535822048 2748580561 0.92
fineweb_q08/duckdb:parquet 1058591388 1108509886 0.95
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact +38.5% +11.9% +23.8% +131.6% ➖ noise
0 datafusion:vortex-file-compressed +45.0% +11.9% +29.6% +137.2% ➖ noise
0 duckdb:vortex-compact +8.0% +11.9% -3.5% +86.0% ➖ noise
0 duckdb:vortex-file-compressed +5.2% +11.9% -6.0% +38.2% ➖ noise
1 datafusion:vortex-compact +3.8% +4.9% -1.1% +45.5% ➖ noise
1 datafusion:vortex-file-compressed +50.7% +4.9% +43.7% +45.8% ➖ noise
1 duckdb:vortex-compact +2.4% +4.9% -2.4% +30.0% ➖ noise
1 duckdb:vortex-file-compressed +41.6% +4.9% +35.0% +30.0% 🚨 regression
2 datafusion:vortex-compact -5.5% +0.7% -6.2% +47.4% ➖ noise
2 datafusion:vortex-file-compressed +78.5% +0.7% +77.2% +30.0% 🚨 regression
2 duckdb:vortex-compact -3.7% +0.7% -4.4% +30.0% ➖ noise
2 duckdb:vortex-file-compressed +101.4% +0.7% +99.9% +30.0% 🚨 regression
3 datafusion:vortex-compact +3.7% +2.0% +1.7% +30.0% ➖ noise
3 datafusion:vortex-file-compressed -10.5% +2.0% -12.3% +40.8% ➖ noise
3 duckdb:vortex-compact +5.4% +2.0% +3.3% +30.0% ➖ noise
3 duckdb:vortex-file-compressed +12.2% +2.0% +10.0% +30.0% ➖ noise
4 datafusion:vortex-compact +1.2% -4.3% +5.8% +30.0% ➖ noise
4 datafusion:vortex-file-compressed +54.7% -4.3% +61.7% +30.0% 🚨 regression
4 duckdb:vortex-compact +4.7% -4.3% +9.4% +30.0% ➖ noise
4 duckdb:vortex-file-compressed +46.9% -4.3% +53.5% +30.0% 🚨 regression
5 datafusion:vortex-compact +0.2% -0.9% +1.0% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -1.7% -0.9% -0.8% +30.0% ➖ noise
5 duckdb:vortex-compact +3.9% -0.9% +4.8% +30.0% ➖ noise
5 duckdb:vortex-file-compressed +14.0% -0.9% +15.1% +30.0% ➖ noise
6 datafusion:vortex-compact +5.1% -2.5% +7.8% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -18.6% -2.5% -16.5% +30.0% ➖ noise
6 duckdb:vortex-compact -5.6% -2.5% -3.2% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -4.1% -2.5% -1.6% +30.0% ➖ noise
7 datafusion:vortex-compact +3.0% -3.3% +6.5% +30.0% ➖ noise
7 datafusion:vortex-file-compressed -12.5% -3.3% -9.5% +30.0% ➖ noise
7 duckdb:vortex-compact +0.9% -3.3% +4.3% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -3.3% -3.3% +0.1% +30.0% ➖ noise
8 datafusion:vortex-compact +12.5% -5.5% +19.0% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -9.7% -5.5% -4.5% +30.0% ➖ noise
8 duckdb:vortex-compact +6.4% -5.5% +12.6% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -22.1% -5.5% -17.6% +30.0% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: FineWeb NVMe

Verdict: Likely regression (low confidence)
Attributed Vortex impact: +105.8%
Vortex (geomean): 2.043x ❌
Parquet (geomean): 0.992x ➖
Shifts: Parquet (control) -0.8% · Median polish +0.1%


datafusion / vortex-file-compressed (4.075x ❌, 1↑ 7↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-file-compressed 4908125 5229131 0.94
fineweb_q01/datafusion:vortex-file-compressed 🚨 308139176 20068854 15.35
fineweb_q02/datafusion:vortex-file-compressed 🚨 437626999 23599114 18.54
fineweb_q03/datafusion:vortex-file-compressed 🚨 387301055 83116648 4.66
fineweb_q04/datafusion:vortex-file-compressed 🚨 1307494631 221109391 5.91
fineweb_q05/datafusion:vortex-file-compressed 🚨 776344618 214412376 3.62
fineweb_q06/datafusion:vortex-file-compressed 🚨 197412511 55453355 3.56
fineweb_q07/datafusion:vortex-file-compressed 🚨 214225365 56447747 3.80
fineweb_q08/datafusion:vortex-file-compressed 🚀 18999749 22069564 0.86
datafusion / vortex-compact (1.014x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:vortex-compact 5703407 5266142 1.08
fineweb_q01/datafusion:vortex-compact 94340706 89875651 1.05
fineweb_q02/datafusion:vortex-compact 111972816 102931758 1.09
fineweb_q03/datafusion:vortex-compact 856623610 880609223 0.97
fineweb_q04/datafusion:vortex-compact 915047433 904076900 1.01
fineweb_q05/datafusion:vortex-compact 816625502 819001696 1.00
fineweb_q06/datafusion:vortex-compact 453279398 461373613 0.98
fineweb_q07/datafusion:vortex-compact 463447790 471979770 0.98
fineweb_q08/datafusion:vortex-compact 18359817 19043257 0.96
datafusion / parquet (0.990x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/datafusion:parquet 6709006 6541645 1.03
fineweb_q01/datafusion:parquet 286281491 290876767 0.98
fineweb_q02/datafusion:parquet 285403566 295503104 0.97
fineweb_q03/datafusion:parquet 291774403 284229810 1.03
fineweb_q04/datafusion:parquet 299752343 305162155 0.98
fineweb_q05/datafusion:parquet 297392761 294545423 1.01
fineweb_q06/datafusion:parquet 284682434 299229956 0.95
fineweb_q07/datafusion:parquet 278943875 285169339 0.98
fineweb_q08/datafusion:parquet 279842340 282002585 0.99
duckdb / vortex-file-compressed (4.180x ❌, 0↑ 7↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-file-compressed 3105637 3237639 0.96
fineweb_q01/duckdb:vortex-file-compressed 🚨 296843977 21735267 13.66
fineweb_q02/duckdb:vortex-file-compressed 🚨 450140190 25114213 17.92
fineweb_q03/duckdb:vortex-file-compressed 🚨 629989371 117335828 5.37
fineweb_q04/duckdb:vortex-file-compressed 🚨 1347370395 222231716 6.06
fineweb_q05/duckdb:vortex-file-compressed 🚨 761978786 209313305 3.64
fineweb_q06/duckdb:vortex-file-compressed 🚨 195846567 52716817 3.72
fineweb_q07/duckdb:vortex-file-compressed 🚨 216199729 56453624 3.83
fineweb_q08/duckdb:vortex-file-compressed 22854826 23245189 0.98
duckdb / vortex-compact (1.008x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:vortex-compact 3815767 3942487 0.97
fineweb_q01/duckdb:vortex-compact 108118256 104562960 1.03
fineweb_q02/duckdb:vortex-compact 121515078 113041129 1.07
fineweb_q03/duckdb:vortex-compact 854912718 869211554 0.98
fineweb_q04/duckdb:vortex-compact 898920802 919234196 0.98
fineweb_q05/duckdb:vortex-compact 805848479 809911167 0.99
fineweb_q06/duckdb:vortex-compact 462938264 463281045 1.00
fineweb_q07/duckdb:vortex-compact 483373681 475069532 1.02
fineweb_q08/duckdb:vortex-compact 20477625 19909330 1.03
duckdb / parquet (0.994x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
fineweb_q00/duckdb:parquet 27475342 27440877 1.00
fineweb_q01/duckdb:parquet 84092603 86961457 0.97
fineweb_q02/duckdb:parquet 85389064 83320111 1.02
fineweb_q03/duckdb:parquet 307576809 311155764 0.99
fineweb_q04/duckdb:parquet 441097072 441139504 1.00
fineweb_q05/duckdb:parquet 411723637 412454833 1.00
fineweb_q06/duckdb:parquet 199583754 198870072 1.00
fineweb_q07/duckdb:parquet 209215546 209759133 1.00
fineweb_q08/duckdb:parquet 32742508 33811651 0.97
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-compact +8.3% +1.3% +6.9% +48.4% ➖ noise
0 datafusion:vortex-file-compressed -6.1% +1.3% -7.4% +47.7% ➖ noise
0 duckdb:vortex-compact -3.2% +1.3% -4.5% +47.8% ➖ noise
0 duckdb:vortex-file-compressed -4.1% +1.3% -5.3% +88.8% ➖ noise
1 datafusion:vortex-compact +5.0% -2.4% +7.6% +23.7% ➖ noise
1 datafusion:vortex-file-compressed +1435.4% -2.4% +1473.9% +35.0% 🚨 regression
1 duckdb:vortex-compact +3.4% -2.4% +6.0% +22.8% ➖ noise
1 duckdb:vortex-file-compressed +1265.7% -2.4% +1299.9% +50.1% 🚨 regression
2 datafusion:vortex-compact +8.8% -0.5% +9.3% +13.7% ➖ noise
2 datafusion:vortex-file-compressed +1754.4% -0.5% +1763.9% +10.0% 🚨 regression
2 duckdb:vortex-compact +7.5% -0.5% +8.0% +22.9% ➖ noise
2 duckdb:vortex-file-compressed +1692.4% -0.5% +1701.6% +10.0% 🚨 regression
3 datafusion:vortex-compact -2.7% +0.7% -3.4% +10.0% ➖ noise
3 datafusion:vortex-file-compressed +366.0% +0.7% +362.6% +10.0% 🚨 regression
3 duckdb:vortex-compact -1.6% +0.7% -2.4% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +436.9% +0.7% +433.0% +32.6% 🚨 regression
4 datafusion:vortex-compact +1.2% -0.9% +2.1% +10.0% ➖ noise
4 datafusion:vortex-file-compressed +491.3% -0.9% +496.7% +10.0% 🚨 regression
4 duckdb:vortex-compact -2.2% -0.9% -1.3% +10.0% ➖ noise
4 duckdb:vortex-file-compressed +506.3% -0.9% +511.8% +10.0% 🚨 regression
5 datafusion:vortex-compact -0.3% +0.4% -0.7% +10.0% ➖ noise
5 datafusion:vortex-file-compressed +262.1% +0.4% +260.7% +10.0% 🚨 regression
5 duckdb:vortex-compact -0.5% +0.4% -0.9% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +264.0% +0.4% +262.6% +10.0% 🚨 regression
6 datafusion:vortex-compact -1.8% -2.3% +0.5% +10.0% ➖ noise
6 datafusion:vortex-file-compressed +256.0% -2.3% +264.3% +10.0% 🚨 regression
6 duckdb:vortex-compact -0.1% -2.3% +2.3% +10.0% ➖ noise
6 duckdb:vortex-file-compressed +271.5% -2.3% +280.2% +10.0% 🚨 regression
7 datafusion:vortex-compact -1.8% -1.2% -0.6% +10.0% ➖ noise
7 datafusion:vortex-file-compressed +279.5% -1.2% +284.2% +11.7% 🚨 regression
7 duckdb:vortex-compact +1.7% -1.2% +3.0% +10.0% ➖ noise
7 duckdb:vortex-file-compressed +283.0% -1.2% +287.7% +18.1% 🚨 regression
8 datafusion:vortex-compact -3.6% -2.0% -1.7% +21.3% ➖ noise
8 datafusion:vortex-file-compressed -13.9% -2.0% -12.2% +23.6% ➖ noise
8 duckdb:vortex-compact +2.9% -2.0% +4.9% +10.2% ➖ noise
8 duckdb:vortex-file-compressed -1.7% -2.0% +0.3% +16.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 (environment too noisy confidence)
Attributed Vortex impact: +0.7%
Vortex (geomean): 0.985x ➖
Parquet (geomean): 0.979x ➖
Shifts: Parquet (control) -2.1% · Median polish -3.1%


datafusion / vortex-file-compressed (0.978x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 669221442 675369137 0.99
tpch_q02/datafusion:vortex-file-compressed 698364160 735360249 0.95
tpch_q03/datafusion:vortex-file-compressed 820510321 878468010 0.93
tpch_q04/datafusion:vortex-file-compressed 629603658 635075986 0.99
tpch_q05/datafusion:vortex-file-compressed 970152933 1018052439 0.95
tpch_q06/datafusion:vortex-file-compressed 654012684 668367646 0.98
tpch_q07/datafusion:vortex-file-compressed 1046034533 1008858135 1.04
tpch_q08/datafusion:vortex-file-compressed 1141570814 1182845761 0.97
tpch_q09/datafusion:vortex-file-compressed 1226334398 1359512797 0.90
tpch_q10/datafusion:vortex-file-compressed 949242508 1011665449 0.94
tpch_q11/datafusion:vortex-file-compressed 449892350 484766187 0.93
tpch_q12/datafusion:vortex-file-compressed 1002266470 905031659 1.11
tpch_q13/datafusion:vortex-file-compressed 441774267 445360930 0.99
tpch_q14/datafusion:vortex-file-compressed 641863716 621224337 1.03
tpch_q15/datafusion:vortex-file-compressed 1332058010 1062880962 1.25
tpch_q16/datafusion:vortex-file-compressed 352847574 388426110 0.91
tpch_q17/datafusion:vortex-file-compressed 1331474554 1142053454 1.17
tpch_q18/datafusion:vortex-file-compressed 1366702770 1295182013 1.06
tpch_q19/datafusion:vortex-file-compressed 768252691 859169749 0.89
tpch_q20/datafusion:vortex-file-compressed 950900403 1039365558 0.91
tpch_q21/datafusion:vortex-file-compressed 1768756041 1731434616 1.02
tpch_q22/datafusion:vortex-file-compressed 424859764 591744475 0.72
datafusion / vortex-compact (0.997x ➖, 0↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 703406017 669547955 1.05
tpch_q02/datafusion:vortex-compact 557405579 756554465 0.74
tpch_q03/datafusion:vortex-compact 688950745 686680360 1.00
tpch_q04/datafusion:vortex-compact 533263177 537506857 0.99
tpch_q05/datafusion:vortex-compact 857179275 852883362 1.01
tpch_q06/datafusion:vortex-compact 610036368 646289557 0.94
tpch_q07/datafusion:vortex-compact 934140723 986023974 0.95
tpch_q08/datafusion:vortex-compact 1222030900 1100732635 1.11
tpch_q09/datafusion:vortex-compact 1376628856 1173678949 1.17
tpch_q10/datafusion:vortex-compact 1039863183 968807342 1.07
tpch_q11/datafusion:vortex-compact 🚨 554337799 366279389 1.51
tpch_q12/datafusion:vortex-compact 805849969 799753502 1.01
tpch_q13/datafusion:vortex-compact 395170612 413143752 0.96
tpch_q14/datafusion:vortex-compact 535964795 692085908 0.77
tpch_q15/datafusion:vortex-compact 1065759609 1086522159 0.98
tpch_q16/datafusion:vortex-compact 269497447 320187515 0.84
tpch_q17/datafusion:vortex-compact 1087537538 1138134139 0.96
tpch_q18/datafusion:vortex-compact 1027014011 1047149556 0.98
tpch_q19/datafusion:vortex-compact 696403736 742772576 0.94
tpch_q20/datafusion:vortex-compact 872281378 822629053 1.06
tpch_q21/datafusion:vortex-compact 1419143928 1344680169 1.06
tpch_q22/datafusion:vortex-compact 366048774 344192770 1.06
datafusion / parquet (1.002x ➖, 0↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 813892962 825025393 0.99
tpch_q02/datafusion:parquet 720116959 868316207 0.83
tpch_q03/datafusion:parquet 922358220 948160824 0.97
tpch_q04/datafusion:parquet 464173224 493169115 0.94
tpch_q05/datafusion:parquet 1074161208 1124316674 0.96
tpch_q06/datafusion:parquet 509233134 523287999 0.97
tpch_q07/datafusion:parquet 1223217303 1330032722 0.92
tpch_q08/datafusion:parquet 1483824900 1605914013 0.92
tpch_q09/datafusion:parquet 1621492156 1741698236 0.93
tpch_q10/datafusion:parquet 2255408541 1914466737 1.18
tpch_q11/datafusion:parquet 🚨 748592927 489056672 1.53
tpch_q12/datafusion:parquet 600104023 624593641 0.96
tpch_q13/datafusion:parquet 649030392 679151290 0.96
tpch_q14/datafusion:parquet 762883872 757454404 1.01
tpch_q15/datafusion:parquet 1275509170 1229970320 1.04
tpch_q16/datafusion:parquet 351539730 331950561 1.06
tpch_q17/datafusion:parquet 1376950155 1271240929 1.08
tpch_q18/datafusion:parquet 1407752792 1468339885 0.96
tpch_q19/datafusion:parquet 856165276 875967659 0.98
tpch_q20/datafusion:parquet 1036780783 1151929297 0.90
tpch_q21/datafusion:parquet 1818061466 1726042816 1.05
tpch_q22/datafusion:parquet 716026275 668774005 1.07
duckdb / vortex-file-compressed (0.967x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 622091293 628698145 0.99
tpch_q02/duckdb:vortex-file-compressed 1085642104 1148707419 0.95
tpch_q03/duckdb:vortex-file-compressed 892529579 925872418 0.96
tpch_q04/duckdb:vortex-file-compressed 599925513 667169291 0.90
tpch_q05/duckdb:vortex-file-compressed 1029735937 1160873624 0.89
tpch_q06/duckdb:vortex-file-compressed 747569515 771449193 0.97
tpch_q07/duckdb:vortex-file-compressed 1154377585 1169511093 0.99
tpch_q08/duckdb:vortex-file-compressed 1375259695 1480061591 0.93
tpch_q09/duckdb:vortex-file-compressed 1409365685 1479035337 0.95
tpch_q10/duckdb:vortex-file-compressed 1068502373 1154055401 0.93
tpch_q11/duckdb:vortex-file-compressed 641166693 642604532 1.00
tpch_q12/duckdb:vortex-file-compressed 697234759 740732848 0.94
tpch_q13/duckdb:vortex-file-compressed 815240847 902505346 0.90
tpch_q14/duckdb:vortex-file-compressed 844316362 840388889 1.00
tpch_q15/duckdb:vortex-file-compressed 520247328 516924422 1.01
tpch_q16/duckdb:vortex-file-compressed 486410933 499505686 0.97
tpch_q17/duckdb:vortex-file-compressed 917058352 973096658 0.94
tpch_q18/duckdb:vortex-file-compressed 909117670 913326015 1.00
tpch_q19/duckdb:vortex-file-compressed 757231253 745064446 1.02
tpch_q20/duckdb:vortex-file-compressed 1188006463 1161312077 1.02
tpch_q21/duckdb:vortex-file-compressed 1878964305 1909969493 0.98
tpch_q22/duckdb:vortex-file-compressed 690725142 655083381 1.05
duckdb / vortex-compact (1.000x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 584900704 603705755 0.97
tpch_q02/duckdb:vortex-compact 1084707601 1047671315 1.04
tpch_q03/duckdb:vortex-compact 804918627 839859870 0.96
tpch_q04/duckdb:vortex-compact 470513361 478468070 0.98
tpch_q05/duckdb:vortex-compact 1009662823 1018787515 0.99
tpch_q06/duckdb:vortex-compact 720770922 712185081 1.01
tpch_q07/duckdb:vortex-compact 999067029 1047153080 0.95
tpch_q08/duckdb:vortex-compact 1312605555 1317199156 1.00
tpch_q09/duckdb:vortex-compact 1338460563 1338679854 1.00
tpch_q10/duckdb:vortex-compact 1014390251 1020744077 0.99
tpch_q11/duckdb:vortex-compact 688216495 625203796 1.10
tpch_q12/duckdb:vortex-compact 660866391 639338936 1.03
tpch_q13/duckdb:vortex-compact 848501053 838118265 1.01
tpch_q14/duckdb:vortex-compact 798137530 824345631 0.97
tpch_q15/duckdb:vortex-compact 515026403 558682075 0.92
tpch_q16/duckdb:vortex-compact 486551623 455646652 1.07
tpch_q17/duckdb:vortex-compact 895928446 854291440 1.05
tpch_q18/duckdb:vortex-compact 757138137 741441255 1.02
tpch_q19/duckdb:vortex-compact 677599857 694111392 0.98
tpch_q20/duckdb:vortex-compact 1124265055 1210803848 0.93
tpch_q21/duckdb:vortex-compact 1585236040 1592935521 1.00
tpch_q22/duckdb:vortex-compact 619345591 584446338 1.06
duckdb / parquet (0.957x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 776816102 793652111 0.98
tpch_q02/duckdb:parquet 1236734548 1343860423 0.92
tpch_q03/duckdb:parquet 1656214091 1550318847 1.07
tpch_q04/duckdb:parquet 975128827 975300187 1.00
tpch_q05/duckdb:parquet 1893804629 1784730476 1.06
tpch_q06/duckdb:parquet 801486229 738758330 1.08
tpch_q07/duckdb:parquet 1737062947 1720864833 1.01
tpch_q08/duckdb:parquet 2228463099 2240782790 0.99
tpch_q09/duckdb:parquet 2330157475 2484877745 0.94
tpch_q10/duckdb:parquet 2967256665 3099987436 0.96
tpch_q11/duckdb:parquet 965744313 1015338126 0.95
tpch_q12/duckdb:parquet 1040962293 1247387859 0.83
tpch_q13/duckdb:parquet 1167552604 1165550559 1.00
tpch_q14/duckdb:parquet 1184049259 1225655931 0.97
tpch_q15/duckdb:parquet 890605977 963819444 0.92
tpch_q16/duckdb:parquet 862097884 855589411 1.01
tpch_q17/duckdb:parquet 1168928004 1384457389 0.84
tpch_q18/duckdb:parquet 1232816735 1422552092 0.87
tpch_q19/duckdb:parquet 1316670067 1501138154 0.88
tpch_q20/duckdb:parquet 1708880048 1858212351 0.92
tpch_q21/duckdb:parquet 1701939753 1809435400 0.94
tpch_q22/duckdb:parquet 999208439 1050565523 0.95
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +5.1% -1.7% +6.9% +40.1% ➖ noise
1 datafusion:vortex-file-compressed -0.9% -1.7% +0.8% +41.8% ➖ noise
1 duckdb:vortex-compact -3.1% -1.7% -1.4% +30.0% ➖ noise
1 duckdb:vortex-file-compressed -1.1% -1.7% +0.7% +30.0% ➖ noise
2 datafusion:vortex-compact -26.3% -12.6% -15.7% +36.1% ➖ noise
2 datafusion:vortex-file-compressed -5.0% -12.6% +8.7% +32.0% ➖ noise
2 duckdb:vortex-compact +3.5% -12.6% +18.5% +30.0% ➖ noise
2 duckdb:vortex-file-compressed -5.5% -12.6% +8.2% +30.0% ➖ noise
3 datafusion:vortex-compact +0.3% +1.9% -1.6% +41.9% ➖ noise
3 datafusion:vortex-file-compressed -6.6% +1.9% -8.4% +42.0% ➖ noise
3 duckdb:vortex-compact -4.2% +1.9% -6.0% +32.4% ➖ noise
3 duckdb:vortex-file-compressed -3.6% +1.9% -5.4% +32.8% ➖ noise
4 datafusion:vortex-compact -0.8% -3.0% +2.3% +30.0% ➖ noise
4 datafusion:vortex-file-compressed -0.9% -3.0% +2.2% +30.0% ➖ noise
4 duckdb:vortex-compact -1.7% -3.0% +1.4% +30.0% ➖ noise
4 duckdb:vortex-file-compressed -10.1% -3.0% -7.3% +30.0% ➖ noise
5 datafusion:vortex-compact +0.5% +0.7% -0.2% +30.0% ➖ noise
5 datafusion:vortex-file-compressed -4.7% +0.7% -5.4% +30.0% ➖ noise
5 duckdb:vortex-compact -0.9% +0.7% -1.6% +30.0% ➖ noise
5 duckdb:vortex-file-compressed -11.3% +0.7% -11.9% +30.0% ➖ noise
6 datafusion:vortex-compact -5.6% +2.8% -8.1% +30.0% ➖ noise
6 datafusion:vortex-file-compressed -2.1% +2.8% -4.8% +30.0% ➖ noise
6 duckdb:vortex-compact +1.2% +2.8% -1.5% +30.0% ➖ noise
6 duckdb:vortex-file-compressed -3.1% +2.8% -5.7% +30.0% ➖ noise
7 datafusion:vortex-compact -5.3% -3.6% -1.7% +30.0% ➖ noise
7 datafusion:vortex-file-compressed +3.7% -3.6% +7.6% +30.0% ➖ noise
7 duckdb:vortex-compact -4.6% -3.6% -1.0% +30.0% ➖ noise
7 duckdb:vortex-file-compressed -1.3% -3.6% +2.4% +30.0% ➖ noise
8 datafusion:vortex-compact +11.0% -4.1% +15.8% +30.0% ➖ noise
8 datafusion:vortex-file-compressed -3.5% -4.1% +0.7% +30.0% ➖ noise
8 duckdb:vortex-compact -0.3% -4.1% +4.0% +30.0% ➖ noise
8 duckdb:vortex-file-compressed -7.1% -4.1% -3.1% +30.0% ➖ noise
9 datafusion:vortex-compact +17.3% -6.6% +25.5% +30.0% ➖ noise
9 datafusion:vortex-file-compressed -9.8% -6.6% -3.5% +30.0% ➖ noise
9 duckdb:vortex-compact -0.0% -6.6% +7.0% +30.0% ➖ noise
9 duckdb:vortex-file-compressed -4.7% -6.6% +2.0% +30.0% ➖ noise
10 datafusion:vortex-compact +7.3% +6.2% +1.1% +30.0% ➖ noise
10 datafusion:vortex-file-compressed -6.2% +6.2% -11.6% +30.0% ➖ noise
10 duckdb:vortex-compact -0.6% +6.2% -6.4% +30.0% ➖ noise
10 duckdb:vortex-file-compressed -7.4% +6.2% -12.8% +30.0% ➖ noise
11 datafusion:vortex-compact +51.3% +20.7% +25.4% +37.4% ➖ noise
11 datafusion:vortex-file-compressed -7.2% +20.7% -23.1% +30.3% ➖ noise
11 duckdb:vortex-compact +10.1% +20.7% -8.8% +30.0% ➖ noise
11 duckdb:vortex-file-compressed -0.2% +20.7% -17.3% +30.0% ➖ noise
12 datafusion:vortex-compact +0.8% -10.5% +12.5% +30.0% ➖ noise
12 datafusion:vortex-file-compressed +10.7% -10.5% +23.7% +30.0% ➖ noise
12 duckdb:vortex-compact +3.4% -10.5% +15.4% +30.0% ➖ noise
12 duckdb:vortex-file-compressed -5.9% -10.5% +5.1% +30.0% ➖ noise
13 datafusion:vortex-compact -4.4% -2.2% -2.2% +30.0% ➖ noise
13 datafusion:vortex-file-compressed -0.8% -2.2% +1.4% +37.7% ➖ noise
13 duckdb:vortex-compact +1.2% -2.2% +3.5% +33.2% ➖ noise
13 duckdb:vortex-file-compressed -9.7% -2.2% -7.7% +35.2% ➖ noise
14 datafusion:vortex-compact -22.6% -1.4% -21.5% +30.0% ➖ noise
14 datafusion:vortex-file-compressed +3.3% -1.4% +4.7% +30.0% ➖ noise
14 duckdb:vortex-compact -3.2% -1.4% -1.8% +30.0% ➖ noise
14 duckdb:vortex-file-compressed +0.5% -1.4% +1.9% +30.0% ➖ noise
15 datafusion:vortex-compact -1.9% -2.1% +0.2% +30.0% ➖ noise
15 datafusion:vortex-file-compressed +25.3% -2.1% +28.0% +30.0% ➖ noise
15 duckdb:vortex-compact -7.8% -2.1% -5.8% +30.0% ➖ noise
15 duckdb:vortex-file-compressed +0.6% -2.1% +2.8% +30.0% ➖ noise
16 datafusion:vortex-compact -15.8% +3.3% -18.5% +30.0% ➖ noise
16 datafusion:vortex-file-compressed -9.2% +3.3% -12.1% +30.0% ➖ noise
16 duckdb:vortex-compact +6.8% +3.3% +3.4% +30.0% ➖ noise
16 duckdb:vortex-file-compressed -2.6% +3.3% -5.7% +30.0% ➖ noise
17 datafusion:vortex-compact -4.4% -4.4% -0.1% +30.0% ➖ noise
17 datafusion:vortex-file-compressed +16.6% -4.4% +21.9% +30.0% ➖ noise
17 duckdb:vortex-compact +4.9% -4.4% +9.7% +30.0% ➖ noise
17 duckdb:vortex-file-compressed -5.8% -4.4% -1.5% +30.0% ➖ noise
18 datafusion:vortex-compact -1.9% -8.8% +7.6% +30.0% ➖ noise
18 datafusion:vortex-file-compressed +5.5% -8.8% +15.8% +30.0% ➖ noise
18 duckdb:vortex-compact +2.1% -8.8% +12.0% +30.0% ➖ noise
18 duckdb:vortex-file-compressed -0.5% -8.8% +9.2% +30.0% ➖ noise
19 datafusion:vortex-compact -6.2% -7.4% +1.3% +30.0% ➖ noise
19 datafusion:vortex-file-compressed -10.6% -7.4% -3.4% +30.0% ➖ noise
19 duckdb:vortex-compact -2.4% -7.4% +5.4% +30.0% ➖ noise
19 duckdb:vortex-file-compressed +1.6% -7.4% +9.8% +30.0% ➖ noise
20 datafusion:vortex-compact +6.0% -9.0% +16.6% +30.0% ➖ noise
20 datafusion:vortex-file-compressed -8.5% -9.0% +0.6% +30.0% ➖ noise
20 duckdb:vortex-compact -7.1% -9.0% +2.1% +30.0% ➖ noise
20 duckdb:vortex-file-compressed +2.3% -9.0% +12.4% +30.0% ➖ noise
21 datafusion:vortex-compact +5.5% -0.5% +6.0% +30.0% ➖ noise
21 datafusion:vortex-file-compressed +2.2% -0.5% +2.6% +30.0% ➖ noise
21 duckdb:vortex-compact -0.5% -0.5% -0.0% +30.0% ➖ noise
21 duckdb:vortex-file-compressed -1.6% -0.5% -1.2% +30.0% ➖ noise
22 datafusion:vortex-compact +6.3% +0.9% +5.4% +30.0% ➖ noise
22 datafusion:vortex-file-compressed -28.2% +0.9% -28.9% +41.2% ➖ noise
22 duckdb:vortex-compact +6.0% +0.9% +5.0% +30.0% ➖ noise
22 duckdb:vortex-file-compressed +5.4% +0.9% +4.5% +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: -0.0%
Vortex (geomean): 1.009x ➖
Parquet (geomean): 0.991x ➖
Shifts: Parquet (control) -0.9% · Median polish -1.4%


datafusion / vortex-file-compressed (0.972x ➖, 25↑ 3↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-file-compressed 26363585 26214432 1.01
tpcds_q02/datafusion:vortex-file-compressed 🚀 42307361 47330583 0.89
tpcds_q03/datafusion:vortex-file-compressed 15789256 14958954 1.06
tpcds_q04/datafusion:vortex-file-compressed 259204889 255858435 1.01
tpcds_q05/datafusion:vortex-file-compressed 42478027 44843978 0.95
tpcds_q06/datafusion:vortex-file-compressed 🚀 34625165 59443350 0.58
tpcds_q07/datafusion:vortex-file-compressed 40934127 44168313 0.93
tpcds_q08/datafusion:vortex-file-compressed 29120809 29848682 0.98
tpcds_q09/datafusion:vortex-file-compressed 44158662 44841597 0.98
tpcds_q10/datafusion:vortex-file-compressed 37545504 40851621 0.92
tpcds_q11/datafusion:vortex-file-compressed 129140591 128307356 1.01
tpcds_q12/datafusion:vortex-file-compressed 🚨 54306784 20636331 2.63
tpcds_q13/datafusion:vortex-file-compressed 44064749 44891543 0.98
tpcds_q14/datafusion:vortex-file-compressed 168099803 171478839 0.98
tpcds_q15/datafusion:vortex-file-compressed 28432513 29482031 0.96
tpcds_q16/datafusion:vortex-file-compressed 27793392 29333019 0.95
tpcds_q17/datafusion:vortex-file-compressed 60810360 67138003 0.91
tpcds_q18/datafusion:vortex-file-compressed 70129852 69197208 1.01
tpcds_q19/datafusion:vortex-file-compressed 22869924 22022574 1.04
tpcds_q20/datafusion:vortex-file-compressed 🚨 56236364 23414784 2.40
tpcds_q21/datafusion:vortex-file-compressed 35408713 37861821 0.94
tpcds_q22/datafusion:vortex-file-compressed 🚀 112413053 137973377 0.81
tpcds_q23/datafusion:vortex-file-compressed 🚀 150724720 169562623 0.89
tpcds_q24/datafusion:vortex-file-compressed 83096961 91703885 0.91
tpcds_q25/datafusion:vortex-file-compressed 66338267 69936712 0.95
tpcds_q26/datafusion:vortex-file-compressed 35651089 34572426 1.03
tpcds_q27/datafusion:vortex-file-compressed 110876512 102330784 1.08
tpcds_q28/datafusion:vortex-file-compressed 42679418 42362080 1.01
tpcds_q29/datafusion:vortex-file-compressed 65193510 61860157 1.05
tpcds_q30/datafusion:vortex-file-compressed 23910849 23580407 1.01
tpcds_q31/datafusion:vortex-file-compressed 72104183 73564864 0.98
tpcds_q32/datafusion:vortex-file-compressed 🚀 20779867 23312241 0.89
tpcds_q33/datafusion:vortex-file-compressed 30055982 32470088 0.93
tpcds_q34/datafusion:vortex-file-compressed 24533258 27120981 0.90
tpcds_q35/datafusion:vortex-file-compressed 45928511 50788028 0.90
tpcds_q36/datafusion:vortex-file-compressed 58762947 63507375 0.93
tpcds_q37/datafusion:vortex-file-compressed 🚀 27075324 31451706 0.86
tpcds_q38/datafusion:vortex-file-compressed 46221565 51346301 0.90
tpcds_q39/datafusion:vortex-file-compressed 🚀 106938330 123912410 0.86
tpcds_q40/datafusion:vortex-file-compressed 32320336 35481891 0.91
tpcds_q41/datafusion:vortex-file-compressed 16271408 17704327 0.92
tpcds_q42/datafusion:vortex-file-compressed 🚀 13544493 15725266 0.86
tpcds_q43/datafusion:vortex-file-compressed 🚀 18766989 21145241 0.89
tpcds_q44/datafusion:vortex-file-compressed 🚀 31794382 36979400 0.86
tpcds_q45/datafusion:vortex-file-compressed 27816302 29852720 0.93
tpcds_q46/datafusion:vortex-file-compressed 34396103 38041970 0.90
tpcds_q47/datafusion:vortex-file-compressed 🚀 130857564 145760187 0.90
tpcds_q48/datafusion:vortex-file-compressed 🚀 37718709 44631258 0.85
tpcds_q49/datafusion:vortex-file-compressed 🚀 57338930 64223242 0.89
tpcds_q50/datafusion:vortex-file-compressed 39304951 42523249 0.92
tpcds_q51/datafusion:vortex-file-compressed 91728233 96553334 0.95
tpcds_q52/datafusion:vortex-file-compressed 🚀 14487369 16826716 0.86
tpcds_q53/datafusion:vortex-file-compressed 🚀 20965376 23709795 0.88
tpcds_q54/datafusion:vortex-file-compressed 35017367 37963077 0.92
tpcds_q55/datafusion:vortex-file-compressed 🚀 13535306 15306970 0.88
tpcds_q56/datafusion:vortex-file-compressed 🚀 28523574 32385409 0.88
tpcds_q57/datafusion:vortex-file-compressed 🚀 106677179 119462375 0.89
tpcds_q58/datafusion:vortex-file-compressed 🚀 51426888 58103145 0.89
tpcds_q59/datafusion:vortex-file-compressed 🚀 51696987 61861039 0.84
tpcds_q60/datafusion:vortex-file-compressed 🚀 28370863 32818343 0.86
tpcds_q61/datafusion:vortex-file-compressed 🚀 39852609 44508741 0.90
tpcds_q62/datafusion:vortex-file-compressed 🚀 21807414 29129812 0.75
tpcds_q63/datafusion:vortex-file-compressed 🚀 20752105 24202598 0.86
tpcds_q64/datafusion:vortex-file-compressed 427199908 467501796 0.91
tpcds_q65/datafusion:vortex-file-compressed 42331011 44422494 0.95
tpcds_q66/datafusion:vortex-file-compressed 75669498 78224990 0.97
tpcds_q67/datafusion:vortex-file-compressed 155469352 162896298 0.95
tpcds_q68/datafusion:vortex-file-compressed 35222666 35506996 0.99
tpcds_q69/datafusion:vortex-file-compressed 39744463 40834187 0.97
tpcds_q70/datafusion:vortex-file-compressed 89843106 95304211 0.94
tpcds_q71/datafusion:vortex-file-compressed 24279345 25048269 0.97
tpcds_q72/datafusion:vortex-file-compressed 🚀 2183834503 2429805416 0.90
tpcds_q73/datafusion:vortex-file-compressed 26091000 26298959 0.99
tpcds_q74/datafusion:vortex-file-compressed 92300428 89261189 1.03
tpcds_q75/datafusion:vortex-file-compressed 120639636 123247736 0.98
tpcds_q76/datafusion:vortex-file-compressed 27848663 26837064 1.04
tpcds_q77/datafusion:vortex-file-compressed 44261766 46341200 0.96
tpcds_q78/datafusion:vortex-file-compressed 146766729 144810643 1.01
tpcds_q79/datafusion:vortex-file-compressed 31557873 32236292 0.98
tpcds_q80/datafusion:vortex-file-compressed 110980638 107614095 1.03
tpcds_q81/datafusion:vortex-file-compressed 27082291 28323166 0.96
tpcds_q82/datafusion:vortex-file-compressed 31490006 32469462 0.97
tpcds_q83/datafusion:vortex-file-compressed 38084625 39286006 0.97
tpcds_q84/datafusion:vortex-file-compressed 14586575 15378391 0.95
tpcds_q85/datafusion:vortex-file-compressed 107371166 108675140 0.99
tpcds_q86/datafusion:vortex-file-compressed 20367149 18597545 1.10
tpcds_q87/datafusion:vortex-file-compressed 49346516 47674317 1.04
tpcds_q88/datafusion:vortex-file-compressed 61408082 58848802 1.04
tpcds_q89/datafusion:vortex-file-compressed 27504080 27405259 1.00
tpcds_q90/datafusion:vortex-file-compressed 16953320 16794132 1.01
tpcds_q91/datafusion:vortex-file-compressed 21057233 20574127 1.02
tpcds_q92/datafusion:vortex-file-compressed 21673803 21816601 0.99
tpcds_q93/datafusion:vortex-file-compressed 38259673 36589165 1.05
tpcds_q94/datafusion:vortex-file-compressed 27815675 25708508 1.08
tpcds_q95/datafusion:vortex-file-compressed 68438333 67023700 1.02
tpcds_q96/datafusion:vortex-file-compressed 15533128 14726492 1.05
tpcds_q97/datafusion:vortex-file-compressed 35475841 35881444 0.99
tpcds_q98/datafusion:vortex-file-compressed 🚨 62389173 27029779 2.31
tpcds_q99/datafusion:vortex-file-compressed 35659333 34406444 1.04
datafusion / vortex-compact (1.017x ➖, 3↑ 3↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:vortex-compact 29007432 28642795 1.01
tpcds_q02/datafusion:vortex-compact 56618015 56569357 1.00
tpcds_q03/datafusion:vortex-compact 20920464 22047485 0.95
tpcds_q04/datafusion:vortex-compact 326590511 304924766 1.07
tpcds_q05/datafusion:vortex-compact 54017426 50637321 1.07
tpcds_q06/datafusion:vortex-compact 62307578 63932146 0.97
tpcds_q07/datafusion:vortex-compact 60941949 57999553 1.05
tpcds_q08/datafusion:vortex-compact 38274712 39020952 0.98
tpcds_q09/datafusion:vortex-compact 65704715 68069340 0.97
tpcds_q10/datafusion:vortex-compact 55349855 55935856 0.99
tpcds_q11/datafusion:vortex-compact 169235776 173467529 0.98
tpcds_q12/datafusion:vortex-compact 30208695 27590614 1.09
tpcds_q13/datafusion:vortex-compact 🚀 97974217 112683933 0.87
tpcds_q14/datafusion:vortex-compact 215343672 219989994 0.98
tpcds_q15/datafusion:vortex-compact 33657950 33566412 1.00
tpcds_q16/datafusion:vortex-compact 35752752 35464929 1.01
tpcds_q17/datafusion:vortex-compact 82581445 79639023 1.04
tpcds_q18/datafusion:vortex-compact 85823959 85929308 1.00
tpcds_q19/datafusion:vortex-compact 32689509 32787062 1.00
tpcds_q20/datafusion:vortex-compact 29574292 28963385 1.02
tpcds_q21/datafusion:vortex-compact 42519371 44574248 0.95
tpcds_q22/datafusion:vortex-compact 🚀 141283777 161515905 0.87
tpcds_q23/datafusion:vortex-compact 183902779 180942836 1.02
tpcds_q24/datafusion:vortex-compact 110091017 106613110 1.03
tpcds_q25/datafusion:vortex-compact 86355407 84700193 1.02
tpcds_q26/datafusion:vortex-compact 49811150 47227017 1.05
tpcds_q27/datafusion:vortex-compact 136750237 129714662 1.05
tpcds_q28/datafusion:vortex-compact 81446128 79858756 1.02
tpcds_q29/datafusion:vortex-compact 82147569 79698641 1.03
tpcds_q30/datafusion:vortex-compact 🚨 31053645 27186263 1.14
tpcds_q31/datafusion:vortex-compact 104044704 98920955 1.05
tpcds_q32/datafusion:vortex-compact 28339552 27685381 1.02
tpcds_q33/datafusion:vortex-compact 39981881 38357034 1.04
tpcds_q34/datafusion:vortex-compact 33733065 32814185 1.03
tpcds_q35/datafusion:vortex-compact 56547770 52318591 1.08
tpcds_q36/datafusion:vortex-compact 80506419 76984841 1.05
tpcds_q37/datafusion:vortex-compact 44885136 41934054 1.07
tpcds_q38/datafusion:vortex-compact 56466701 56318531 1.00
tpcds_q39/datafusion:vortex-compact 131862017 131075573 1.01
tpcds_q40/datafusion:vortex-compact 42000586 40374616 1.04
tpcds_q41/datafusion:vortex-compact 20661318 19374646 1.07
tpcds_q42/datafusion:vortex-compact 20187658 19331967 1.04
tpcds_q43/datafusion:vortex-compact 26507639 25564576 1.04
tpcds_q44/datafusion:vortex-compact 50017491 50110950 1.00
tpcds_q45/datafusion:vortex-compact 34879669 35012408 1.00
tpcds_q46/datafusion:vortex-compact 48159677 46772861 1.03
tpcds_q47/datafusion:vortex-compact 165909060 168103747 0.99
tpcds_q48/datafusion:vortex-compact 🚀 75058929 89328808 0.84
tpcds_q49/datafusion:vortex-compact 77873488 76301466 1.02
tpcds_q50/datafusion:vortex-compact 51648028 51493382 1.00
tpcds_q51/datafusion:vortex-compact 104418400 107248259 0.97
tpcds_q52/datafusion:vortex-compact 19883946 20340141 0.98
tpcds_q53/datafusion:vortex-compact 30062386 29964297 1.00
tpcds_q54/datafusion:vortex-compact 46727448 44392222 1.05
tpcds_q55/datafusion:vortex-compact 19477743 18751861 1.04
tpcds_q56/datafusion:vortex-compact 37293157 37835958 0.99
tpcds_q57/datafusion:vortex-compact 125676171 122162879 1.03
tpcds_q58/datafusion:vortex-compact 66469934 63469590 1.05
tpcds_q59/datafusion:vortex-compact 73685665 74032164 1.00
tpcds_q60/datafusion:vortex-compact 39014036 37991052 1.03
tpcds_q61/datafusion:vortex-compact 57440030 55463111 1.04
tpcds_q62/datafusion:vortex-compact 26485632 26141375 1.01
tpcds_q63/datafusion:vortex-compact 29921870 28966474 1.03
tpcds_q64/datafusion:vortex-compact 496874884 503293783 0.99
tpcds_q65/datafusion:vortex-compact 57720355 57072357 1.01
tpcds_q66/datafusion:vortex-compact 83355380 78351371 1.06
tpcds_q67/datafusion:vortex-compact 159184682 159675831 1.00
tpcds_q68/datafusion:vortex-compact 50763647 49189962 1.03
tpcds_q69/datafusion:vortex-compact 51365796 51506008 1.00
tpcds_q70/datafusion:vortex-compact 104202860 104845474 0.99
tpcds_q71/datafusion:vortex-compact 31486278 31223104 1.01
tpcds_q72/datafusion:vortex-compact 2470554009 2382802137 1.04
tpcds_q73/datafusion:vortex-compact 30451883 30826024 0.99
tpcds_q74/datafusion:vortex-compact 96161969 94714423 1.02
tpcds_q75/datafusion:vortex-compact 132735289 126604968 1.05
tpcds_q76/datafusion:vortex-compact 33266358 31972991 1.04
tpcds_q77/datafusion:vortex-compact 51643575 50594532 1.02
tpcds_q78/datafusion:vortex-compact 146113989 145743433 1.00
tpcds_q79/datafusion:vortex-compact 38245066 38086880 1.00
tpcds_q80/datafusion:vortex-compact 110905339 110172176 1.01
tpcds_q81/datafusion:vortex-compact 29597999 30391621 0.97
tpcds_q82/datafusion:vortex-compact 42649306 42154116 1.01
tpcds_q83/datafusion:vortex-compact 35763372 34332383 1.04
tpcds_q84/datafusion:vortex-compact 🚨 16340351 14312858 1.14
tpcds_q85/datafusion:vortex-compact 145301635 135087025 1.08
tpcds_q86/datafusion:vortex-compact 21753272 20629362 1.05
tpcds_q87/datafusion:vortex-compact 53965900 52673315 1.02
tpcds_q88/datafusion:vortex-compact 77282665 75922181 1.02
tpcds_q89/datafusion:vortex-compact 32464115 32155869 1.01
tpcds_q90/datafusion:vortex-compact 16298995 15253639 1.07
tpcds_q91/datafusion:vortex-compact 35403848 33735456 1.05
tpcds_q92/datafusion:vortex-compact 25623584 23408759 1.09
tpcds_q93/datafusion:vortex-compact 39504531 39218805 1.01
tpcds_q94/datafusion:vortex-compact 28266488 28657584 0.99
tpcds_q95/datafusion:vortex-compact 67028662 71196892 0.94
tpcds_q96/datafusion:vortex-compact 18087496 18953032 0.95
tpcds_q97/datafusion:vortex-compact 39951625 38414427 1.04
tpcds_q98/datafusion:vortex-compact 30886503 30270925 1.02
tpcds_q99/datafusion:vortex-compact 🚨 37342019 33417245 1.12
datafusion / parquet (0.976x ➖, 5↑ 2↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/datafusion:parquet 29348939 31268033 0.94
tpcds_q02/datafusion:parquet 41868525 41756367 1.00
tpcds_q03/datafusion:parquet 12678186 13168342 0.96
tpcds_q04/datafusion:parquet 267575422 273547516 0.98
tpcds_q05/datafusion:parquet 39151665 41804213 0.94
tpcds_q06/datafusion:parquet 57039643 59439946 0.96
tpcds_q07/datafusion:parquet 73632961 75382921 0.98
tpcds_q08/datafusion:parquet 25365244 26006548 0.98
tpcds_q09/datafusion:parquet 43590460 43151606 1.01
tpcds_q10/datafusion:parquet 67505267 67681510 1.00
tpcds_q11/datafusion:parquet 146377286 148125297 0.99
tpcds_q12/datafusion:parquet 17923515 18318049 0.98
tpcds_q13/datafusion:parquet 74032521 77998248 0.95
tpcds_q14/datafusion:parquet 158664456 158570748 1.00
tpcds_q15/datafusion:parquet 20623701 21538315 0.96
tpcds_q16/datafusion:parquet 🚀 22991591 28185637 0.82
tpcds_q17/datafusion:parquet 60938953 64650741 0.94
tpcds_q18/datafusion:parquet 113029424 113756221 0.99
tpcds_q19/datafusion:parquet 22304097 22331457 1.00
tpcds_q20/datafusion:parquet 16263901 15907714 1.02
tpcds_q21/datafusion:parquet 17908293 18129359 0.99
tpcds_q22/datafusion:parquet 🚨 161443828 144571235 1.12
tpcds_q23/datafusion:parquet 152566564 142100045 1.07
tpcds_q24/datafusion:parquet 86605557 88746870 0.98
tpcds_q25/datafusion:parquet 63137664 63693405 0.99
tpcds_q26/datafusion:parquet 63631348 64089397 0.99
tpcds_q27/datafusion:parquet 141084012 143941456 0.98
tpcds_q28/datafusion:parquet 43320253 43277880 1.00
tpcds_q29/datafusion:parquet 64208813 64315210 1.00
tpcds_q30/datafusion:parquet 33516648 33441639 1.00
tpcds_q31/datafusion:parquet 63218265 66097816 0.96
tpcds_q32/datafusion:parquet 17364474 18653903 0.93
tpcds_q33/datafusion:parquet 26116970 26883423 0.97
tpcds_q34/datafusion:parquet 20430694 21296258 0.96
tpcds_q35/datafusion:parquet 65956297 71007736 0.93
tpcds_q36/datafusion:parquet 54465967 57157297 0.95
tpcds_q37/datafusion:parquet 18752435 19172402 0.98
tpcds_q38/datafusion:parquet 39422027 43138774 0.91
tpcds_q39/datafusion:parquet 72616465 73840462 0.98
tpcds_q40/datafusion:parquet 24491186 23626113 1.04
tpcds_q41/datafusion:parquet 12832749 12757244 1.01
tpcds_q42/datafusion:parquet 11117345 11069837 1.00
tpcds_q43/datafusion:parquet 16493352 16526654 1.00
tpcds_q44/datafusion:parquet 34258478 31391162 1.09
tpcds_q45/datafusion:parquet 27028086 28362266 0.95
tpcds_q46/datafusion:parquet 31359614 31672419 0.99
tpcds_q47/datafusion:parquet 124067388 122654210 1.01
tpcds_q48/datafusion:parquet 66740516 69604003 0.96
tpcds_q49/datafusion:parquet 53848372 54664715 0.99
tpcds_q50/datafusion:parquet 43030415 43492659 0.99
tpcds_q51/datafusion:parquet 85209261 84546136 1.01
tpcds_q52/datafusion:parquet 11749666 11606671 1.01
tpcds_q53/datafusion:parquet 17938119 17377232 1.03
tpcds_q54/datafusion:parquet 33591231 34560262 0.97
tpcds_q55/datafusion:parquet 11301164 10985566 1.03
tpcds_q56/datafusion:parquet 25922788 27296599 0.95
tpcds_q57/datafusion:parquet 93474978 98998621 0.94
tpcds_q58/datafusion:parquet 47599495 49597892 0.96
tpcds_q59/datafusion:parquet 56451680 57859907 0.98
tpcds_q60/datafusion:parquet 27165971 27148004 1.00
tpcds_q61/datafusion:parquet 42536958 42717189 1.00
tpcds_q62/datafusion:parquet 🚀 20024655 25752497 0.78
tpcds_q63/datafusion:parquet 17342521 17338235 1.00
tpcds_q64/datafusion:parquet 495644468 509017965 0.97
tpcds_q65/datafusion:parquet 36296432 36964180 0.98
tpcds_q66/datafusion:parquet 64212019 70614725 0.91
tpcds_q67/datafusion:parquet 138696084 145912560 0.95
tpcds_q68/datafusion:parquet 31101025 31271931 0.99
tpcds_q69/datafusion:parquet 67108041 65022083 1.03
tpcds_q70/datafusion:parquet 94996764 87559615 1.08
tpcds_q71/datafusion:parquet 22969451 20990220 1.09
tpcds_q72/datafusion:parquet 649514876 595026173 1.09
tpcds_q73/datafusion:parquet 21240555 20421645 1.04
tpcds_q74/datafusion:parquet 🚨 92442680 81778545 1.13
tpcds_q75/datafusion:parquet 99891764 100134333 1.00
tpcds_q76/datafusion:parquet 28729511 29442144 0.98
tpcds_q77/datafusion:parquet 37569620 40496201 0.93
tpcds_q78/datafusion:parquet 115385854 116550323 0.99
tpcds_q79/datafusion:parquet 26843554 25899941 1.04
tpcds_q80/datafusion:parquet 79900793 79227049 1.01
tpcds_q81/datafusion:parquet 31604813 32016596 0.99
tpcds_q82/datafusion:parquet 18781491 19527209 0.96
tpcds_q83/datafusion:parquet 35819007 37765528 0.95
tpcds_q84/datafusion:parquet 39084066 39912815 0.98
tpcds_q85/datafusion:parquet 144491750 146007307 0.99
tpcds_q86/datafusion:parquet 13554493 14211633 0.95
tpcds_q87/datafusion:parquet 39857063 41050581 0.97
tpcds_q88/datafusion:parquet 56378566 58869577 0.96
tpcds_q89/datafusion:parquet 20284597 21062846 0.96
tpcds_q90/datafusion:parquet 🚀 13464000 15616628 0.86
tpcds_q91/datafusion:parquet 56184996 62140649 0.90
tpcds_q92/datafusion:parquet 🚀 18000791 20996271 0.86
tpcds_q93/datafusion:parquet 30593434 33813167 0.90
tpcds_q94/datafusion:parquet 19132026 20624222 0.93
tpcds_q95/datafusion:parquet 57591669 60933486 0.95
tpcds_q96/datafusion:parquet 11877231 12206615 0.97
tpcds_q97/datafusion:parquet 🚀 28630807 32178976 0.89
tpcds_q98/datafusion:parquet 20882075 22867414 0.91
tpcds_q99/datafusion:parquet 25657808 26992877 0.95
duckdb / vortex-file-compressed (1.072x ➖, 3↑ 11↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-file-compressed 20753124 22924580 0.91
tpcds_q02/duckdb:vortex-file-compressed 33008499 34131355 0.97
tpcds_q03/duckdb:vortex-file-compressed 31254228 31190386 1.00
tpcds_q04/duckdb:vortex-file-compressed 🚨 186063309 101201778 1.84
tpcds_q05/duckdb:vortex-file-compressed 36932088 35845489 1.03
tpcds_q06/duckdb:vortex-file-compressed 🚨 34968951 31389823 1.11
tpcds_q07/duckdb:vortex-file-compressed 20036840 18610841 1.08
tpcds_q08/duckdb:vortex-file-compressed 27617655 29657919 0.93
tpcds_q09/duckdb:vortex-file-compressed 36640605 37241729 0.98
tpcds_q10/duckdb:vortex-file-compressed 40203412 39419583 1.02
tpcds_q11/duckdb:vortex-file-compressed 🚨 135223715 60783393 2.22
tpcds_q12/duckdb:vortex-file-compressed 🚨 45372050 14107920 3.22
tpcds_q13/duckdb:vortex-file-compressed 33847870 32307457 1.05
tpcds_q14/duckdb:vortex-file-compressed 101042038 102230879 0.99
tpcds_q15/duckdb:vortex-file-compressed 26393949 26046853 1.01
tpcds_q16/duckdb:vortex-file-compressed 25371945 25739608 0.99
tpcds_q17/duckdb:vortex-file-compressed 42810876 41843238 1.02
tpcds_q18/duckdb:vortex-file-compressed 48466729 46524604 1.04
tpcds_q19/duckdb:vortex-file-compressed 33397182 32614564 1.02
tpcds_q20/duckdb:vortex-file-compressed 🚨 45916777 15150829 3.03
tpcds_q21/duckdb:vortex-file-compressed 16291490 16468584 0.99
tpcds_q22/duckdb:vortex-file-compressed 74797308 74315035 1.01
tpcds_q23/duckdb:vortex-file-compressed 110189097 108334387 1.02
tpcds_q24/duckdb:vortex-file-compressed 48858126 48939824 1.00
tpcds_q25/duckdb:vortex-file-compressed 48254153 48780063 0.99
tpcds_q26/duckdb:vortex-file-compressed 41987035 38877722 1.08
tpcds_q27/duckdb:vortex-file-compressed 48498216 46014920 1.05
tpcds_q28/duckdb:vortex-file-compressed 35957729 35453907 1.01
tpcds_q29/duckdb:vortex-file-compressed 41089558 41010376 1.00
tpcds_q30/duckdb:vortex-file-compressed 🚨 104056269 22785551 4.57
tpcds_q31/duckdb:vortex-file-compressed 36280658 34713629 1.05
tpcds_q32/duckdb:vortex-file-compressed 13888200 14617611 0.95
tpcds_q33/duckdb:vortex-file-compressed 24332617 23725709 1.03
tpcds_q34/duckdb:vortex-file-compressed 23646851 23053627 1.03
tpcds_q35/duckdb:vortex-file-compressed 63388054 66265161 0.96
tpcds_q36/duckdb:vortex-file-compressed 23999187 24796200 0.97
tpcds_q37/duckdb:vortex-file-compressed 16002968 15665309 1.02
tpcds_q38/duckdb:vortex-file-compressed 🚨 44419218 36197104 1.23
tpcds_q39/duckdb:vortex-file-compressed 34385217 34788747 0.99
tpcds_q40/duckdb:vortex-file-compressed 18680830 20425621 0.91
tpcds_q41/duckdb:vortex-file-compressed 13676129 12882326 1.06
tpcds_q42/duckdb:vortex-file-compressed 12195419 12425511 0.98
tpcds_q43/duckdb:vortex-file-compressed 23997171 22484807 1.07
tpcds_q44/duckdb:vortex-file-compressed 20144457 20351429 0.99
tpcds_q45/duckdb:vortex-file-compressed 28369715 29364936 0.97
tpcds_q46/duckdb:vortex-file-compressed 49593161 51129682 0.97
tpcds_q47/duckdb:vortex-file-compressed 47583998 45754812 1.04
tpcds_q48/duckdb:vortex-file-compressed 29697636 29937889 0.99
tpcds_q49/duckdb:vortex-file-compressed 🚀 31818978 36248877 0.88
tpcds_q50/duckdb:vortex-file-compressed 36098600 33133357 1.09
tpcds_q51/duckdb:vortex-file-compressed 97392827 97198820 1.00
tpcds_q52/duckdb:vortex-file-compressed 12409662 12681229 0.98
tpcds_q53/duckdb:vortex-file-compressed 23173177 23036263 1.01
tpcds_q54/duckdb:vortex-file-compressed 28305075 27578204 1.03
tpcds_q55/duckdb:vortex-file-compressed 12651971 12564666 1.01
tpcds_q56/duckdb:vortex-file-compressed 23498943 23794733 0.99
tpcds_q57/duckdb:vortex-file-compressed 38976914 38709978 1.01
tpcds_q58/duckdb:vortex-file-compressed 31751476 30670380 1.04
tpcds_q59/duckdb:vortex-file-compressed 69504455 66132292 1.05
tpcds_q60/duckdb:vortex-file-compressed 24571211 25610211 0.96
tpcds_q61/duckdb:vortex-file-compressed 31508205 30535792 1.03
tpcds_q62/duckdb:vortex-file-compressed 17955184 17111786 1.05
tpcds_q63/duckdb:vortex-file-compressed 21656678 21079825 1.03
tpcds_q64/duckdb:vortex-file-compressed 80644170 82564725 0.98
tpcds_q65/duckdb:vortex-file-compressed 23765361 22585469 1.05
tpcds_q66/duckdb:vortex-file-compressed 28782702 28983113 0.99
tpcds_q67/duckdb:vortex-file-compressed 139769091 137812637 1.01
tpcds_q68/duckdb:vortex-file-compressed 40026660 41641260 0.96
tpcds_q69/duckdb:vortex-file-compressed 40883905 41205929 0.99
tpcds_q70/duckdb:vortex-file-compressed 26380219 25805203 1.02
tpcds_q71/duckdb:vortex-file-compressed 20752087 20993471 0.99
tpcds_q72/duckdb:vortex-file-compressed 173744327 173129853 1.00
tpcds_q73/duckdb:vortex-file-compressed 22932715 22593344 1.02
tpcds_q74/duckdb:vortex-file-compressed 77994797 83221765 0.94
tpcds_q75/duckdb:vortex-file-compressed 58509966 59558110 0.98
tpcds_q76/duckdb:vortex-file-compressed 🚀 17517250 19946416 0.88
tpcds_q77/duckdb:vortex-file-compressed 23365569 25545140 0.91
tpcds_q78/duckdb:vortex-file-compressed 75118063 76696263 0.98
tpcds_q79/duckdb:vortex-file-compressed 31586363 32596918 0.97
tpcds_q80/duckdb:vortex-file-compressed 47446938 48563960 0.98
tpcds_q81/duckdb:vortex-file-compressed 🚨 42805368 28799899 1.49
tpcds_q82/duckdb:vortex-file-compressed 16916326 17286454 0.98
tpcds_q83/duckdb:vortex-file-compressed 22912350 24604963 0.93
tpcds_q84/duckdb:vortex-file-compressed 🚨 33161116 19985909 1.66
tpcds_q85/duckdb:vortex-file-compressed 43829802 44361471 0.99
tpcds_q86/duckdb:vortex-file-compressed 15909906 16278940 0.98
tpcds_q87/duckdb:vortex-file-compressed 🚨 46952382 40546025 1.16
tpcds_q88/duckdb:vortex-file-compressed 32888911 33997016 0.97
tpcds_q89/duckdb:vortex-file-compressed 22487632 22752434 0.99
tpcds_q90/duckdb:vortex-file-compressed 12180728 12741249 0.96
tpcds_q91/duckdb:vortex-file-compressed 30614028 30113524 1.02
tpcds_q92/duckdb:vortex-file-compressed 🚀 20092964 24737730 0.81
tpcds_q93/duckdb:vortex-file-compressed 26614599 28419142 0.94
tpcds_q94/duckdb:vortex-file-compressed 22156496 22741503 0.97
tpcds_q95/duckdb:vortex-file-compressed 137281694 140323847 0.98
tpcds_q96/duckdb:vortex-file-compressed 12914728 12689119 1.02
tpcds_q97/duckdb:vortex-file-compressed 39657601 37652452 1.05
tpcds_q98/duckdb:vortex-file-compressed 🚨 47030140 18093408 2.60
tpcds_q99/duckdb:vortex-file-compressed 27051710 28147140 0.96
duckdb / vortex-compact (0.976x ➖, 3↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:vortex-compact 23961547 23775906 1.01
tpcds_q02/duckdb:vortex-compact 41047524 39593000 1.04
tpcds_q03/duckdb:vortex-compact 57237659 57256936 1.00
tpcds_q04/duckdb:vortex-compact 112355777 124735553 0.90
tpcds_q05/duckdb:vortex-compact 51553082 53579237 0.96
tpcds_q06/duckdb:vortex-compact 40102125 39856745 1.01
tpcds_q07/duckdb:vortex-compact 34184385 33858726 1.01
tpcds_q08/duckdb:vortex-compact 44335839 42648784 1.04
tpcds_q09/duckdb:vortex-compact 57129927 58587123 0.98
tpcds_q10/duckdb:vortex-compact 60631308 62456965 0.97
tpcds_q11/duckdb:vortex-compact 69177254 74060256 0.93
tpcds_q12/duckdb:vortex-compact 23000348 23009062 1.00
tpcds_q13/duckdb:vortex-compact 58457370 57524698 1.02
tpcds_q14/duckdb:vortex-compact 136773166 129576580 1.06
tpcds_q15/duckdb:vortex-compact 30814228 30707227 1.00
tpcds_q16/duckdb:vortex-compact 29171818 29957669 0.97
tpcds_q17/duckdb:vortex-compact 55515385 54853100 1.01
tpcds_q18/duckdb:vortex-compact 57250132 58348353 0.98
tpcds_q19/duckdb:vortex-compact 50573058 49973023 1.01
tpcds_q20/duckdb:vortex-compact 19504209 19993959 0.98
tpcds_q21/duckdb:vortex-compact 18761356 18879097 0.99
tpcds_q22/duckdb:vortex-compact 75676800 75257405 1.01
tpcds_q23/duckdb:vortex-compact 123157096 122858812 1.00
tpcds_q24/duckdb:vortex-compact 61384768 62321959 0.98
tpcds_q25/duckdb:vortex-compact 81832530 80809732 1.01
tpcds_q26/duckdb:vortex-compact 50114884 54305187 0.92
tpcds_q27/duckdb:vortex-compact 70190525 66877163 1.05
tpcds_q28/duckdb:vortex-compact 84093882 83681123 1.00
tpcds_q29/duckdb:vortex-compact 53000415 53803240 0.99
tpcds_q30/duckdb:vortex-compact 30500773 27850987 1.10
tpcds_q31/duckdb:vortex-compact 45621980 45924564 0.99
tpcds_q32/duckdb:vortex-compact 21986208 22509276 0.98
tpcds_q33/duckdb:vortex-compact 35310848 34709968 1.02
tpcds_q34/duckdb:vortex-compact 36988374 37852432 0.98
tpcds_q35/duckdb:vortex-compact 79551207 82018932 0.97
tpcds_q36/duckdb:vortex-compact 41543771 41641518 1.00
tpcds_q37/duckdb:vortex-compact 23670390 24167722 0.98
tpcds_q38/duckdb:vortex-compact 🚀 43440769 48475044 0.90
tpcds_q39/duckdb:vortex-compact 36990147 38303736 0.97
tpcds_q40/duckdb:vortex-compact 24292717 24844969 0.98
tpcds_q41/duckdb:vortex-compact 15285534 16513116 0.93
tpcds_q42/duckdb:vortex-compact 22204604 22010702 1.01
tpcds_q43/duckdb:vortex-compact 36155658 35264641 1.03
tpcds_q44/duckdb:vortex-compact 28891519 28958197 1.00
tpcds_q45/duckdb:vortex-compact 39125067 38205570 1.02
tpcds_q46/duckdb:vortex-compact 69426227 72914392 0.95
tpcds_q47/duckdb:vortex-compact 62483325 63205267 0.99
tpcds_q48/duckdb:vortex-compact 52359605 50975396 1.03
tpcds_q49/duckdb:vortex-compact 54523147 54896719 0.99
tpcds_q50/duckdb:vortex-compact 46089743 47538298 0.97
tpcds_q51/duckdb:vortex-compact 107120458 107178102 1.00
tpcds_q52/duckdb:vortex-compact 22155419 22287296 0.99
tpcds_q53/duckdb:vortex-compact 39424103 37955782 1.04
tpcds_q54/duckdb:vortex-compact 40098583 42586969 0.94
tpcds_q55/duckdb:vortex-compact 22403155 22462151 1.00
tpcds_q56/duckdb:vortex-compact 34893261 35349259 0.99
tpcds_q57/duckdb:vortex-compact 42525968 45008260 0.94
tpcds_q58/duckdb:vortex-compact 43554400 46104093 0.94
tpcds_q59/duckdb:vortex-compact 88100463 93517011 0.94
tpcds_q60/duckdb:vortex-compact 38236083 38934135 0.98
tpcds_q61/duckdb:vortex-compact 62743100 63414688 0.99
tpcds_q62/duckdb:vortex-compact 26669724 24811692 1.07
tpcds_q63/duckdb:vortex-compact 37989694 39098460 0.97
tpcds_q64/duckdb:vortex-compact 116457747 122357091 0.95
tpcds_q65/duckdb:vortex-compact 32073109 32999027 0.97
tpcds_q66/duckdb:vortex-compact 38217292 40471055 0.94
tpcds_q67/duckdb:vortex-compact 154391287 156910744 0.98
tpcds_q68/duckdb:vortex-compact 61834183 65760432 0.94
tpcds_q69/duckdb:vortex-compact 60706249 66731846 0.91
tpcds_q70/duckdb:vortex-compact 36865939 36329381 1.01
tpcds_q71/duckdb:vortex-compact 33859558 34916408 0.97
tpcds_q72/duckdb:vortex-compact 193394034 196969259 0.98
tpcds_q73/duckdb:vortex-compact 37232561 37935279 0.98
tpcds_q74/duckdb:vortex-compact 82290390 83604728 0.98
tpcds_q75/duckdb:vortex-compact 72723845 75135683 0.97
tpcds_q76/duckdb:vortex-compact 32950112 35560232 0.93
tpcds_q77/duckdb:vortex-compact 🚀 41289030 46650795 0.89
tpcds_q78/duckdb:vortex-compact 92784639 91872606 1.01
tpcds_q79/duckdb:vortex-compact 50771784 55135258 0.92
tpcds_q80/duckdb:vortex-compact 81094353 82422073 0.98
tpcds_q81/duckdb:vortex-compact 33850533 37609024 0.90
tpcds_q82/duckdb:vortex-compact 26078600 26976932 0.97
tpcds_q83/duckdb:vortex-compact 32236690 34173975 0.94
tpcds_q84/duckdb:vortex-compact 26199919 27169037 0.96
tpcds_q85/duckdb:vortex-compact 56454033 61030377 0.93
tpcds_q86/duckdb:vortex-compact 22521678 22990086 0.98
tpcds_q87/duckdb:vortex-compact 🚀 47079735 53533284 0.88
tpcds_q88/duckdb:vortex-compact 38698447 41706863 0.93
tpcds_q89/duckdb:vortex-compact 37399519 38947979 0.96
tpcds_q90/duckdb:vortex-compact 14253316 15326160 0.93
tpcds_q91/duckdb:vortex-compact 49679739 53820831 0.92
tpcds_q92/duckdb:vortex-compact 48300500 48004520 1.01
tpcds_q93/duckdb:vortex-compact 31665159 31256109 1.01
tpcds_q94/duckdb:vortex-compact 30940720 34035215 0.91
tpcds_q95/duckdb:vortex-compact 160295432 149194212 1.07
tpcds_q96/duckdb:vortex-compact 17709565 19254699 0.92
tpcds_q97/duckdb:vortex-compact 43601579 47188754 0.92
tpcds_q98/duckdb:vortex-compact 28810241 30467979 0.95
tpcds_q99/duckdb:vortex-compact 31067140 34027205 0.91
duckdb / parquet (1.005x ➖, 2↑ 7↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:parquet 27720805 27824737 1.00
tpcds_q02/duckdb:parquet 23151747 23721736 0.98
tpcds_q03/duckdb:parquet 11990557 11841246 1.01
tpcds_q04/duckdb:parquet 165595773 169937570 0.97
tpcds_q05/duckdb:parquet 27639082 28432760 0.97
tpcds_q06/duckdb:parquet 27999888 28328838 0.99
tpcds_q07/duckdb:parquet 21446836 20637130 1.04
tpcds_q08/duckdb:parquet 26487376 26503399 1.00
tpcds_q09/duckdb:parquet 39562448 39842034 0.99
tpcds_q10/duckdb:parquet 33184492 33648984 0.99
tpcds_q11/duckdb:parquet 86992962 91247294 0.95
tpcds_q12/duckdb:parquet 14880790 14493656 1.03
tpcds_q13/duckdb:parquet 33499725 32308643 1.04
tpcds_q14/duckdb:parquet 98849124 102201091 0.97
tpcds_q15/duckdb:parquet 30221090 31410115 0.96
tpcds_q16/duckdb:parquet 21669980 21337335 1.02
tpcds_q17/duckdb:parquet 37355357 37252326 1.00
tpcds_q18/duckdb:parquet 45340433 45345536 1.00
tpcds_q19/duckdb:parquet 28488389 28956271 0.98
tpcds_q20/duckdb:parquet 15399415 15684295 0.98
tpcds_q21/duckdb:parquet 10752989 10730367 1.00
tpcds_q22/duckdb:parquet 68728729 66744810 1.03
tpcds_q23/duckdb:parquet 78719960 83912332 0.94
tpcds_q24/duckdb:parquet 45093962 44774440 1.01
tpcds_q25/duckdb:parquet 32518396 33192062 0.98
tpcds_q26/duckdb:parquet 35618306 35028795 1.02
tpcds_q27/duckdb:parquet 49295063 49467582 1.00
tpcds_q28/duckdb:parquet 39314868 37118472 1.06
tpcds_q29/duckdb:parquet 🚨 45660153 36229515 1.26
tpcds_q30/duckdb:parquet 🚨 43266176 35332096 1.22
tpcds_q31/duckdb:parquet 🚨 30681051 23369491 1.31
tpcds_q32/duckdb:parquet 🚨 12092696 10785824 1.12
tpcds_q33/duckdb:parquet 20694675 20474743 1.01
tpcds_q34/duckdb:parquet 21173745 20264185 1.04
tpcds_q35/duckdb:parquet 🚨 61047324 55045982 1.11
tpcds_q36/duckdb:parquet 🚨 22216582 20051757 1.11
tpcds_q37/duckdb:parquet 13021893 12054080 1.08
tpcds_q38/duckdb:parquet 34406439 33631325 1.02
tpcds_q39/duckdb:parquet 29266498 31764926 0.92
tpcds_q40/duckdb:parquet 16597976 17806101 0.93
tpcds_q41/duckdb:parquet 7569840 7562035 1.00
tpcds_q42/duckdb:parquet 10174599 10128308 1.00
tpcds_q43/duckdb:parquet 16141447 15254311 1.06
tpcds_q44/duckdb:parquet 22956915 22175739 1.04
tpcds_q45/duckdb:parquet 27680976 25563008 1.08
tpcds_q46/duckdb:parquet 46061594 45240594 1.02
tpcds_q47/duckdb:parquet 43764991 44327913 0.99
tpcds_q48/duckdb:parquet 29143668 29071428 1.00
tpcds_q49/duckdb:parquet 25077062 24923877 1.01
tpcds_q50/duckdb:parquet 23652573 23768526 1.00
tpcds_q51/duckdb:parquet 94861787 95734366 0.99
tpcds_q52/duckdb:parquet 🚀 10464785 11661622 0.90
tpcds_q53/duckdb:parquet 14802099 15163983 0.98
tpcds_q54/duckdb:parquet 24730381 25698831 0.96
tpcds_q55/duckdb:parquet 9810498 10181654 0.96
tpcds_q56/duckdb:parquet 20384406 21399418 0.95
tpcds_q57/duckdb:parquet 34226171 34904661 0.98
tpcds_q58/duckdb:parquet 21927308 23136099 0.95
tpcds_q59/duckdb:parquet 34936245 35265667 0.99
tpcds_q60/duckdb:parquet 21260103 21278399 1.00
tpcds_q61/duckdb:parquet 29753117 30764538 0.97
tpcds_q62/duckdb:parquet 11954167 11713875 1.02
tpcds_q63/duckdb:parquet 13723482 13944493 0.98
tpcds_q64/duckdb:parquet 78313178 74990636 1.04
tpcds_q65/duckdb:parquet 19269776 19586388 0.98
tpcds_q66/duckdb:parquet 🚨 32497349 28533144 1.14
tpcds_q67/duckdb:parquet 134305494 132907867 1.01
tpcds_q68/duckdb:parquet 36079302 36338859 0.99
tpcds_q69/duckdb:parquet 35965357 36257821 0.99
tpcds_q70/duckdb:parquet 18932647 19090084 0.99
tpcds_q71/duckdb:parquet 18979565 18788721 1.01
tpcds_q72/duckdb:parquet 164176293 166002161 0.99
tpcds_q73/duckdb:parquet 17320024 17679373 0.98
tpcds_q74/duckdb:parquet 130559855 127192276 1.03
tpcds_q75/duckdb:parquet 52981124 53260316 0.99
tpcds_q76/duckdb:parquet 19883523 19140794 1.04
tpcds_q77/duckdb:parquet 20976525 21768646 0.96
tpcds_q78/duckdb:parquet 72994957 72744269 1.00
tpcds_q79/duckdb:parquet 26603401 27157047 0.98
tpcds_q80/duckdb:parquet 39618572 40624246 0.98
tpcds_q81/duckdb:parquet 30865896 29487460 1.05
tpcds_q82/duckdb:parquet 13217474 13873283 0.95
tpcds_q83/duckdb:parquet 16042593 16271465 0.99
tpcds_q84/duckdb:parquet 19998018 18627415 1.07
tpcds_q85/duckdb:parquet 38887810 39431288 0.99
tpcds_q86/duckdb:parquet 13146953 12074485 1.09
tpcds_q87/duckdb:parquet 36787435 37030796 0.99
tpcds_q88/duckdb:parquet 48911099 47535124 1.03
tpcds_q89/duckdb:parquet 17340119 15883000 1.09
tpcds_q90/duckdb:parquet 7860587 7432366 1.06
tpcds_q91/duckdb:parquet 22442039 23898131 0.94
tpcds_q92/duckdb:parquet 11245007 11912071 0.94
tpcds_q93/duckdb:parquet 27818856 30629469 0.91
tpcds_q94/duckdb:parquet 15510085 16189367 0.96
tpcds_q95/duckdb:parquet 🚀 117323834 146025338 0.80
tpcds_q96/duckdb:parquet 8786147 8661752 1.01
tpcds_q97/duckdb:parquet 33861014 35846679 0.94
tpcds_q98/duckdb:parquet 17089614 18668501 0.92
tpcds_q99/duckdb:parquet 19491855 19924068 0.98
duckdb / duckdb (0.920x ➖, 30↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpcds_q01/duckdb:duckdb 20782461 20881952 1.00
tpcds_q02/duckdb:duckdb 18567406 19682196 0.94
tpcds_q03/duckdb:duckdb 🚀 8364362 9320502 0.90
tpcds_q04/duckdb:duckdb 177612246 176275781 1.01
tpcds_q05/duckdb:duckdb 19047904 20650223 0.92
tpcds_q06/duckdb:duckdb 22804066 24719534 0.92
tpcds_q07/duckdb:duckdb 41514795 42119350 0.99
tpcds_q08/duckdb:duckdb 121773639 122245048 1.00
tpcds_q09/duckdb:duckdb 20057047 20948251 0.96
tpcds_q10/duckdb:duckdb 24352949 25901317 0.94
tpcds_q11/duckdb:duckdb 94265429 94088063 1.00
tpcds_q12/duckdb:duckdb 🚀 10959463 13369943 0.82
tpcds_q13/duckdb:duckdb 23892574 26204083 0.91
tpcds_q14/duckdb:duckdb 91833886 93386004 0.98
tpcds_q15/duckdb:duckdb 24505805 26759216 0.92
tpcds_q16/duckdb:duckdb 🚀 17279899 19954036 0.87
tpcds_q17/duckdb:duckdb 🚀 21108767 24044256 0.88
tpcds_q18/duckdb:duckdb 45341777 48836467 0.93
tpcds_q19/duckdb:duckdb 🚀 16874060 18926982 0.89
tpcds_q20/duckdb:duckdb 🚀 11340447 13274615 0.85
tpcds_q21/duckdb:duckdb 7047785 7220356 0.98
tpcds_q22/duckdb:duckdb 66943313 67540843 0.99
tpcds_q23/duckdb:duckdb 80014756 82315338 0.97
tpcds_q24/duckdb:duckdb 24373251 26367320 0.92
tpcds_q25/duckdb:duckdb 🚀 16458171 19018818 0.87
tpcds_q26/duckdb:duckdb 🚀 23495661 29377166 0.80
tpcds_q27/duckdb:duckdb 38830318 42425396 0.92
tpcds_q28/duckdb:duckdb 21629977 22464752 0.96
tpcds_q29/duckdb:duckdb 🚀 21180637 23652719 0.90
tpcds_q30/duckdb:duckdb 🚀 27646779 31202882 0.89
tpcds_q31/duckdb:duckdb 🚀 47510941 53051531 0.90
tpcds_q32/duckdb:duckdb 🚀 7034503 8334555 0.84
tpcds_q33/duckdb:duckdb 🚀 12691588 14732083 0.86
tpcds_q34/duckdb:duckdb 🚀 14748273 16834389 0.88
tpcds_q35/duckdb:duckdb 31398408 34487445 0.91
tpcds_q36/duckdb:duckdb 71806456 76107780 0.94
tpcds_q37/duckdb:duckdb 7660710 8366245 0.92
tpcds_q38/duckdb:duckdb 32468791 33168165 0.98
tpcds_q39/duckdb:duckdb 26295787 26537452 0.99
tpcds_q40/duckdb:duckdb 🚀 12901181 15456511 0.83
tpcds_q41/duckdb:duckdb 🚀 8567439 9794758 0.87
tpcds_q42/duckdb:duckdb 🚀 6551886 7379821 0.89
tpcds_q43/duckdb:duckdb 11493968 12472702 0.92
tpcds_q44/duckdb:duckdb 13644039 14354250 0.95
tpcds_q45/duckdb:duckdb 18012040 18660453 0.97
tpcds_q46/duckdb:duckdb 37394573 41371848 0.90
tpcds_q47/duckdb:duckdb 39611406 43821026 0.90
tpcds_q48/duckdb:duckdb 🚀 21552632 24443089 0.88
tpcds_q49/duckdb:duckdb 16919647 18457398 0.92
tpcds_q50/duckdb:duckdb 14705591 15651321 0.94
tpcds_q51/duckdb:duckdb 90028814 96929868 0.93
tpcds_q52/duckdb:duckdb 7170572 7937111 0.90
tpcds_q53/duckdb:duckdb 13205944 14361724 0.92
tpcds_q54/duckdb:duckdb 16480447 18262245 0.90
tpcds_q55/duckdb:duckdb 🚀 6828089 7767269 0.88
tpcds_q56/duckdb:duckdb 🚀 13299197 15083900 0.88
tpcds_q57/duckdb:duckdb 32819617 33135680 0.99
tpcds_q58/duckdb:duckdb 12183196 13494433 0.90
tpcds_q59/duckdb:duckdb 34755106 37702960 0.92
tpcds_q60/duckdb:duckdb 14588516 15487165 0.94
tpcds_q61/duckdb:duckdb 14513125 15837144 0.92
tpcds_q62/duckdb:duckdb 🚀 9279482 10635920 0.87
tpcds_q63/duckdb:duckdb 🚀 12069976 13530661 0.89
tpcds_q64/duckdb:duckdb 🚀 51962008 61169528 0.85
tpcds_q65/duckdb:duckdb 🚀 32542311 36596086 0.89
tpcds_q66/duckdb:duckdb 25353338 27966690 0.91
tpcds_q67/duckdb:duckdb 129979696 143739535 0.90
tpcds_q68/duckdb:duckdb 25278624 27016447 0.94
tpcds_q69/duckdb:duckdb 25473112 27660873 0.92
tpcds_q70/duckdb:duckdb 🚀 14698255 16345228 0.90
tpcds_q71/duckdb:duckdb 🚀 12408227 13877706 0.89
tpcds_q72/duckdb:duckdb 42849694 47153269 0.91
tpcds_q73/duckdb:duckdb 10589911 11530732 0.92
tpcds_q74/duckdb:duckdb 144348182 149173977 0.97
tpcds_q75/duckdb:duckdb 42027756 45645436 0.92
tpcds_q76/duckdb:duckdb 11417718 12399676 0.92
tpcds_q77/duckdb:duckdb 🚀 12053964 13702131 0.88
tpcds_q78/duckdb:duckdb 62417276 68023074 0.92
tpcds_q79/duckdb:duckdb 18732713 20186605 0.93
tpcds_q80/duckdb:duckdb 27417491 30153608 0.91
tpcds_q81/duckdb:duckdb 🚀 36215603 43491160 0.83
tpcds_q82/duckdb:duckdb 🚀 7847120 9742256 0.81
tpcds_q83/duckdb:duckdb 🚀 8917619 10791006 0.83
tpcds_q84/duckdb:duckdb 13789113 14604325 0.94
tpcds_q85/duckdb:duckdb 24020384 25399826 0.95
tpcds_q86/duckdb:duckdb 10332296 11104455 0.93
tpcds_q87/duckdb:duckdb 34127650 33042646 1.03
tpcds_q88/duckdb:duckdb 26228661 26007431 1.01
tpcds_q89/duckdb:duckdb 14866718 14620337 1.02
tpcds_q90/duckdb:duckdb 5357303 5835133 0.92
tpcds_q91/duckdb:duckdb 12691713 13380483 0.95
tpcds_q92/duckdb:duckdb 8380981 9120019 0.92
tpcds_q93/duckdb:duckdb 21495021 23585001 0.91
tpcds_q94/duckdb:duckdb 12501384 13214821 0.95
tpcds_q95/duckdb:duckdb 111497784 114259619 0.98
tpcds_q96/duckdb:duckdb 4591928 4692791 0.98
tpcds_q97/duckdb:duckdb 30266782 31335324 0.97
tpcds_q98/duckdb:duckdb 13489918 13957951 0.97
tpcds_q99/duckdb:duckdb 16198907 16961809 0.96
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:vortex-compact +1.3% -3.3% +4.7% +25.5% ➖ noise
1 datafusion:vortex-file-compressed +0.6% -3.3% +4.0% +23.5% ➖ noise
1 duckdb:duckdb -0.5% -3.3% +2.9% +24.3% ➖ noise
1 duckdb:vortex-compact +0.8% -3.3% +4.2% +24.4% ➖ noise
1 duckdb:vortex-file-compressed -9.5% -3.3% -6.4% +32.5% ➖ noise
2 datafusion:vortex-compact +0.1% -1.1% +1.2% +11.6% ➖ noise
2 datafusion:vortex-file-compressed -10.6% -1.1% -9.6% +11.6% ➖ noise
2 duckdb:duckdb -5.7% -1.1% -4.6% +12.5% ➖ noise
2 duckdb:vortex-compact +3.7% -1.1% +4.8% +32.4% ➖ noise
2 duckdb:vortex-file-compressed -3.3% -1.1% -2.2% +29.9% ➖ noise
3 datafusion:vortex-compact -5.1% -1.3% -3.9% +11.6% ➖ noise
3 datafusion:vortex-file-compressed +5.6% -1.3% +6.9% +11.6% ➖ noise
3 duckdb:duckdb -10.3% -1.3% -9.1% +14.2% ➖ noise
3 duckdb:vortex-compact -0.0% -1.3% +1.2% +11.6% ➖ noise
3 duckdb:vortex-file-compressed +0.2% -1.3% +1.5% +11.6% ➖ noise
4 datafusion:vortex-compact +7.1% -2.4% +9.7% +11.6% ➖ noise
4 datafusion:vortex-file-compressed +1.3% -2.4% +3.8% +11.6% ➖ noise
4 duckdb:duckdb +0.8% -2.4% +3.2% +11.6% ➖ noise
4 duckdb:vortex-compact -9.9% -2.4% -7.7% +12.5% ➖ noise
4 duckdb:vortex-file-compressed +83.9% -2.4% +88.3% +11.6% 🚨 regression
5 datafusion:vortex-compact +6.7% -4.6% +11.8% +11.6% 🚨 regression
5 datafusion:vortex-file-compressed -5.3% -4.6% -0.7% +11.6% ➖ noise
5 duckdb:duckdb -7.8% -4.6% -3.3% +11.6% ➖ noise
5 duckdb:vortex-compact -3.8% -4.6% +0.8% +11.6% ➖ noise
5 duckdb:vortex-file-compressed +3.0% -4.6% +8.0% +11.6% ➖ noise
6 datafusion:vortex-compact -2.5% -2.6% +0.1% +11.6% ➖ noise
6 datafusion:vortex-file-compressed -41.8% -2.6% -40.2% +17.9% ✅ faster
6 duckdb:duckdb -7.7% -2.6% -5.3% +13.9% ➖ noise
6 duckdb:vortex-compact +0.6% -2.6% +3.3% +11.6% ➖ noise
6 duckdb:vortex-file-compressed +11.4% -2.6% +14.4% +11.6% 🚨 regression
7 datafusion:vortex-compact +5.1% +0.8% +4.3% +12.1% ➖ noise
7 datafusion:vortex-file-compressed -7.3% +0.8% -8.0% +11.6% ➖ noise
7 duckdb:duckdb -1.4% +0.8% -2.2% +16.9% ➖ noise
7 duckdb:vortex-compact +1.0% +0.8% +0.2% +11.6% ➖ noise
7 duckdb:vortex-file-compressed +7.7% +0.8% +6.9% +11.6% ➖ noise
8 datafusion:vortex-compact -1.9% -1.3% -0.7% +11.6% ➖ noise
8 datafusion:vortex-file-compressed -2.4% -1.3% -1.2% +12.7% ➖ noise
8 duckdb:duckdb -0.4% -1.3% +0.9% +11.6% ➖ noise
8 duckdb:vortex-compact +4.0% -1.3% +5.3% +12.6% ➖ noise
8 duckdb:vortex-file-compressed -6.9% -1.3% -5.7% +25.8% ➖ noise
9 datafusion:vortex-compact -3.5% +0.2% -3.6% +11.6% ➖ noise
9 datafusion:vortex-file-compressed -1.5% +0.2% -1.7% +11.6% ➖ noise
9 duckdb:duckdb -4.3% +0.2% -4.4% +11.6% ➖ noise
9 duckdb:vortex-compact -2.5% +0.2% -2.6% +11.6% ➖ noise
9 duckdb:vortex-file-compressed -1.6% +0.2% -1.8% +11.6% ➖ noise
10 datafusion:vortex-compact -1.0% -0.8% -0.2% +11.6% ➖ noise
10 datafusion:vortex-file-compressed -8.1% -0.8% -7.3% +11.6% ➖ noise
10 duckdb:duckdb -6.0% -0.8% -5.2% +11.6% ➖ noise
10 duckdb:vortex-compact -2.9% -0.8% -2.1% +11.6% ➖ noise
10 duckdb:vortex-file-compressed +2.0% -0.8% +2.8% +13.6% ➖ noise
11 datafusion:vortex-compact -2.4% -2.9% +0.5% +11.6% ➖ noise
11 datafusion:vortex-file-compressed +0.6% -2.9% +3.7% +11.6% ➖ noise
11 duckdb:duckdb +0.2% -2.9% +3.2% +11.6% ➖ noise
11 duckdb:vortex-compact -6.6% -2.9% -3.8% +11.6% ➖ noise
11 duckdb:vortex-file-compressed +122.5% -2.9% +129.2% +12.8% 🚨 regression
12 datafusion:vortex-compact +9.5% +0.2% +9.2% +18.1% ➖ noise
12 datafusion:vortex-file-compressed +163.2% +0.2% +162.6% +11.6% 🚨 regression
12 duckdb:duckdb -18.0% +0.2% -18.2% +14.2% ✅ faster
12 duckdb:vortex-compact -0.0% +0.2% -0.3% +27.2% ➖ noise
12 duckdb:vortex-file-compressed +221.6% +0.2% +220.9% +11.6% 🚨 regression
13 datafusion:vortex-compact -13.1% -0.8% -12.4% +14.4% ➖ noise
13 datafusion:vortex-file-compressed -1.8% -0.8% -1.1% +11.6% ➖ noise
13 duckdb:duckdb -8.8% -0.8% -8.1% +11.6% ➖ noise
13 duckdb:vortex-compact +1.6% -0.8% +2.4% +11.6% ➖ noise
13 duckdb:vortex-file-compressed +4.8% -0.8% +5.6% +11.6% ➖ noise
14 datafusion:vortex-compact -2.1% -1.6% -0.5% +11.6% ➖ noise
14 datafusion:vortex-file-compressed -2.0% -1.6% -0.4% +11.6% ➖ noise
14 duckdb:duckdb -1.7% -1.6% -0.0% +11.6% ➖ noise
14 duckdb:vortex-compact +5.6% -1.6% +7.3% +11.6% ➖ noise
14 duckdb:vortex-file-compressed -1.2% -1.6% +0.5% +11.7% ➖ noise
15 datafusion:vortex-compact +0.3% -4.0% +4.5% +11.6% ➖ noise
15 datafusion:vortex-file-compressed -3.6% -4.0% +0.5% +13.5% ➖ noise
15 duckdb:duckdb -8.4% -4.0% -4.6% +11.6% ➖ noise
15 duckdb:vortex-compact +0.3% -4.0% +4.5% +14.0% ➖ noise
15 duckdb:vortex-file-compressed +1.3% -4.0% +5.6% +11.6% ➖ noise
16 datafusion:vortex-compact +0.8% -9.0% +10.8% +12.4% ➖ noise
16 datafusion:vortex-file-compressed -5.2% -9.0% +4.1% +14.9% ➖ noise
16 duckdb:duckdb -13.4% -9.0% -4.9% +13.3% ➖ noise
16 duckdb:vortex-compact -2.6% -9.0% +7.0% +11.6% ➖ noise
16 duckdb:vortex-file-compressed -1.4% -9.0% +8.3% +11.6% ➖ noise
17 datafusion:vortex-compact +3.7% -2.8% +6.7% +11.6% ➖ noise
17 datafusion:vortex-file-compressed -9.4% -2.8% -6.8% +11.6% ➖ noise
17 duckdb:duckdb -12.2% -2.8% -9.7% +11.6% ➖ noise
17 duckdb:vortex-compact +1.2% -2.8% +4.1% +11.6% ➖ noise
17 duckdb:vortex-file-compressed +2.3% -2.8% +5.2% +11.6% ➖ noise
18 datafusion:vortex-compact -0.1% -0.3% +0.2% +11.6% ➖ noise
18 datafusion:vortex-file-compressed +1.3% -0.3% +1.7% +11.6% ➖ noise
18 duckdb:duckdb -7.2% -0.3% -6.9% +11.6% ➖ noise
18 duckdb:vortex-compact -1.9% -0.3% -1.6% +11.6% ➖ noise
18 duckdb:vortex-file-compressed +4.2% -0.3% +4.5% +11.6% ➖ noise
19 datafusion:vortex-compact -0.3% -0.9% +0.6% +17.9% ➖ noise
19 datafusion:vortex-file-compressed +3.8% -0.9% +4.8% +12.9% ➖ noise
19 duckdb:duckdb -10.8% -0.9% -10.1% +11.6% ➖ noise
19 duckdb:vortex-compact +1.2% -0.9% +2.1% +11.6% ➖ noise
19 duckdb:vortex-file-compressed +2.4% -0.9% +3.3% +11.6% ➖ noise
20 datafusion:vortex-compact +2.1% +0.2% +1.9% +12.3% ➖ noise
20 datafusion:vortex-file-compressed +140.2% +0.2% +139.7% +11.6% 🚨 regression
20 duckdb:duckdb -14.6% +0.2% -14.7% +11.6% ✅ faster
20 duckdb:vortex-compact -2.4% +0.2% -2.6% +17.5% ➖ noise
20 duckdb:vortex-file-compressed +203.1% +0.2% +202.5% +11.6% 🚨 regression
21 datafusion:vortex-compact -4.6% -0.5% -4.1% +11.6% ➖ noise
21 datafusion:vortex-file-compressed -6.5% -0.5% -6.0% +11.6% ➖ noise
21 duckdb:duckdb -2.4% -0.5% -1.9% +22.7% ➖ noise
21 duckdb:vortex-compact -0.6% -0.5% -0.1% +12.4% ➖ noise
21 duckdb:vortex-file-compressed -1.1% -0.5% -0.6% +11.6% ➖ noise
22 datafusion:vortex-compact -12.5% +7.2% -18.4% +19.5% ✅ faster
22 datafusion:vortex-file-compressed -18.5% +7.2% -24.0% +21.7% ✅ faster
22 duckdb:duckdb -0.9% +7.2% -7.6% +11.6% ➖ noise
22 duckdb:vortex-compact +0.6% +7.2% -6.2% +13.3% ➖ noise
22 duckdb:vortex-file-compressed +0.6% +7.2% -6.1% +12.0% ➖ noise
23 datafusion:vortex-compact +1.6% +0.4% +1.3% +11.6% ➖ noise
23 datafusion:vortex-file-compressed -11.1% +0.4% -11.4% +11.6% ✅ faster
23 duckdb:duckdb -2.8% +0.4% -3.1% +11.6% ➖ noise
23 duckdb:vortex-compact +0.2% +0.4% -0.1% +19.0% ➖ noise
23 duckdb:vortex-file-compressed +1.7% +0.4% +1.3% +14.9% ➖ noise
24 datafusion:vortex-compact +3.3% -0.9% +4.2% +11.6% ➖ noise
24 datafusion:vortex-file-compressed -9.4% -0.9% -8.6% +11.6% ➖ noise
24 duckdb:duckdb -7.6% -0.9% -6.8% +11.6% ➖ noise
24 duckdb:vortex-compact -1.5% -0.9% -0.6% +11.6% ➖ noise
24 duckdb:vortex-file-compressed -0.2% -0.9% +0.7% +11.6% ➖ noise
25 datafusion:vortex-compact +2.0% -1.5% +3.5% +13.2% ➖ noise
25 datafusion:vortex-file-compressed -5.1% -1.5% -3.7% +16.4% ➖ noise
25 duckdb:duckdb -13.5% -1.5% -12.2% +11.6% ✅ faster
25 duckdb:vortex-compact +1.3% -1.5% +2.8% +11.6% ➖ noise
25 duckdb:vortex-file-compressed -1.1% -1.5% +0.4% +11.6% ➖ noise
26 datafusion:vortex-compact +5.5% +0.5% +5.0% +11.6% ➖ noise
26 datafusion:vortex-file-compressed +3.1% +0.5% +2.6% +12.8% ➖ noise
26 duckdb:duckdb -20.0% +0.5% -20.4% +11.6% ✅ faster
26 duckdb:vortex-compact -7.7% +0.5% -8.2% +11.6% ➖ noise
26 duckdb:vortex-file-compressed +8.0% +0.5% +7.5% +15.8% ➖ noise
27 datafusion:vortex-compact +5.4% -1.2% +6.7% +14.7% ➖ noise
27 datafusion:vortex-file-compressed +8.4% -1.2% +9.6% +14.5% ➖ noise
27 duckdb:duckdb -8.5% -1.2% -7.4% +17.6% ➖ noise
27 duckdb:vortex-compact +5.0% -1.2% +6.2% +11.6% ➖ noise
27 duckdb:vortex-file-compressed +5.4% -1.2% +6.6% +16.2% ➖ noise
28 datafusion:vortex-compact +2.0% +3.0% -1.0% +11.6% ➖ noise
28 datafusion:vortex-file-compressed +0.7% +3.0% -2.2% +11.8% ➖ noise
28 duckdb:duckdb -3.7% +3.0% -6.5% +11.6% ➖ noise
28 duckdb:vortex-compact +0.5% +3.0% -2.4% +11.6% ➖ noise
28 duckdb:vortex-file-compressed +1.4% +3.0% -1.5% +11.6% ➖ noise
29 datafusion:vortex-compact +3.1% +12.2% -8.1% +11.6% ➖ noise
29 datafusion:vortex-file-compressed +5.4% +12.2% -6.0% +11.7% ➖ noise
29 duckdb:duckdb -10.5% +12.2% -20.2% +11.6% ✅ faster
29 duckdb:vortex-compact -1.5% +12.2% -12.2% +11.6% ✅ faster
29 duckdb:vortex-file-compressed +0.2% +12.2% -10.7% +11.6% ✅ faster
30 datafusion:vortex-compact +14.2% +10.8% +3.1% +19.1% ➖ noise
30 datafusion:vortex-file-compressed +1.4% +10.8% -8.5% +11.6% ➖ noise
30 duckdb:duckdb -11.4% +10.8% -20.0% +11.6% ✅ faster
30 duckdb:vortex-compact +9.5% +10.8% -1.1% +11.6% ➖ noise
30 duckdb:vortex-file-compressed +356.7% +10.8% +312.2% +11.6% 🚨 regression
31 datafusion:vortex-compact +5.2% +12.1% -6.1% +11.6% ➖ noise
31 datafusion:vortex-file-compressed -2.0% +12.1% -12.5% +11.6% ✅ faster
31 duckdb:duckdb -10.4% +12.1% -20.1% +11.6% ✅ faster
31 duckdb:vortex-compact -0.7% +12.1% -11.3% +11.6% ✅ faster
31 duckdb:vortex-file-compressed +4.5% +12.1% -6.7% +11.6% ➖ noise
32 datafusion:vortex-compact +2.4% +2.2% +0.2% +14.1% ➖ noise
32 datafusion:vortex-file-compressed -10.9% +2.2% -12.7% +14.0% ✅ faster
32 duckdb:duckdb -15.6% +2.2% -17.4% +15.5% ✅ faster
32 duckdb:vortex-compact -2.3% +2.2% -4.4% +11.6% ➖ noise
32 duckdb:vortex-file-compressed -5.0% +2.2% -7.0% +29.4% ➖ noise
33 datafusion:vortex-compact +4.2% -0.9% +5.2% +11.6% ➖ noise
33 datafusion:vortex-file-compressed -7.4% -0.9% -6.6% +11.6% ➖ noise
33 duckdb:duckdb -13.9% -0.9% -13.1% +13.7% ✅ faster
33 duckdb:vortex-compact +1.7% -0.9% +2.7% +11.6% ➖ noise
33 duckdb:vortex-file-compressed +2.6% -0.9% +3.5% +13.1% ➖ noise
34 datafusion:vortex-compact +2.8% +0.1% +2.7% +15.1% ➖ noise
34 datafusion:vortex-file-compressed -9.5% +0.1% -9.7% +15.5% ➖ noise
34 duckdb:duckdb -12.4% +0.1% -12.5% +13.9% ✅ faster
34 duckdb:vortex-compact -2.3% +0.1% -2.4% +12.8% ➖ noise
34 duckdb:vortex-file-compressed +2.6% +0.1% +2.4% +11.6% ➖ noise
35 datafusion:vortex-compact +8.1% +1.5% +6.5% +11.6% ➖ noise
35 datafusion:vortex-file-compressed -9.6% +1.5% -10.9% +11.6% ✅ faster
35 duckdb:duckdb -9.0% +1.5% -10.3% +12.4% ➖ noise
35 duckdb:vortex-compact -3.0% +1.5% -4.4% +11.6% ➖ noise
35 duckdb:vortex-file-compressed -4.3% +1.5% -5.8% +11.6% ➖ noise
36 datafusion:vortex-compact +4.6% +2.8% +1.8% +11.6% ➖ noise
36 datafusion:vortex-file-compressed -7.5% +2.8% -9.9% +11.6% ➖ noise
36 duckdb:duckdb -5.7% +2.8% -8.2% +11.6% ➖ noise
36 duckdb:vortex-compact -0.2% +2.8% -2.9% +12.4% ➖ noise
36 duckdb:vortex-file-compressed -3.2% +2.8% -5.8% +11.6% ➖ noise
37 datafusion:vortex-compact +7.0% +2.8% +4.1% +11.6% ➖ noise
37 datafusion:vortex-file-compressed -13.9% +2.8% -16.3% +11.6% ✅ faster
37 duckdb:duckdb -8.4% +2.8% -10.9% +12.2% ✅ faster
37 duckdb:vortex-compact -2.1% +2.8% -4.7% +11.6% ➖ noise
37 duckdb:vortex-file-compressed +2.2% +2.8% -0.6% +14.0% ➖ noise
38 datafusion:vortex-compact +0.3% -3.3% +3.7% +12.0% ➖ noise
38 datafusion:vortex-file-compressed -10.0% -3.3% -6.9% +11.6% ➖ noise
38 duckdb:duckdb -2.1% -3.3% +1.2% +18.0% ➖ noise
38 duckdb:vortex-compact -10.4% -3.3% -7.3% +13.3% ➖ noise
38 duckdb:vortex-file-compressed +22.7% -3.3% +26.9% +17.0% 🚨 regression
39 datafusion:vortex-compact +0.6% -4.8% +5.7% +12.1% ➖ noise
39 datafusion:vortex-file-compressed -13.7% -4.8% -9.3% +11.6% ➖ noise
39 duckdb:duckdb -0.9% -4.8% +4.1% +12.1% ➖ noise
39 duckdb:vortex-compact -3.4% -4.8% +1.5% +18.8% ➖ noise
39 duckdb:vortex-file-compressed -1.2% -4.8% +3.8% +15.6% ➖ noise
40 datafusion:vortex-compact +4.0% -1.7% +5.8% +11.6% ➖ noise
40 datafusion:vortex-file-compressed -8.9% -1.7% -7.3% +11.6% ➖ noise
40 duckdb:duckdb -16.5% -1.7% -15.1% +12.6% ✅ faster
40 duckdb:vortex-compact -2.2% -1.7% -0.5% +11.8% ➖ noise
40 duckdb:vortex-file-compressed -8.5% -1.7% -7.0% +12.4% ➖ noise
41 datafusion:vortex-compact +6.6% +0.3% +6.3% +11.6% ➖ noise
41 datafusion:vortex-file-compressed -8.1% +0.3% -8.4% +11.6% ➖ noise
41 duckdb:duckdb -12.5% +0.3% -12.8% +11.6% ✅ faster
41 duckdb:vortex-compact -7.4% +0.3% -7.8% +11.6% ➖ noise
41 duckdb:vortex-file-compressed +6.2% +0.3% +5.8% +12.1% ➖ noise
42 datafusion:vortex-compact +4.4% +0.4% +4.0% +11.6% ➖ noise
42 datafusion:vortex-file-compressed -13.9% +0.4% -14.2% +11.6% ✅ faster
42 duckdb:duckdb -11.2% +0.4% -11.6% +11.6% ✅ faster
42 duckdb:vortex-compact +0.9% +0.4% +0.4% +14.7% ➖ noise
42 duckdb:vortex-file-compressed -1.9% +0.4% -2.3% +11.6% ➖ noise
43 datafusion:vortex-compact +3.7% +2.8% +0.9% +11.6% ➖ noise
43 datafusion:vortex-file-compressed -11.2% +2.8% -13.6% +11.6% ✅ faster
43 duckdb:duckdb -7.8% +2.8% -10.3% +11.6% ➖ noise
43 duckdb:vortex-compact +2.5% +2.8% -0.2% +11.6% ➖ noise
43 duckdb:vortex-file-compressed +6.7% +2.8% +3.9% +11.6% ➖ noise
44 datafusion:vortex-compact -0.2% +6.3% -6.1% +16.6% ➖ noise
44 datafusion:vortex-file-compressed -14.0% +6.3% -19.1% +17.7% ✅ faster
44 duckdb:duckdb -4.9% +6.3% -10.6% +13.6% ➖ noise
44 duckdb:vortex-compact -0.2% +6.3% -6.1% +11.6% ➖ noise
44 duckdb:vortex-file-compressed -1.0% +6.3% -6.9% +11.6% ➖ noise
45 datafusion:vortex-compact -0.4% +1.6% -1.9% +13.4% ➖ noise
45 datafusion:vortex-file-compressed -6.8% +1.6% -8.3% +11.6% ➖ noise
45 duckdb:duckdb -3.5% +1.6% -5.0% +11.6% ➖ noise
45 duckdb:vortex-compact +2.4% +1.6% +0.8% +11.6% ➖ noise
45 duckdb:vortex-file-compressed -3.4% +1.6% -4.9% +11.6% ➖ noise
46 datafusion:vortex-compact +3.0% +0.4% +2.6% +11.6% ➖ noise
46 datafusion:vortex-file-compressed -9.6% +0.4% -9.9% +11.6% ➖ noise
46 duckdb:duckdb -9.6% +0.4% -10.0% +11.6% ➖ noise
46 duckdb:vortex-compact -4.8% +0.4% -5.2% +11.6% ➖ noise
46 duckdb:vortex-file-compressed -3.0% +0.4% -3.4% +11.6% ➖ noise
47 datafusion:vortex-compact -1.3% -0.1% -1.2% +11.6% ➖ noise
47 datafusion:vortex-file-compressed -10.2% -0.1% -10.2% +11.6% ➖ noise
47 duckdb:duckdb -9.6% -0.1% -9.5% +11.6% ➖ noise
47 duckdb:vortex-compact -1.1% -0.1% -1.1% +11.6% ➖ noise
47 duckdb:vortex-file-compressed +4.0% -0.1% +4.1% +11.6% ➖ noise
48 datafusion:vortex-compact -16.0% -2.0% -14.3% +18.2% ➖ noise
48 datafusion:vortex-file-compressed -15.5% -2.0% -13.8% +14.7% ✅ faster
48 duckdb:duckdb -11.8% -2.0% -10.1% +11.6% ➖ noise
48 duckdb:vortex-compact +2.7% -2.0% +4.8% +11.6% ➖ noise
48 duckdb:vortex-file-compressed -0.8% -2.0% +1.2% +11.6% ➖ noise
49 datafusion:vortex-compact +2.1% -0.4% +2.5% +11.6% ➖ noise
49 datafusion:vortex-file-compressed -10.7% -0.4% -10.3% +11.6% ➖ noise
49 duckdb:duckdb -8.3% -0.4% -7.9% +12.6% ➖ noise
49 duckdb:vortex-compact -0.7% -0.4% -0.2% +12.2% ➖ noise
49 duckdb:vortex-file-compressed -12.2% -0.4% -11.8% +11.6% ✅ faster
50 datafusion:vortex-compact +0.3% -0.8% +1.1% +11.6% ➖ noise
50 datafusion:vortex-file-compressed -7.6% -0.8% -6.8% +11.6% ➖ noise
50 duckdb:duckdb -6.0% -0.8% -5.3% +11.6% ➖ noise
50 duckdb:vortex-compact -3.0% -0.8% -2.3% +11.6% ➖ noise
50 duckdb:vortex-file-compressed +8.9% -0.8% +9.8% +12.2% ➖ noise
51 datafusion:vortex-compact -2.6% -0.1% -2.6% +11.6% ➖ noise
51 datafusion:vortex-file-compressed -5.0% -0.1% -4.9% +11.6% ➖ noise
51 duckdb:duckdb -7.1% -0.1% -7.1% +17.7% ➖ noise
51 duckdb:vortex-compact -0.1% -0.1% +0.0% +11.6% ➖ noise
51 duckdb:vortex-file-compressed +0.2% -0.1% +0.3% +11.6% ➖ noise
52 datafusion:vortex-compact -2.2% -4.7% +2.6% +20.5% ➖ noise
52 datafusion:vortex-file-compressed -13.9% -4.7% -9.7% +11.6% ➖ noise
52 duckdb:duckdb -9.7% -4.7% -5.2% +15.1% ➖ noise
52 duckdb:vortex-compact -0.6% -4.7% +4.3% +12.7% ➖ noise
52 duckdb:vortex-file-compressed -2.1% -4.7% +2.7% +11.6% ➖ noise
53 datafusion:vortex-compact +0.3% +0.4% -0.1% +17.7% ➖ noise
53 datafusion:vortex-file-compressed -11.6% +0.4% -11.9% +16.2% ➖ noise
53 duckdb:duckdb -8.0% +0.4% -8.4% +18.6% ➖ noise
53 duckdb:vortex-compact +3.9% +0.4% +3.5% +18.7% ➖ noise
53 duckdb:vortex-file-compressed +0.6% +0.4% +0.2% +20.3% ➖ noise
54 datafusion:vortex-compact +5.3% -3.3% +8.8% +11.6% ➖ noise
54 datafusion:vortex-file-compressed -7.8% -3.3% -4.6% +11.6% ➖ noise
54 duckdb:duckdb -9.8% -3.3% -6.7% +11.6% ➖ noise
54 duckdb:vortex-compact -5.8% -3.3% -2.6% +11.6% ➖ noise
54 duckdb:vortex-file-compressed +2.6% -3.3% +6.1% +11.6% ➖ noise
55 datafusion:vortex-compact +3.9% -0.4% +4.3% +11.6% ➖ noise
55 datafusion:vortex-file-compressed -11.6% -0.4% -11.2% +11.6% ✅ faster
55 duckdb:duckdb -12.1% -0.4% -11.7% +15.5% ➖ noise
55 duckdb:vortex-compact -0.3% -0.4% +0.2% +11.6% ➖ noise
55 duckdb:vortex-file-compressed +0.7% -0.4% +1.1% +11.6% ➖ noise
56 datafusion:vortex-compact -1.4% -4.9% +3.6% +11.6% ➖ noise
56 datafusion:vortex-file-compressed -11.9% -4.9% -7.4% +11.6% ➖ noise
56 duckdb:duckdb -11.8% -4.9% -7.3% +11.6% ➖ noise
56 duckdb:vortex-compact -1.3% -4.9% +3.8% +15.1% ➖ noise
56 duckdb:vortex-file-compressed -1.2% -4.9% +3.8% +11.6% ➖ noise
57 datafusion:vortex-compact +2.9% -3.8% +6.9% +15.3% ➖ noise
57 datafusion:vortex-file-compressed -10.7% -3.8% -7.2% +11.9% ➖ noise
57 duckdb:duckdb -1.0% -3.8% +2.9% +13.6% ➖ noise
57 duckdb:vortex-compact -5.5% -3.8% -1.8% +15.7% ➖ noise
57 duckdb:vortex-file-compressed +0.7% -3.8% +4.6% +13.1% ➖ noise
58 datafusion:vortex-compact +4.7% -4.6% +9.8% +11.6% ➖ noise
58 datafusion:vortex-file-compressed -11.5% -4.6% -7.2% +11.6% ➖ noise
58 duckdb:duckdb -9.7% -4.6% -5.3% +12.3% ➖ noise
58 duckdb:vortex-compact -5.5% -4.6% -0.9% +13.6% ➖ noise
58 duckdb:vortex-file-compressed +3.5% -4.6% +8.5% +11.6% ➖ noise
59 datafusion:vortex-compact -0.5% -1.7% +1.2% +11.6% ➖ noise
59 datafusion:vortex-file-compressed -16.4% -1.7% -15.0% +11.6% ✅ faster
59 duckdb:duckdb -7.8% -1.7% -6.2% +11.6% ➖ noise
59 duckdb:vortex-compact -5.8% -1.7% -4.2% +12.6% ➖ noise
59 duckdb:vortex-file-compressed +5.1% -1.7% +6.9% +11.6% ➖ noise
60 datafusion:vortex-compact +2.7% -0.0% +2.7% +11.6% ➖ noise
60 datafusion:vortex-file-compressed -13.6% -0.0% -13.5% +11.6% ✅ faster
60 duckdb:duckdb -5.8% -0.0% -5.8% +11.6% ➖ noise
60 duckdb:vortex-compact -1.8% -0.0% -1.8% +11.6% ➖ noise
60 duckdb:vortex-file-compressed -4.1% -0.0% -4.0% +11.6% ➖ noise
61 datafusion:vortex-compact +3.6% -1.9% +5.5% +11.6% ➖ noise
61 datafusion:vortex-file-compressed -10.5% -1.9% -8.8% +11.9% ➖ noise
61 duckdb:duckdb -8.4% -1.9% -6.6% +11.6% ➖ noise
61 duckdb:vortex-compact -1.1% -1.9% +0.8% +11.6% ➖ noise
61 duckdb:vortex-file-compressed +3.2% -1.9% +5.1% +17.0% ➖ noise
62 datafusion:vortex-compact +1.3% -10.9% +13.7% +21.6% ➖ noise
62 datafusion:vortex-file-compressed -25.1% -10.9% -16.0% +23.9% ➖ noise
62 duckdb:duckdb -12.8% -10.9% -2.1% +14.4% ➖ noise
62 duckdb:vortex-compact +7.5% -10.9% +20.7% +28.0% ➖ noise
62 duckdb:vortex-file-compressed +4.9% -10.9% +17.8% +15.3% 🚨 regression
63 datafusion:vortex-compact +3.3% -0.8% +4.1% +11.6% ➖ noise
63 datafusion:vortex-file-compressed -14.3% -0.8% -13.6% +11.6% ✅ faster
63 duckdb:duckdb -10.8% -0.8% -10.1% +11.6% ➖ noise
63 duckdb:vortex-compact -2.8% -0.8% -2.1% +11.6% ➖ noise
63 duckdb:vortex-file-compressed +2.7% -0.8% +3.5% +11.6% ➖ noise
64 datafusion:vortex-compact -1.3% +0.8% -2.1% +11.6% ➖ noise
64 datafusion:vortex-file-compressed -8.6% +0.8% -9.4% +11.6% ➖ noise
64 duckdb:duckdb -15.1% +0.8% -15.8% +11.6% ✅ faster
64 duckdb:vortex-compact -4.8% +0.8% -5.6% +11.6% ➖ noise
64 duckdb:vortex-file-compressed -2.3% +0.8% -3.1% +11.6% ➖ noise
65 datafusion:vortex-compact +1.1% -1.7% +2.9% +11.6% ➖ noise
65 datafusion:vortex-file-compressed -4.7% -1.7% -3.0% +11.6% ➖ noise
65 duckdb:duckdb -11.1% -1.7% -9.5% +12.0% ➖ noise
65 duckdb:vortex-compact -2.8% -1.7% -1.1% +11.6% ➖ noise
65 duckdb:vortex-file-compressed +5.2% -1.7% +7.1% +11.8% ➖ noise
66 datafusion:vortex-compact +6.4% +1.8% +4.5% +15.8% ➖ noise
66 datafusion:vortex-file-compressed -3.3% +1.8% -4.9% +15.5% ➖ noise
66 duckdb:duckdb -9.3% +1.8% -10.9% +15.0% ➖ noise
66 duckdb:vortex-compact -5.6% +1.8% -7.2% +14.5% ➖ noise
66 duckdb:vortex-file-compressed -0.7% +1.8% -2.4% +13.0% ➖ noise
67 datafusion:vortex-compact -0.3% -2.0% +1.7% +11.6% ➖ noise
67 datafusion:vortex-file-compressed -4.6% -2.0% -2.6% +11.6% ➖ noise
67 duckdb:duckdb -9.6% -2.0% -7.7% +11.6% ➖ noise
67 duckdb:vortex-compact -1.6% -2.0% +0.4% +11.6% ➖ noise
67 duckdb:vortex-file-compressed +1.4% -2.0% +3.5% +11.6% ➖ noise
68 datafusion:vortex-compact +3.2% -0.6% +3.9% +14.8% ➖ noise
68 datafusion:vortex-file-compressed -0.8% -0.6% -0.2% +11.6% ➖ noise
68 duckdb:duckdb -6.4% -0.6% -5.8% +11.6% ➖ noise
68 duckdb:vortex-compact -6.0% -0.6% -5.4% +11.6% ➖ noise
68 duckdb:vortex-file-compressed -3.9% -0.6% -3.3% +13.8% ➖ noise
69 datafusion:vortex-compact -0.3% +1.2% -1.4% +11.6% ➖ noise
69 datafusion:vortex-file-compressed -2.7% +1.2% -3.8% +11.6% ➖ noise
69 duckdb:duckdb -7.9% +1.2% -9.0% +13.6% ➖ noise
69 duckdb:vortex-compact -9.0% +1.2% -10.1% +11.6% ➖ noise
69 duckdb:vortex-file-compressed -0.8% +1.2% -1.9% +11.6% ➖ noise
70 datafusion:vortex-compact -0.6% +3.7% -4.2% +11.6% ➖ noise
70 datafusion:vortex-file-compressed -5.7% +3.7% -9.1% +11.6% ➖ noise
70 duckdb:duckdb -10.1% +3.7% -13.3% +11.6% ✅ faster
70 duckdb:vortex-compact +1.5% +3.7% -2.2% +15.8% ➖ noise
70 duckdb:vortex-file-compressed +2.2% +3.7% -1.4% +11.6% ➖ noise
71 datafusion:vortex-compact +0.8% +5.1% -4.1% +13.7% ➖ noise
71 datafusion:vortex-file-compressed -3.1% +5.1% -7.8% +11.6% ➖ noise
71 duckdb:duckdb -10.6% +5.1% -15.0% +11.6% ✅ faster
71 duckdb:vortex-compact -3.0% +5.1% -7.8% +12.7% ➖ noise
71 duckdb:vortex-file-compressed -1.1% +5.1% -6.0% +11.6% ➖ noise
72 datafusion:vortex-compact +3.7% +3.9% -0.2% +11.6% ➖ noise
72 datafusion:vortex-file-compressed -10.1% +3.9% -13.5% +11.6% ✅ faster
72 duckdb:duckdb -9.1% +3.9% -12.5% +11.6% ✅ faster
72 duckdb:vortex-compact -1.8% +3.9% -5.5% +11.6% ➖ noise
72 duckdb:vortex-file-compressed +0.4% +3.9% -3.4% +11.6% ➖ noise
73 datafusion:vortex-compact -1.2% +0.9% -2.1% +19.2% ➖ noise
73 datafusion:vortex-file-compressed -0.8% +0.9% -1.7% +22.3% ➖ noise
73 duckdb:duckdb -8.2% +0.9% -9.0% +12.0% ➖ noise
73 duckdb:vortex-compact -1.9% +0.9% -2.8% +11.6% ➖ noise
73 duckdb:vortex-file-compressed +1.5% +0.9% +0.6% +11.6% ➖ noise
74 datafusion:vortex-compact +1.5% +7.7% -5.7% +11.6% ➖ noise
74 datafusion:vortex-file-compressed +3.4% +7.7% -4.0% +11.6% ➖ noise
74 duckdb:duckdb -3.2% +7.7% -10.2% +11.6% ➖ noise
74 duckdb:vortex-compact -1.6% +7.7% -8.6% +14.4% ➖ noise
74 duckdb:vortex-file-compressed -6.3% +7.7% -13.0% +18.6% ➖ noise
75 datafusion:vortex-compact +4.8% -0.4% +5.2% +11.6% ➖ noise
75 datafusion:vortex-file-compressed -2.1% -0.4% -1.7% +13.2% ➖ noise
75 duckdb:duckdb -7.9% -0.4% -7.6% +11.6% ➖ noise
75 duckdb:vortex-compact -3.2% -0.4% -2.8% +11.6% ➖ noise
75 duckdb:vortex-file-compressed -1.8% -0.4% -1.4% +11.6% ➖ noise
76 datafusion:vortex-compact +4.0% +0.7% +3.3% +14.8% ➖ noise
76 datafusion:vortex-file-compressed +3.8% +0.7% +3.1% +14.5% ➖ noise
76 duckdb:duckdb -7.9% +0.7% -8.5% +27.2% ➖ noise
76 duckdb:vortex-compact -7.3% +0.7% -8.0% +21.4% ➖ noise
76 duckdb:vortex-file-compressed -12.2% +0.7% -12.8% +20.5% ➖ noise
77 datafusion:vortex-compact +2.1% -5.4% +8.0% +15.2% ➖ noise
77 datafusion:vortex-file-compressed -4.5% -5.4% +1.0% +11.6% ➖ noise
77 duckdb:duckdb -12.0% -5.4% -7.0% +14.7% ➖ noise
77 duckdb:vortex-compact -11.5% -5.4% -6.4% +14.3% ➖ noise
77 duckdb:vortex-file-compressed -8.5% -5.4% -3.3% +13.1% ➖ noise
78 datafusion:vortex-compact +0.3% -0.3% +0.6% +11.6% ➖ noise
78 datafusion:vortex-file-compressed +1.4% -0.3% +1.7% +11.6% ➖ noise
78 duckdb:duckdb -8.2% -0.3% -7.9% +11.6% ➖ noise
78 duckdb:vortex-compact +1.0% -0.3% +1.3% +11.6% ➖ noise
78 duckdb:vortex-file-compressed -2.1% -0.3% -1.7% +11.6% ➖ noise
79 datafusion:vortex-compact +0.4% +0.8% -0.3% +11.6% ➖ noise
79 datafusion:vortex-file-compressed -2.1% +0.8% -2.8% +11.6% ➖ noise
79 duckdb:duckdb -7.2% +0.8% -7.9% +11.6% ➖ noise
79 duckdb:vortex-compact -7.9% +0.8% -8.6% +16.0% ➖ noise
79 duckdb:vortex-file-compressed -3.1% +0.8% -3.8% +21.9% ➖ noise
80 datafusion:vortex-compact +0.7% -0.8% +1.5% +11.6% ➖ noise
80 datafusion:vortex-file-compressed +3.1% -0.8% +4.0% +11.6% ➖ noise
80 duckdb:duckdb -9.1% -0.8% -8.3% +11.6% ➖ noise
80 duckdb:vortex-compact -1.6% -0.8% -0.8% +11.6% ➖ noise
80 duckdb:vortex-file-compressed -2.3% -0.8% -1.5% +12.3% ➖ noise
81 datafusion:vortex-compact -2.6% +1.7% -4.2% +11.6% ➖ noise
81 datafusion:vortex-file-compressed -4.4% +1.7% -5.9% +12.2% ➖ noise
81 duckdb:duckdb -16.7% +1.7% -18.1% +11.6% ✅ faster
81 duckdb:vortex-compact -10.0% +1.7% -11.5% +11.7% ✅ faster
81 duckdb:vortex-file-compressed +48.6% +1.7% +46.2% +12.4% 🚨 regression
82 datafusion:vortex-compact +1.2% -4.3% +5.7% +11.6% ➖ noise
82 datafusion:vortex-file-compressed -3.0% -4.3% +1.3% +11.6% ➖ noise
82 duckdb:duckdb -19.5% -4.3% -15.9% +14.5% ✅ faster
82 duckdb:vortex-compact -3.3% -4.3% +1.0% +16.0% ➖ noise
82 duckdb:vortex-file-compressed -2.1% -4.3% +2.2% +11.6% ➖ noise
83 datafusion:vortex-compact +4.2% -3.3% +7.7% +12.5% ➖ noise
83 datafusion:vortex-file-compressed -3.1% -3.3% +0.2% +11.6% ➖ noise
83 duckdb:duckdb -17.4% -3.3% -14.5% +11.6% ✅ faster
83 duckdb:vortex-compact -5.7% -3.3% -2.5% +11.6% ➖ noise
83 duckdb:vortex-file-compressed -6.9% -3.3% -3.7% +11.6% ➖ noise
84 datafusion:vortex-compact +14.2% +2.5% +11.3% +11.6% ➖ noise
84 datafusion:vortex-file-compressed -5.1% +2.5% -7.5% +21.3% ➖ noise
84 duckdb:duckdb -5.6% +2.5% -7.9% +11.6% ➖ noise
84 duckdb:vortex-compact -3.6% +2.5% -5.9% +11.6% ➖ noise
84 duckdb:vortex-file-compressed +65.9% +2.5% +61.8% +11.6% 🚨 regression
85 datafusion:vortex-compact +7.6% -1.2% +8.9% +11.6% ➖ noise
85 datafusion:vortex-file-compressed -1.2% -1.2% +0.0% +11.6% ➖ noise
85 duckdb:duckdb -5.4% -1.2% -4.3% +11.6% ➖ noise
85 duckdb:vortex-compact -7.5% -1.2% -6.4% +11.6% ➖ noise
85 duckdb:vortex-file-compressed -1.2% -1.2% +0.0% +11.6% ➖ noise
86 datafusion:vortex-compact +5.4% +1.9% +3.5% +18.1% ➖ noise
86 datafusion:vortex-file-compressed +9.5% +1.9% +7.5% +16.4% ➖ noise
86 duckdb:duckdb -7.0% +1.9% -8.7% +17.3% ➖ noise
86 duckdb:vortex-compact -2.0% +1.9% -3.9% +15.0% ➖ noise
86 duckdb:vortex-file-compressed -2.3% +1.9% -4.1% +17.2% ➖ noise
87 datafusion:vortex-compact +2.5% -1.8% +4.3% +11.6% ➖ noise
87 datafusion:vortex-file-compressed +3.5% -1.8% +5.4% +11.6% ➖ noise
87 duckdb:duckdb +3.3% -1.8% +5.2% +11.6% ➖ noise
87 duckdb:vortex-compact -12.1% -1.8% -10.5% +11.6% ✅ faster
87 duckdb:vortex-file-compressed +15.8% -1.8% +17.9% +11.6% 🚨 regression
88 datafusion:vortex-compact +1.8% -0.7% +2.5% +11.6% ➖ noise
88 datafusion:vortex-file-compressed +4.3% -0.7% +5.1% +11.6% ➖ noise
88 duckdb:duckdb +0.9% -0.7% +1.6% +11.6% ➖ noise
88 duckdb:vortex-compact -7.2% -0.7% -6.5% +11.6% ➖ noise
88 duckdb:vortex-file-compressed -3.3% -0.7% -2.5% +17.5% ➖ noise
89 datafusion:vortex-compact +1.0% +2.5% -1.5% +11.6% ➖ noise
89 datafusion:vortex-file-compressed +0.4% +2.5% -2.1% +22.4% ➖ noise
89 duckdb:duckdb +1.7% +2.5% -0.8% +13.4% ➖ noise
89 duckdb:vortex-compact -4.0% +2.5% -6.4% +11.6% ➖ noise
89 duckdb:vortex-file-compressed -1.2% +2.5% -3.6% +12.4% ➖ noise
90 datafusion:vortex-compact +6.9% -4.5% +11.9% +13.3% ➖ noise
90 datafusion:vortex-file-compressed +0.9% -4.5% +5.7% +11.6% ➖ noise
90 duckdb:duckdb -8.2% -4.5% -3.9% +12.7% ➖ noise
90 duckdb:vortex-compact -7.0% -4.5% -2.6% +11.9% ➖ noise
90 duckdb:vortex-file-compressed -4.4% -4.5% +0.1% +12.0% ➖ noise
91 datafusion:vortex-compact +4.9% -7.9% +13.9% +11.6% 🚨 regression
91 datafusion:vortex-file-compressed +2.3% -7.9% +11.1% +11.6% ➖ noise
91 duckdb:duckdb -5.1% -7.9% +2.9% +11.6% ➖ noise
91 duckdb:vortex-compact -7.7% -7.9% +0.2% +11.6% ➖ noise
91 duckdb:vortex-file-compressed +1.7% -7.9% +10.3% +11.6% ➖ noise
92 datafusion:vortex-compact +9.5% -10.0% +21.7% +12.3% 🚨 regression
92 datafusion:vortex-file-compressed -0.7% -10.0% +10.4% +11.6% ➖ noise
92 duckdb:duckdb -8.1% -10.0% +2.1% +16.7% ➖ noise
92 duckdb:vortex-compact +0.6% -10.0% +11.8% +18.2% ➖ noise
92 duckdb:vortex-file-compressed -18.8% -10.0% -9.7% +18.8% ➖ noise
93 datafusion:vortex-compact +0.7% -9.3% +11.1% +19.4% ➖ noise
93 datafusion:vortex-file-compressed +4.6% -9.3% +15.4% +15.5% ➖ noise
93 duckdb:duckdb -8.9% -9.3% +0.5% +12.8% ➖ noise
93 duckdb:vortex-compact +1.3% -9.3% +11.8% +11.6% 🚨 regression
93 duckdb:vortex-file-compressed -6.3% -9.3% +3.3% +11.6% ➖ noise
94 datafusion:vortex-compact -1.4% -5.7% +4.6% +12.5% ➖ noise
94 datafusion:vortex-file-compressed +8.2% -5.7% +14.8% +11.6% 🚨 regression
94 duckdb:duckdb -5.4% -5.7% +0.3% +13.6% ➖ noise
94 duckdb:vortex-compact -9.1% -5.7% -3.6% +11.6% ➖ noise
94 duckdb:vortex-file-compressed -2.6% -5.7% +3.3% +12.7% ➖ noise
95 datafusion:vortex-compact -5.9% -12.9% +8.0% +11.6% ➖ noise
95 datafusion:vortex-file-compressed +2.1% -12.9% +17.2% +11.6% 🚨 regression
95 duckdb:duckdb -2.4% -12.9% +12.0% +18.9% ➖ noise
95 duckdb:vortex-compact +7.4% -12.9% +23.3% +18.2% 🚨 regression
95 duckdb:vortex-file-compressed -2.2% -12.9% +12.3% +18.0% ➖ noise
96 datafusion:vortex-compact -4.6% -0.7% -3.9% +15.8% ➖ noise
96 datafusion:vortex-file-compressed +5.5% -0.7% +6.2% +11.6% ➖ noise
96 duckdb:duckdb -2.1% -0.7% -1.5% +18.4% ➖ noise
96 duckdb:vortex-compact -8.0% -0.7% -7.4% +11.6% ➖ noise
96 duckdb:vortex-file-compressed +1.8% -0.7% +2.4% +11.6% ➖ noise
97 datafusion:vortex-compact +4.0% -8.3% +13.4% +12.4% 🚨 regression
97 datafusion:vortex-file-compressed -1.1% -8.3% +7.8% +11.6% ➖ noise
97 duckdb:duckdb -3.4% -8.3% +5.4% +17.2% ➖ noise
97 duckdb:vortex-compact -7.6% -8.3% +0.8% +12.0% ➖ noise
97 duckdb:vortex-file-compressed +5.3% -8.3% +14.9% +17.2% ➖ noise
98 datafusion:vortex-compact +2.0% -8.6% +11.6% +11.6% 🚨 regression
98 datafusion:vortex-file-compressed +130.8% -8.6% +152.5% +11.6% 🚨 regression
98 duckdb:duckdb -3.4% -8.6% +5.7% +16.1% ➖ noise
98 duckdb:vortex-compact -5.4% -8.6% +3.4% +11.6% ➖ noise
98 duckdb:vortex-file-compressed +159.9% -8.6% +184.3% +11.6% 🚨 regression
99 datafusion:vortex-compact +11.7% -3.6% +15.9% +22.8% ➖ noise
99 datafusion:vortex-file-compressed +3.6% -3.6% +7.5% +17.6% ➖ noise
99 duckdb:duckdb -4.5% -3.6% -1.0% +11.6% ➖ noise
99 duckdb:vortex-compact -8.7% -3.6% -5.3% +17.7% ➖ noise
99 duckdb:vortex-file-compressed -3.9% -3.6% -0.3% +11.6% ➖ 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: +1.1%
Vortex (geomean): 1.020x ➖
Parquet (geomean): 0.999x ➖
Shifts: Parquet (control) -0.1% · Median polish +0.1%


datafusion / vortex-file-compressed (1.027x ➖, 0↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-file-compressed 379892164 395917870 0.96
tpch_q02/datafusion:vortex-file-compressed 102923388 104684379 0.98
tpch_q03/datafusion:vortex-file-compressed 211897764 212280490 1.00
tpch_q04/datafusion:vortex-file-compressed 111819651 111374683 1.00
tpch_q05/datafusion:vortex-file-compressed 368195260 368225799 1.00
tpch_q06/datafusion:vortex-file-compressed 41809313 41749890 1.00
tpch_q07/datafusion:vortex-file-compressed 490317763 493748354 0.99
tpch_q08/datafusion:vortex-file-compressed 350219892 347894444 1.01
tpch_q09/datafusion:vortex-file-compressed 633582406 619993994 1.02
tpch_q10/datafusion:vortex-file-compressed 225862836 224701798 1.01
tpch_q11/datafusion:vortex-file-compressed 79294914 81064921 0.98
tpch_q12/datafusion:vortex-file-compressed 117391935 118204126 0.99
tpch_q13/datafusion:vortex-file-compressed 206397750 212179474 0.97
tpch_q14/datafusion:vortex-file-compressed 54805184 54928514 1.00
tpch_q15/datafusion:vortex-file-compressed 104040514 104340720 1.00
tpch_q16/datafusion:vortex-file-compressed 73668031 76019925 0.97
tpch_q17/datafusion:vortex-file-compressed 618410609 619874305 1.00
tpch_q18/datafusion:vortex-file-compressed 822544079 836321511 0.98
tpch_q19/datafusion:vortex-file-compressed 93817874 91590645 1.02
tpch_q20/datafusion:vortex-file-compressed 164405283 163131466 1.01
tpch_q21/datafusion:vortex-file-compressed 642071317 644253012 1.00
tpch_q22/datafusion:vortex-file-compressed 🚨 130083985 64776642 2.01
datafusion / vortex-compact (1.004x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:vortex-compact 435872458 427320388 1.02
tpch_q02/datafusion:vortex-compact 105565637 108010305 0.98
tpch_q03/datafusion:vortex-compact 212681006 210034990 1.01
tpch_q04/datafusion:vortex-compact 117289175 117897018 0.99
tpch_q05/datafusion:vortex-compact 368832469 367174190 1.00
tpch_q06/datafusion:vortex-compact 61656154 62792932 0.98
tpch_q07/datafusion:vortex-compact 508907750 509077235 1.00
tpch_q08/datafusion:vortex-compact 357629532 349478257 1.02
tpch_q09/datafusion:vortex-compact 625619572 624713766 1.00
tpch_q10/datafusion:vortex-compact 240731771 241961069 0.99
tpch_q11/datafusion:vortex-compact 80589235 80846948 1.00
tpch_q12/datafusion:vortex-compact 159166166 158254553 1.01
tpch_q13/datafusion:vortex-compact 260072882 256598441 1.01
tpch_q14/datafusion:vortex-compact 72098437 71824728 1.00
tpch_q15/datafusion:vortex-compact 157872497 157426838 1.00
tpch_q16/datafusion:vortex-compact 78700887 77741040 1.01
tpch_q17/datafusion:vortex-compact 621250236 629553259 0.99
tpch_q18/datafusion:vortex-compact 822140326 823819860 1.00
tpch_q19/datafusion:vortex-compact 134566787 129256074 1.04
tpch_q20/datafusion:vortex-compact 183599554 184872652 0.99
tpch_q21/datafusion:vortex-compact 651311463 642209100 1.01
tpch_q22/datafusion:vortex-compact 71377271 70910688 1.01
datafusion / parquet (0.997x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:parquet 456363215 445800999 1.02
tpch_q02/datafusion:parquet 169429016 170815665 0.99
tpch_q03/datafusion:parquet 275025624 277411905 0.99
tpch_q04/datafusion:parquet 124372066 122950104 1.01
tpch_q05/datafusion:parquet 423635506 422191830 1.00
tpch_q06/datafusion:parquet 117714137 124364106 0.95
tpch_q07/datafusion:parquet 593523829 588261930 1.01
tpch_q08/datafusion:parquet 446920107 447414037 1.00
tpch_q09/datafusion:parquet 725890733 719282627 1.01
tpch_q10/datafusion:parquet 488276626 482351647 1.01
tpch_q11/datafusion:parquet 113398670 115153863 0.98
tpch_q12/datafusion:parquet 193844215 192332534 1.01
tpch_q13/datafusion:parquet 327460968 328704069 1.00
tpch_q14/datafusion:parquet 150983530 157277744 0.96
tpch_q15/datafusion:parquet 244528277 248257926 0.98
tpch_q16/datafusion:parquet 124065330 121055002 1.02
tpch_q17/datafusion:parquet 666064926 666395048 1.00
tpch_q18/datafusion:parquet 859000524 871636070 0.99
tpch_q19/datafusion:parquet 255370464 254162436 1.00
tpch_q20/datafusion:parquet 280723428 285963536 0.98
tpch_q21/datafusion:parquet 675234647 679368287 0.99
tpch_q22/datafusion:parquet 214132776 212271509 1.01
datafusion / arrow (0.989x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/datafusion:arrow 578158220 595923241 0.97
tpch_q02/datafusion:arrow 164138328 163932328 1.00
tpch_q03/datafusion:arrow 458463481 456514345 1.00
tpch_q04/datafusion:arrow 338710936 339832940 1.00
tpch_q05/datafusion:arrow 925602704 912006698 1.01
tpch_q06/datafusion:arrow 283590500 285287369 0.99
tpch_q07/datafusion:arrow 1147996456 1167189843 0.98
tpch_q08/datafusion:arrow 1112074909 1122633587 0.99
tpch_q09/datafusion:arrow 1329402183 1342921052 0.99
tpch_q10/datafusion:arrow 580724864 585624378 0.99
tpch_q11/datafusion:arrow 136064042 138394554 0.98
tpch_q12/datafusion:arrow 765602159 799654866 0.96
tpch_q13/datafusion:arrow 491374843 497084118 0.99
tpch_q14/datafusion:arrow 309042553 320305335 0.96
tpch_q15/datafusion:arrow 679400857 687068858 0.99
tpch_q16/datafusion:arrow 104204368 103129870 1.01
tpch_q17/datafusion:arrow 1321458327 1313045901 1.01
tpch_q18/datafusion:arrow 1828430034 1924658764 0.95
tpch_q19/datafusion:arrow 475027100 488894511 0.97
tpch_q20/datafusion:arrow 478117973 486776144 0.98
tpch_q21/datafusion:arrow 2961997561 2982894844 0.99
tpch_q22/datafusion:arrow 130760699 127545806 1.03
duckdb / vortex-file-compressed (1.045x ➖, 0↑ 2↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-file-compressed 170975818 171788246 1.00
tpch_q02/duckdb:vortex-file-compressed 🚨 67558862 50689977 1.33
tpch_q03/duckdb:vortex-file-compressed 125659468 123900890 1.01
tpch_q04/duckdb:vortex-file-compressed 152120276 151023320 1.01
tpch_q05/duckdb:vortex-file-compressed 126449391 128079767 0.99
tpch_q06/duckdb:vortex-file-compressed 46996529 45818857 1.03
tpch_q07/duckdb:vortex-file-compressed 142397003 144325758 0.99
tpch_q08/duckdb:vortex-file-compressed 170097340 168883478 1.01
tpch_q09/duckdb:vortex-file-compressed 336274329 321710520 1.05
tpch_q10/duckdb:vortex-file-compressed 144530698 141158699 1.02
tpch_q11/duckdb:vortex-file-compressed 31998318 33032558 0.97
tpch_q12/duckdb:vortex-file-compressed 92829045 93297614 0.99
tpch_q13/duckdb:vortex-file-compressed 223426937 225905797 0.99
tpch_q14/duckdb:vortex-file-compressed 67897900 66355216 1.02
tpch_q15/duckdb:vortex-file-compressed 88684231 86880895 1.02
tpch_q16/duckdb:vortex-file-compressed 77028233 78937930 0.98
tpch_q17/duckdb:vortex-file-compressed 97626772 99302736 0.98
tpch_q18/duckdb:vortex-file-compressed 281673291 287157573 0.98
tpch_q19/duckdb:vortex-file-compressed 83644393 83301337 1.00
tpch_q20/duckdb:vortex-file-compressed 157895026 156316853 1.01
tpch_q21/duckdb:vortex-file-compressed 557512386 566727211 0.98
tpch_q22/duckdb:vortex-file-compressed 🚨 137387700 71025576 1.93
duckdb / vortex-compact (1.004x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:vortex-compact 228278529 226002378 1.01
tpch_q02/duckdb:vortex-compact 55431580 55665561 1.00
tpch_q03/duckdb:vortex-compact 137816678 137148922 1.00
tpch_q04/duckdb:vortex-compact 171775265 169108865 1.02
tpch_q05/duckdb:vortex-compact 142130409 142288763 1.00
tpch_q06/duckdb:vortex-compact 81728194 82174770 0.99
tpch_q07/duckdb:vortex-compact 197545318 196380270 1.01
tpch_q08/duckdb:vortex-compact 180988281 184701621 0.98
tpch_q09/duckdb:vortex-compact 354641737 348696975 1.02
tpch_q10/duckdb:vortex-compact 174599335 175101647 1.00
tpch_q11/duckdb:vortex-compact 39993919 39880688 1.00
tpch_q12/duckdb:vortex-compact 201953517 200106156 1.01
tpch_q13/duckdb:vortex-compact 276285910 275420298 1.00
tpch_q14/duckdb:vortex-compact 100488330 98810274 1.02
tpch_q15/duckdb:vortex-compact 112454948 113234449 0.99
tpch_q16/duckdb:vortex-compact 82492860 83192303 0.99
tpch_q17/duckdb:vortex-compact 110742079 110293539 1.00
tpch_q18/duckdb:vortex-compact 298637250 283742845 1.05
tpch_q19/duckdb:vortex-compact 106793716 106698751 1.00
tpch_q20/duckdb:vortex-compact 197473176 198946861 0.99
tpch_q21/duckdb:vortex-compact 605188858 604549810 1.00
tpch_q22/duckdb:vortex-compact 83784407 83686887 1.00
duckdb / parquet (1.002x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:parquet 256890912 255001897 1.01
tpch_q02/duckdb:parquet 101748578 93658169 1.09
tpch_q03/duckdb:parquet 205803109 210348444 0.98
tpch_q04/duckdb:parquet 131559377 133076884 0.99
tpch_q05/duckdb:parquet 215653180 213948198 1.01
tpch_q06/duckdb:parquet 65643179 64969881 1.01
tpch_q07/duckdb:parquet 177240704 179431776 0.99
tpch_q08/duckdb:parquet 250481065 250662478 1.00
tpch_q09/duckdb:parquet 491257549 476669982 1.03
tpch_q10/duckdb:parquet 608265595 608565472 1.00
tpch_q11/duckdb:parquet 54617911 56422782 0.97
tpch_q12/duckdb:parquet 124735806 123188463 1.01
tpch_q13/duckdb:parquet 444932821 444016238 1.00
tpch_q14/duckdb:parquet 173208721 169536506 1.02
tpch_q15/duckdb:parquet 95926244 95796279 1.00
tpch_q16/duckdb:parquet 155990218 159872288 0.98
tpch_q17/duckdb:parquet 172790152 174815081 0.99
tpch_q18/duckdb:parquet 352961770 356060118 0.99
tpch_q19/duckdb:parquet 280995982 279752484 1.00
tpch_q20/duckdb:parquet 225439943 226710250 0.99
tpch_q21/duckdb:parquet 557392865 554573223 1.01
tpch_q22/duckdb:parquet 287472378 290141384 0.99
duckdb / duckdb (0.994x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
tpch_q01/duckdb:duckdb 116231535 116381526 1.00
tpch_q02/duckdb:duckdb 47561237 48699130 0.98
tpch_q03/duckdb:duckdb 95465308 96846105 0.99
tpch_q04/duckdb:duckdb 131322147 132360194 0.99
tpch_q05/duckdb:duckdb 107939061 110661928 0.98
tpch_q06/duckdb:duckdb 37796091 37708731 1.00
tpch_q07/duckdb:duckdb 86556358 86970487 1.00
tpch_q08/duckdb:duckdb 109815709 111244845 0.99
tpch_q09/duckdb:duckdb 275437791 274644624 1.00
tpch_q10/duckdb:duckdb 201770711 203964140 0.99
tpch_q11/duckdb:duckdb 15567842 15298711 1.02
tpch_q12/duckdb:duckdb 84407159 85225846 0.99
tpch_q13/duckdb:duckdb 220630173 220474898 1.00
tpch_q14/duckdb:duckdb 70971985 71010054 1.00
tpch_q15/duckdb:duckdb 77195551 79142050 0.98
tpch_q16/duckdb:duckdb 72557563 73300259 0.99
tpch_q17/duckdb:duckdb 83876659 84926866 0.99
tpch_q18/duckdb:duckdb 210699339 213486612 0.99
tpch_q19/duckdb:duckdb 115278897 116409341 0.99
tpch_q20/duckdb:duckdb 111857367 112122307 1.00
tpch_q21/duckdb:duckdb 298006747 289931460 1.03
tpch_q22/duckdb:duckdb 67632897 67713068 1.00
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
1 datafusion:arrow -3.0% +1.6% -4.5% +10.0% ➖ noise
1 datafusion:vortex-compact +2.0% +1.6% +0.4% +10.0% ➖ noise
1 datafusion:vortex-file-compressed -4.0% +1.6% -5.5% +10.0% ➖ noise
1 duckdb:duckdb -0.1% +1.6% -1.7% +10.0% ➖ noise
1 duckdb:vortex-compact +1.0% +1.6% -0.5% +10.0% ➖ noise
1 duckdb:vortex-file-compressed -0.5% +1.6% -2.0% +10.0% ➖ noise
2 datafusion:arrow +0.1% +3.8% -3.5% +10.0% ➖ noise
2 datafusion:vortex-compact -2.3% +3.8% -5.8% +10.0% ➖ noise
2 datafusion:vortex-file-compressed -1.7% +3.8% -5.3% +10.0% ➖ noise
2 duckdb:duckdb -2.3% +3.8% -5.9% +10.0% ➖ noise
2 duckdb:vortex-compact -0.4% +3.8% -4.1% +13.6% ➖ noise
2 duckdb:vortex-file-compressed +33.3% +3.8% +28.4% +10.0% 🚨 regression
3 datafusion:arrow +0.4% -1.5% +2.0% +10.0% ➖ noise
3 datafusion:vortex-compact +1.3% -1.5% +2.8% +10.0% ➖ noise
3 datafusion:vortex-file-compressed -0.2% -1.5% +1.4% +10.0% ➖ noise
3 duckdb:duckdb -1.4% -1.5% +0.1% +10.0% ➖ noise
3 duckdb:vortex-compact +0.5% -1.5% +2.0% +10.0% ➖ noise
3 duckdb:vortex-file-compressed +1.4% -1.5% +3.0% +10.0% ➖ noise
4 datafusion:arrow -0.3% +0.0% -0.3% +10.0% ➖ noise
4 datafusion:vortex-compact -0.5% +0.0% -0.5% +10.0% ➖ noise
4 datafusion:vortex-file-compressed +0.4% +0.0% +0.4% +10.0% ➖ noise
4 duckdb:duckdb -0.8% +0.0% -0.8% +10.0% ➖ noise
4 duckdb:vortex-compact +1.6% +0.0% +1.6% +10.0% ➖ noise
4 duckdb:vortex-file-compressed +0.7% +0.0% +0.7% +10.0% ➖ noise
5 datafusion:arrow +1.5% +0.6% +0.9% +10.0% ➖ noise
5 datafusion:vortex-compact +0.5% +0.6% -0.1% +10.0% ➖ noise
5 datafusion:vortex-file-compressed -0.0% +0.6% -0.6% +10.0% ➖ noise
5 duckdb:duckdb -2.5% +0.6% -3.0% +10.0% ➖ noise
5 duckdb:vortex-compact -0.1% +0.6% -0.7% +10.0% ➖ noise
5 duckdb:vortex-file-compressed -1.3% +0.6% -1.8% +10.0% ➖ noise
6 datafusion:arrow -0.6% -2.2% +1.6% +10.0% ➖ noise
6 datafusion:vortex-compact -1.8% -2.2% +0.4% +10.0% ➖ noise
6 datafusion:vortex-file-compressed +0.1% -2.2% +2.4% +10.0% ➖ noise
6 duckdb:duckdb +0.2% -2.2% +2.5% +10.4% ➖ noise
6 duckdb:vortex-compact -0.5% -2.2% +1.7% +10.0% ➖ noise
6 duckdb:vortex-file-compressed +2.6% -2.2% +4.9% +10.5% ➖ noise
7 datafusion:arrow -1.6% -0.2% -1.5% +10.0% ➖ noise
7 datafusion:vortex-compact -0.0% -0.2% +0.1% +10.0% ➖ noise
7 datafusion:vortex-file-compressed -0.7% -0.2% -0.5% +10.0% ➖ noise
7 duckdb:duckdb -0.5% -0.2% -0.3% +10.0% ➖ noise
7 duckdb:vortex-compact +0.6% -0.2% +0.8% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -1.3% -0.2% -1.2% +10.0% ➖ noise
8 datafusion:arrow -0.9% -0.1% -0.8% +10.0% ➖ noise
8 datafusion:vortex-compact +2.3% -0.1% +2.4% +10.0% ➖ noise
8 datafusion:vortex-file-compressed +0.7% -0.1% +0.8% +10.0% ➖ noise
8 duckdb:duckdb -1.3% -0.1% -1.2% +10.0% ➖ noise
8 duckdb:vortex-compact -2.0% -0.1% -1.9% +10.0% ➖ noise
8 duckdb:vortex-file-compressed +0.7% -0.1% +0.8% +10.0% ➖ noise
9 datafusion:arrow -1.0% +2.0% -2.9% +10.0% ➖ noise
9 datafusion:vortex-compact +0.1% +2.0% -1.8% +10.0% ➖ noise
9 datafusion:vortex-file-compressed +2.2% +2.0% +0.2% +10.0% ➖ noise
9 duckdb:duckdb +0.3% +2.0% -1.7% +10.0% ➖ noise
9 duckdb:vortex-compact +1.7% +2.0% -0.3% +10.0% ➖ noise
9 duckdb:vortex-file-compressed +4.5% +2.0% +2.5% +10.0% ➖ noise
10 datafusion:arrow -0.8% +0.6% -1.4% +10.0% ➖ noise
10 datafusion:vortex-compact -0.5% +0.6% -1.1% +10.0% ➖ noise
10 datafusion:vortex-file-compressed +0.5% +0.6% -0.1% +10.0% ➖ noise
10 duckdb:duckdb -1.1% +0.6% -1.7% +10.0% ➖ noise
10 duckdb:vortex-compact -0.3% +0.6% -0.9% +10.0% ➖ noise
10 duckdb:vortex-file-compressed +2.4% +0.6% +1.8% +10.0% ➖ noise
11 datafusion:arrow -1.7% -2.4% +0.7% +10.7% ➖ noise
11 datafusion:vortex-compact -0.3% -2.4% +2.1% +10.0% ➖ noise
11 datafusion:vortex-file-compressed -2.2% -2.4% +0.2% +10.0% ➖ noise
11 duckdb:duckdb +1.8% -2.4% +4.2% +12.2% ➖ noise
11 duckdb:vortex-compact +0.3% -2.4% +2.7% +10.0% ➖ noise
11 duckdb:vortex-file-compressed -3.1% -2.4% -0.8% +13.3% ➖ noise
12 datafusion:arrow -4.3% +1.0% -5.2% +36.0% ➖ noise
12 datafusion:vortex-compact +0.6% +1.0% -0.4% +10.0% ➖ noise
12 datafusion:vortex-file-compressed -0.7% +1.0% -1.7% +10.0% ➖ noise
12 duckdb:duckdb -1.0% +1.0% -2.0% +10.0% ➖ noise
12 duckdb:vortex-compact +0.9% +1.0% -0.1% +10.0% ➖ noise
12 duckdb:vortex-file-compressed -0.5% +1.0% -1.5% +10.0% ➖ noise
13 datafusion:arrow -1.1% -0.1% -1.1% +10.0% ➖ noise
13 datafusion:vortex-compact +1.4% -0.1% +1.4% +10.0% ➖ noise
13 datafusion:vortex-file-compressed -2.7% -0.1% -2.6% +10.0% ➖ noise
13 duckdb:duckdb +0.1% -0.1% +0.2% +10.0% ➖ noise
13 duckdb:vortex-compact +0.3% -0.1% +0.4% +10.0% ➖ noise
13 duckdb:vortex-file-compressed -1.1% -0.1% -1.0% +10.0% ➖ noise
14 datafusion:arrow -3.5% -1.0% -2.6% +10.0% ➖ noise
14 datafusion:vortex-compact +0.4% -1.0% +1.4% +10.0% ➖ noise
14 datafusion:vortex-file-compressed -0.2% -1.0% +0.7% +10.0% ➖ noise
14 duckdb:duckdb -0.1% -1.0% +0.9% +10.0% ➖ noise
14 duckdb:vortex-compact +1.7% -1.0% +2.7% +10.0% ➖ noise
14 duckdb:vortex-file-compressed +2.3% -1.0% +3.3% +10.0% ➖ noise
15 datafusion:arrow -1.1% -0.7% -0.4% +10.0% ➖ noise
15 datafusion:vortex-compact +0.3% -0.7% +1.0% +10.0% ➖ noise
15 datafusion:vortex-file-compressed -0.3% -0.7% +0.4% +10.0% ➖ noise
15 duckdb:duckdb -2.5% -0.7% -1.8% +10.0% ➖ noise
15 duckdb:vortex-compact -0.7% -0.7% -0.0% +10.0% ➖ noise
15 duckdb:vortex-file-compressed +2.1% -0.7% +2.8% +10.0% ➖ noise
16 datafusion:arrow +1.0% -0.0% +1.0% +10.0% ➖ noise
16 datafusion:vortex-compact +1.2% -0.0% +1.2% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -3.1% -0.0% -3.1% +10.0% ➖ noise
16 duckdb:duckdb -1.0% -0.0% -1.0% +10.0% ➖ noise
16 duckdb:vortex-compact -0.8% -0.0% -0.8% +10.0% ➖ noise
16 duckdb:vortex-file-compressed -2.4% -0.0% -2.4% +10.0% ➖ noise
17 datafusion:arrow +0.6% -0.6% +1.3% +10.0% ➖ noise
17 datafusion:vortex-compact -1.3% -0.6% -0.7% +10.0% ➖ noise
17 datafusion:vortex-file-compressed -0.2% -0.6% +0.4% +10.0% ➖ noise
17 duckdb:duckdb -1.2% -0.6% -0.6% +10.0% ➖ noise
17 duckdb:vortex-compact +0.4% -0.6% +1.0% +10.0% ➖ noise
17 duckdb:vortex-file-compressed -1.7% -0.6% -1.1% +10.0% ➖ noise
18 datafusion:arrow -5.0% -1.2% -3.9% +10.0% ➖ noise
18 datafusion:vortex-compact -0.2% -1.2% +1.0% +10.0% ➖ noise
18 datafusion:vortex-file-compressed -1.6% -1.2% -0.5% +10.0% ➖ noise
18 duckdb:duckdb -1.3% -1.2% -0.1% +10.0% ➖ noise
18 duckdb:vortex-compact +5.2% -1.2% +6.5% +10.0% ➖ noise
18 duckdb:vortex-file-compressed -1.9% -1.2% -0.8% +10.0% ➖ noise
19 datafusion:arrow -2.8% +0.5% -3.3% +10.0% ➖ noise
19 datafusion:vortex-compact +4.1% +0.5% +3.6% +10.0% ➖ noise
19 datafusion:vortex-file-compressed +2.4% +0.5% +2.0% +10.0% ➖ noise
19 duckdb:duckdb -1.0% +0.5% -1.4% +10.0% ➖ noise
19 duckdb:vortex-compact +0.1% +0.5% -0.4% +10.0% ➖ noise
19 duckdb:vortex-file-compressed +0.4% +0.5% -0.0% +10.0% ➖ noise
20 datafusion:arrow -1.8% -1.2% -0.6% +10.0% ➖ noise
20 datafusion:vortex-compact -0.7% -1.2% +0.5% +10.0% ➖ noise
20 datafusion:vortex-file-compressed +0.8% -1.2% +2.0% +10.0% ➖ noise
20 duckdb:duckdb -0.2% -1.2% +1.0% +10.0% ➖ noise
20 duckdb:vortex-compact -0.7% -1.2% +0.5% +10.0% ➖ noise
20 duckdb:vortex-file-compressed +1.0% -1.2% +2.2% +10.0% ➖ noise
21 datafusion:arrow -0.7% -0.1% -0.6% +10.0% ➖ noise
21 datafusion:vortex-compact +1.4% -0.1% +1.5% +10.0% ➖ noise
21 datafusion:vortex-file-compressed -0.3% -0.1% -0.3% +10.0% ➖ noise
21 duckdb:duckdb +2.8% -0.1% +2.8% +10.0% ➖ noise
21 duckdb:vortex-compact +0.1% -0.1% +0.2% +10.0% ➖ noise
21 duckdb:vortex-file-compressed -1.6% -0.1% -1.6% +10.0% ➖ noise
22 datafusion:arrow +2.5% -0.0% +2.5% +10.0% ➖ noise
22 datafusion:vortex-compact +0.7% -0.0% +0.7% +10.0% ➖ noise
22 datafusion:vortex-file-compressed +100.8% -0.0% +100.9% +10.0% 🚨 regression
22 duckdb:duckdb -0.1% -0.0% -0.1% +10.0% ➖ noise
22 duckdb:vortex-compact +0.1% -0.0% +0.1% +10.0% ➖ noise
22 duckdb:vortex-file-compressed +93.4% -0.0% +93.5% +10.0% 🚨 regression

@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: +1.4%
Vortex (geomean): 1.029x ➖
Parquet (geomean): 1.005x ➖
Shifts: Parquet (control) +0.5% · Median polish +1.1%


datafusion / vortex-file-compressed (1.039x ➖, 4↑ 10↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
clickbench_q00/datafusion:vortex-file-compressed 🚀 1697153 2106239 0.81
clickbench_q01/datafusion:vortex-file-compressed 18860270 19881041 0.95
clickbench_q02/datafusion:vortex-file-compressed 36775694 37337674 0.98
clickbench_q03/datafusion:vortex-file-compressed 41338782 43988768 0.94
clickbench_q04/datafusion:vortex-file-compressed 287447651 282613845 1.02
clickbench_q05/datafusion:vortex-file-compressed 318102673 298390240 1.07
clickbench_q06/datafusion:vortex-file-compressed 1610793 1674097 0.96
clickbench_q07/datafusion:vortex-file-compressed 21475859 21979392 0.98
clickbench_q08/datafusion:vortex-file-compressed 346737080 354672007 0.98
clickbench_q09/datafusion:vortex-file-compressed 540889929 549346201 0.98
clickbench_q10/datafusion:vortex-file-compressed 69934801 71684635 0.98
clickbench_q11/datafusion:vortex-file-compressed 80712909 85611172 0.94
clickbench_q12/datafusion:vortex-file-compressed 275870826 264619291 1.04
clickbench_q13/datafusion:vortex-file-compressed 410603821 406510065 1.01
clickbench_q14/datafusion:vortex-file-compressed 257396473 251052817 1.03
clickbench_q15/datafusion:vortex-file-compressed 316935026 326557583 0.97
clickbench_q16/datafusion:vortex-file-compressed 628911932 636371792 0.99
clickbench_q17/datafusion:vortex-file-compressed 649385503 629460543 1.03
clickbench_q18/datafusion:vortex-file-compressed 1308818461 1289312224 1.02
clickbench_q19/datafusion:vortex-file-compressed 29032403 29386558 0.99
clickbench_q20/datafusion:vortex-file-compressed 🚨 925621449 338941661 2.73
clickbench_q21/datafusion:vortex-file-compressed 🚀 329943314 366672172 0.90
clickbench_q22/datafusion:vortex-file-compressed 439452569 442199461 0.99
clickbench_q23/datafusion:vortex-file-compressed 🚀 504648224 634449609 0.80
clickbench_q24/datafusion:vortex-file-compressed 44721654 41988583 1.07
clickbench_q25/datafusion:vortex-file-compressed 68174733 70403198 0.97
clickbench_q26/datafusion:vortex-file-compressed 44112738 45499858 0.97
clickbench_q27/datafusion:vortex-file-compressed 669841869 713239401 0.94
clickbench_q28/datafusion:vortex-file-compressed 🚀 5877906265 6678215634 0.88
clickbench_q29/datafusion:vortex-file-compressed 223109728 238739417 0.93
clickbench_q30/datafusion:vortex-file-compressed 🚨 243040063 215459101 1.13
clickbench_q31/datafusion:vortex-file-compressed 🚨 288358995 250584338 1.15
clickbench_q32/datafusion:vortex-file-compressed 1193974915 1093360703 1.09
clickbench_q33/datafusion:vortex-file-compressed 1375300037 1282782613 1.07
clickbench_q34/datafusion:vortex-file-compressed 1409886822 1284650249 1.10
clickbench_q35/datafusion:vortex-file-compressed 486205557 445039870 1.09
clickbench_q36/datafusion:vortex-file-compressed 🚨 78530482 69658097 1.13
clickbench_q37/datafusion:vortex-file-compressed 🚨 39202354 34046745 1.15
clickbench_q38/datafusion:vortex-file-compressed 🚨 22411097 18931939 1.18
clickbench_q39/datafusion:vortex-file-compressed 🚨 146792389 130024485 1.13
clickbench_q40/datafusion:vortex-file-compressed 🚨 18305402 15702947 1.17
clickbench_q41/datafusion:vortex-file-compressed 🚨 17349381 14628123 1.19
clickbench_q42/datafusion:vortex-file-compressed 🚨 19056741 16726523 1.14
datafusion / parquet (0.998x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
clickbench_q00/datafusion:parquet 1536181 1536846 1.00
clickbench_q01/datafusion:parquet 18923589 18612413 1.02
clickbench_q02/datafusion:parquet 45647001 47295090 0.97
clickbench_q03/datafusion:parquet 36881391 38131635 0.97
clickbench_q04/datafusion:parquet 291144680 297762079 0.98
clickbench_q05/datafusion:parquet 340428232 347702604 0.98
clickbench_q06/datafusion:parquet 1558341 1552910 1.00
clickbench_q07/datafusion:parquet 22321835 22047184 1.01
clickbench_q08/datafusion:parquet 364730444 365193091 1.00
clickbench_q09/datafusion:parquet 593894962 616163485 0.96
clickbench_q10/datafusion:parquet 104889619 103577031 1.01
clickbench_q11/datafusion:parquet 127857235 128732302 0.99
clickbench_q12/datafusion:parquet 334216330 339055262 0.99
clickbench_q13/datafusion:parquet 473423100 493242928 0.96
clickbench_q14/datafusion:parquet 331728658 341109936 0.97
clickbench_q15/datafusion:parquet 331220785 335990571 0.99
clickbench_q16/datafusion:parquet 640616640 646120453 0.99
clickbench_q17/datafusion:parquet 634563486 632702394 1.00
clickbench_q18/datafusion:parquet 1291542376 1287838459 1.00
clickbench_q19/datafusion:parquet 29508577 28289632 1.04
clickbench_q20/datafusion:parquet 596772166 598308932 1.00
clickbench_q21/datafusion:parquet 655464120 648496774 1.01
clickbench_q22/datafusion:parquet 950878949 945622144 1.01
clickbench_q23/datafusion:parquet 3609671219 3563502593 1.01
clickbench_q24/datafusion:parquet 78983253 85568590 0.92
clickbench_q25/datafusion:parquet 128998206 131402901 0.98
clickbench_q26/datafusion:parquet 81559552 79971624 1.02
clickbench_q27/datafusion:parquet 1029271900 1036249602 0.99
clickbench_q28/datafusion:parquet 6572156481 6524336064 1.01
clickbench_q29/datafusion:parquet 240726325 233571568 1.03
clickbench_q30/datafusion:parquet 315749995 317772142 0.99
clickbench_q31/datafusion:parquet 362261037 358811260 1.01
clickbench_q32/datafusion:parquet 1193421097 1167797985 1.02
clickbench_q33/datafusion:parquet 1491380526 1456755708 1.02
clickbench_q34/datafusion:parquet 1474380466 1480363992 1.00
clickbench_q35/datafusion:parquet 455373878 451241399 1.01
clickbench_q36/datafusion:parquet 136777468 140566706 0.97
clickbench_q37/datafusion:parquet 56214203 56923938 0.99
clickbench_q38/datafusion:parquet 82943582 84313806 0.98
clickbench_q39/datafusion:parquet 264526915 254081696 1.04
clickbench_q40/datafusion:parquet 30308866 29401740 1.03
clickbench_q41/datafusion:parquet 27322695 27165749 1.01
clickbench_q42/datafusion:parquet 30907732 29940131 1.03
duckdb / vortex-file-compressed (1.020x ➖, 1↑ 4↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
clickbench_q00/duckdb:vortex-file-compressed 6184771 5903157 1.05
clickbench_q01/duckdb:vortex-file-compressed 13543736 12933788 1.05
clickbench_q02/duckdb:vortex-file-compressed 25667123 25025216 1.03
clickbench_q03/duckdb:vortex-file-compressed 30038250 29219706 1.03
clickbench_q04/duckdb:vortex-file-compressed 179734598 179294770 1.00
clickbench_q05/duckdb:vortex-file-compressed 174108410 173834484 1.00
clickbench_q06/duckdb:vortex-file-compressed 20780501 19510037 1.07
clickbench_q07/duckdb:vortex-file-compressed 14719073 15833191 0.93
clickbench_q08/duckdb:vortex-file-compressed 265875408 257047238 1.03
clickbench_q09/duckdb:vortex-file-compressed 337954515 332448777 1.02
clickbench_q10/duckdb:vortex-file-compressed 67135212 64178005 1.05
clickbench_q11/duckdb:vortex-file-compressed 77763045 75702420 1.03
clickbench_q12/duckdb:vortex-file-compressed 188867671 195338603 0.97
clickbench_q13/duckdb:vortex-file-compressed 402436437 388702332 1.04
clickbench_q14/duckdb:vortex-file-compressed 226712237 227432621 1.00
clickbench_q15/duckdb:vortex-file-compressed 246443389 239949911 1.03
clickbench_q16/duckdb:vortex-file-compressed 593608053 579575557 1.02
clickbench_q17/duckdb:vortex-file-compressed 489525634 459094410 1.07
clickbench_q18/duckdb:vortex-file-compressed 983276822 946298643 1.04
clickbench_q19/duckdb:vortex-file-compressed 20609008 20744544 0.99
clickbench_q20/duckdb:vortex-file-compressed 🚀 289335088 336068753 0.86
clickbench_q21/duckdb:vortex-file-compressed 321290003 356219053 0.90
clickbench_q22/duckdb:vortex-file-compressed 462722310 499508136 0.93
clickbench_q23/duckdb:vortex-file-compressed 🚨 300255211 215135888 1.40
clickbench_q24/duckdb:vortex-file-compressed 🚨 38738266 35112518 1.10
clickbench_q25/duckdb:vortex-file-compressed 70323279 71735740 0.98
clickbench_q26/duckdb:vortex-file-compressed 🚨 45533302 40430111 1.13
clickbench_q27/duckdb:vortex-file-compressed 438807687 464207737 0.95
clickbench_q28/duckdb:vortex-file-compressed 2927363938 2954707657 0.99
clickbench_q29/duckdb:vortex-file-compressed 29538400 32731055 0.90
clickbench_q30/duckdb:vortex-file-compressed 190926149 182671014 1.05
clickbench_q31/duckdb:vortex-file-compressed 291144110 271946877 1.07
clickbench_q32/duckdb:vortex-file-compressed 1191211051 1168207430 1.02
clickbench_q33/duckdb:vortex-file-compressed 1117303753 1125901355 0.99
clickbench_q34/duckdb:vortex-file-compressed 1241413728 1183353248 1.05
clickbench_q35/duckdb:vortex-file-compressed 384614657 378728681 1.02
clickbench_q36/duckdb:vortex-file-compressed 27330355 25910550 1.05
clickbench_q37/duckdb:vortex-file-compressed 19301506 19281144 1.00
clickbench_q38/duckdb:vortex-file-compressed 21806703 21235487 1.03
clickbench_q39/duckdb:vortex-file-compressed 🚨 42329633 37870505 1.12
clickbench_q40/duckdb:vortex-file-compressed 19612150 20564896 0.95
clickbench_q41/duckdb:vortex-file-compressed 20594969 20260607 1.02
clickbench_q42/duckdb:vortex-file-compressed 20828844 19401902 1.07
duckdb / parquet (1.012x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
clickbench_q00/duckdb:parquet 25259819 25252637 1.00
clickbench_q01/duckdb:parquet 27463563 27577221 1.00
clickbench_q02/duckdb:parquet 48123178 48121032 1.00
clickbench_q03/duckdb:parquet 39411127 38539812 1.02
clickbench_q04/duckdb:parquet 209649141 200357616 1.05
clickbench_q05/duckdb:parquet 271770859 273674354 0.99
clickbench_q06/duckdb:parquet 46455553 45711102 1.02
clickbench_q07/duckdb:parquet 29745130 29771925 1.00
clickbench_q08/duckdb:parquet 269865914 264446165 1.02
clickbench_q09/duckdb:parquet 406397179 396014839 1.03
clickbench_q10/duckdb:parquet 82055901 80797398 1.02
clickbench_q11/duckdb:parquet 101885912 98978146 1.03
clickbench_q12/duckdb:parquet 295181627 289427888 1.02
clickbench_q13/duckdb:parquet 497482423 480542511 1.04
clickbench_q14/duckdb:parquet 334845933 320705236 1.04
clickbench_q15/duckdb:parquet 262633236 257437294 1.02
clickbench_q16/duckdb:parquet 675681721 633270419 1.07
clickbench_q17/duckdb:parquet 552719561 537212917 1.03
clickbench_q18/duckdb:parquet 1102597605 1071823953 1.03
clickbench_q19/duckdb:parquet 25770309 26021162 0.99
clickbench_q20/duckdb:parquet 423130910 427587567 0.99
clickbench_q21/duckdb:parquet 558428978 543211572 1.03
clickbench_q22/duckdb:parquet 933522554 933593765 1.00
clickbench_q23/duckdb:parquet 315322430 311828896 1.01
clickbench_q24/duckdb:parquet 70175743 67208023 1.04
clickbench_q25/duckdb:parquet 158985369 155646865 1.02
clickbench_q26/duckdb:parquet 48650395 49149864 0.99
clickbench_q27/duckdb:parquet 652135731 646559973 1.01
clickbench_q28/duckdb:parquet 4847761481 4833635232 1.00
clickbench_q29/duckdb:parquet 41764183 39751051 1.05
clickbench_q30/duckdb:parquet 303359417 301128923 1.01
clickbench_q31/duckdb:parquet 363017790 355215023 1.02
clickbench_q32/duckdb:parquet 1207232665 1183751626 1.02
clickbench_q33/duckdb:parquet 1308961541 1272268406 1.03
clickbench_q34/duckdb:parquet 1279091182 1313129567 0.97
clickbench_q35/duckdb:parquet 363901732 364868272 1.00
clickbench_q36/duckdb:parquet 46317340 50326685 0.92
clickbench_q37/duckdb:parquet 32448055 33772513 0.96
clickbench_q38/duckdb:parquet 35091213 33936987 1.03
clickbench_q39/duckdb:parquet 87373816 83070408 1.05
clickbench_q40/duckdb:parquet 18460764 18649409 0.99
clickbench_q41/duckdb:parquet 18569567 17138233 1.08
clickbench_q42/duckdb:parquet 19840328 21685345 0.91
duckdb / duckdb (1.000x ➖, 3↑ 1↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
clickbench_q00/duckdb:duckdb 17235816 17070370 1.01
clickbench_q01/duckdb:duckdb 32579123 32209926 1.01
clickbench_q02/duckdb:duckdb 44995972 44481023 1.01
clickbench_q03/duckdb:duckdb 46462447 46336904 1.00
clickbench_q04/duckdb:duckdb 190583902 184658727 1.03
clickbench_q05/duckdb:duckdb 265980469 266532921 1.00
clickbench_q06/duckdb:duckdb 🚨 35318149 28716757 1.23
clickbench_q07/duckdb:duckdb 35618428 35487498 1.00
clickbench_q08/duckdb:duckdb 254915405 249873833 1.02
clickbench_q09/duckdb:duckdb 373963187 362819486 1.03
clickbench_q10/duckdb:duckdb 98123414 97892985 1.00
clickbench_q11/duckdb:duckdb 109087095 107980941 1.01
clickbench_q12/duckdb:duckdb 239398076 237893294 1.01
clickbench_q13/duckdb:duckdb 459239881 461809944 0.99
clickbench_q14/duckdb:duckdb 276435778 272701768 1.01
clickbench_q15/duckdb:duckdb 220404335 218032345 1.01
clickbench_q16/duckdb:duckdb 641991123 629823093 1.02
clickbench_q17/duckdb:duckdb 548093432 562947813 0.97
clickbench_q18/duckdb:duckdb 1214090858 1176376367 1.03
clickbench_q19/duckdb:duckdb 34496848 34001909 1.01
clickbench_q20/duckdb:duckdb 🚀 858737001 976778256 0.88
clickbench_q21/duckdb:duckdb 963323280 1040594065 0.93
clickbench_q22/duckdb:duckdb 1050076194 1053281748 1.00
clickbench_q23/duckdb:duckdb 263200541 256034165 1.03
clickbench_q24/duckdb:duckdb 63066426 61726385 1.02
clickbench_q25/duckdb:duckdb 143055943 142895035 1.00
clickbench_q26/duckdb:duckdb 60337187 56568827 1.07
clickbench_q27/duckdb:duckdb 🚀 893920473 1087760966 0.82
clickbench_q28/duckdb:duckdb 4642084148 4657350141 1.00
clickbench_q29/duckdb:duckdb 48172208 48135398 1.00
clickbench_q30/duckdb:duckdb 266516102 258372009 1.03
clickbench_q31/duckdb:duckdb 438918767 420207943 1.04
clickbench_q32/duckdb:duckdb 1559931455 1586998310 0.98
clickbench_q33/duckdb:duckdb 🚀 1941355108 2164319218 0.90
clickbench_q34/duckdb:duckdb 1994389753 2128357588 0.94
clickbench_q35/duckdb:duckdb 281155751 284106573 0.99
clickbench_q36/duckdb:duckdb 42543192 40833900 1.04
clickbench_q37/duckdb:duckdb 30846462 30860795 1.00
clickbench_q38/duckdb:duckdb 30927901 30926223 1.00
clickbench_q39/duckdb:duckdb 66015136 67449583 0.98
clickbench_q40/duckdb:duckdb 31364113 31261271 1.00
clickbench_q41/duckdb:duckdb 30881251 30748571 1.00
clickbench_q42/duckdb:duckdb 31101306 31650449 0.98
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 datafusion:vortex-file-compressed -19.4% -0.0% -19.4% +778.2% ➖ noise
0 duckdb:duckdb +1.0% -0.0% +1.0% +290.6% ➖ noise
0 duckdb:vortex-file-compressed +4.8% -0.0% +4.8% +483.0% ➖ noise
1 datafusion:vortex-file-compressed -5.1% +0.6% -5.7% +23.2% ➖ noise
1 duckdb:duckdb +1.1% +0.6% +0.5% +58.5% ➖ noise
1 duckdb:vortex-file-compressed +4.7% +0.6% +4.1% +25.8% ➖ noise
2 datafusion:vortex-file-compressed -1.5% -1.8% +0.3% +17.7% ➖ noise
2 duckdb:duckdb +1.2% -1.8% +3.0% +20.0% ➖ noise
2 duckdb:vortex-file-compressed +2.6% -1.8% +4.4% +11.0% ➖ noise
3 datafusion:vortex-file-compressed -6.0% -0.5% -5.5% +142.7% ➖ noise
3 duckdb:duckdb +0.3% -0.5% +0.8% +43.2% ➖ noise
3 duckdb:vortex-file-compressed +2.8% -0.5% +3.4% +69.2% ➖ noise
4 datafusion:vortex-file-compressed +1.7% +1.1% +0.6% +10.0% ➖ noise
4 duckdb:duckdb +3.2% +1.1% +2.0% +10.0% ➖ noise
4 duckdb:vortex-file-compressed +0.2% +1.1% -0.9% +10.0% ➖ noise
5 datafusion:vortex-file-compressed +6.6% -1.4% +8.1% +10.0% ➖ noise
5 duckdb:duckdb -0.2% -1.4% +1.2% +10.0% ➖ noise
5 duckdb:vortex-file-compressed +0.2% -1.4% +1.6% +10.0% ➖ noise
6 datafusion:vortex-file-compressed -3.8% +1.0% -4.7% +39.4% ➖ noise
6 duckdb:duckdb +23.0% +1.0% +21.8% +27.2% ➖ noise
6 duckdb:vortex-file-compressed +6.5% +1.0% +5.5% +17.5% ➖ noise
7 datafusion:vortex-file-compressed -2.3% +0.6% -2.9% +15.0% ➖ noise
7 duckdb:duckdb +0.4% +0.6% -0.2% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -7.0% +0.6% -7.6% +10.0% ➖ noise
8 datafusion:vortex-file-compressed -2.2% +1.0% -3.2% +10.0% ➖ noise
8 duckdb:duckdb +2.0% +1.0% +1.1% +10.0% ➖ noise
8 duckdb:vortex-file-compressed +3.4% +1.0% +2.5% +10.0% ➖ noise
9 datafusion:vortex-file-compressed -1.5% -0.5% -1.0% +10.0% ➖ noise
9 duckdb:duckdb +3.1% -0.5% +3.6% +10.0% ➖ noise
9 duckdb:vortex-file-compressed +1.7% -0.5% +2.2% +10.0% ➖ noise
10 datafusion:vortex-file-compressed -2.4% +1.4% -3.8% +10.0% ➖ noise
10 duckdb:duckdb +0.2% +1.4% -1.2% +10.0% ➖ noise
10 duckdb:vortex-file-compressed +4.6% +1.4% +3.2% +10.0% ➖ noise
11 datafusion:vortex-file-compressed -5.7% +1.1% -6.8% +10.0% ➖ noise
11 duckdb:duckdb +1.0% +1.1% -0.1% +10.0% ➖ noise
11 duckdb:vortex-file-compressed +2.7% +1.1% +1.6% +10.0% ➖ noise
12 datafusion:vortex-file-compressed +4.3% +0.3% +4.0% +10.0% ➖ noise
12 duckdb:duckdb +0.6% +0.3% +0.4% +10.0% ➖ noise
12 duckdb:vortex-file-compressed -3.3% +0.3% -3.6% +10.0% ➖ noise
13 datafusion:vortex-file-compressed +1.0% -0.3% +1.3% +10.0% ➖ noise
13 duckdb:duckdb -0.6% -0.3% -0.2% +10.0% ➖ noise
13 duckdb:vortex-file-compressed +3.5% -0.3% +3.9% +10.0% ➖ noise
14 datafusion:vortex-file-compressed +2.5% +0.8% +1.7% +10.0% ➖ noise
14 duckdb:duckdb +1.4% +0.8% +0.6% +10.0% ➖ noise
14 duckdb:vortex-file-compressed -0.3% +0.8% -1.1% +10.0% ➖ noise
15 datafusion:vortex-file-compressed -2.9% +0.3% -3.2% +10.0% ➖ noise
15 duckdb:duckdb +1.1% +0.3% +0.8% +10.0% ➖ noise
15 duckdb:vortex-file-compressed +2.7% +0.3% +2.4% +10.0% ➖ noise
16 datafusion:vortex-file-compressed -1.2% +2.9% -3.9% +10.0% ➖ noise
16 duckdb:duckdb +1.9% +2.9% -0.9% +10.0% ➖ noise
16 duckdb:vortex-file-compressed +2.4% +2.9% -0.4% +10.0% ➖ noise
17 datafusion:vortex-file-compressed +3.2% +1.6% +1.6% +10.0% ➖ noise
17 duckdb:duckdb -2.6% +1.6% -4.2% +10.0% ➖ noise
17 duckdb:vortex-file-compressed +6.6% +1.6% +5.0% +10.0% ➖ noise
18 datafusion:vortex-file-compressed +1.5% +1.6% -0.1% +10.0% ➖ noise
18 duckdb:duckdb +3.2% +1.6% +1.6% +10.0% ➖ noise
18 duckdb:vortex-file-compressed +3.9% +1.6% +2.3% +10.0% ➖ noise
19 datafusion:vortex-file-compressed -1.2% +1.6% -2.8% +27.4% ➖ noise
19 duckdb:duckdb +1.5% +1.6% -0.2% +18.2% ➖ noise
19 duckdb:vortex-file-compressed -0.7% +1.6% -2.3% +18.3% ➖ noise
20 datafusion:vortex-file-compressed +173.1% -0.7% +174.9% +122.9% 🚨 regression
20 duckdb:duckdb -12.1% -0.7% -11.5% +31.2% ➖ noise
20 duckdb:vortex-file-compressed -13.9% -0.7% -13.3% +53.4% ➖ noise
21 datafusion:vortex-file-compressed -10.0% +1.9% -11.7% +10.0% ✅ faster
21 duckdb:duckdb -7.4% +1.9% -9.2% +10.0% ✅ faster
21 duckdb:vortex-file-compressed -9.8% +1.9% -11.5% +10.0% ✅ faster
22 datafusion:vortex-file-compressed -0.6% +0.3% -0.9% +13.1% ➖ noise
22 duckdb:duckdb -0.3% +0.3% -0.6% +18.9% ➖ noise
22 duckdb:vortex-file-compressed -7.4% +0.3% -7.6% +13.8% ➖ noise
23 datafusion:vortex-file-compressed -20.5% +1.2% -21.4% +44.7% ➖ noise
23 duckdb:duckdb +2.8% +1.2% +1.6% +10.0% ➖ noise
23 duckdb:vortex-file-compressed +39.6% +1.2% +37.9% +22.8% 🚨 regression
24 datafusion:vortex-file-compressed +6.5% -1.8% +8.5% +10.0% ➖ noise
24 duckdb:duckdb +2.2% -1.8% +4.1% +10.8% ➖ noise
24 duckdb:vortex-file-compressed +10.3% -1.8% +12.4% +29.9% ➖ noise
25 datafusion:vortex-file-compressed -3.2% +0.1% -3.3% +10.0% ➖ noise
25 duckdb:duckdb +0.1% +0.1% -0.0% +10.0% ➖ noise
25 duckdb:vortex-file-compressed -2.0% +0.1% -2.1% +13.9% ➖ noise
26 datafusion:vortex-file-compressed -3.0% +0.5% -3.5% +10.0% ➖ noise
26 duckdb:duckdb +6.7% +0.5% +6.2% +13.1% ➖ noise
26 duckdb:vortex-file-compressed +12.6% +0.5% +12.1% +20.0% ➖ noise
27 datafusion:vortex-file-compressed -6.1% +0.1% -6.2% +10.0% ➖ noise
27 duckdb:duckdb -17.8% +0.1% -17.9% +10.0% ✅ faster
27 duckdb:vortex-file-compressed -5.5% +0.1% -5.6% +10.0% ➖ noise
28 datafusion:vortex-file-compressed -12.0% +0.5% -12.4% +10.0% ✅ faster
28 duckdb:duckdb -0.3% +0.5% -0.8% +10.0% ➖ noise
28 duckdb:vortex-file-compressed -0.9% +0.5% -1.4% +10.0% ➖ noise
29 datafusion:vortex-file-compressed -6.5% +4.1% -10.2% +10.0% ✅ faster
29 duckdb:duckdb +0.1% +4.1% -3.8% +10.0% ➖ noise
29 duckdb:vortex-file-compressed -9.8% +4.1% -13.3% +21.9% ➖ noise
30 datafusion:vortex-file-compressed +12.8% +0.0% +12.7% +10.0% 🚨 regression
30 duckdb:duckdb +3.2% +0.0% +3.1% +10.0% ➖ noise
30 duckdb:vortex-file-compressed +4.5% +0.0% +4.5% +10.0% ➖ noise
31 datafusion:vortex-file-compressed +15.1% +1.6% +13.3% +10.0% 🚨 regression
31 duckdb:duckdb +4.5% +1.6% +2.8% +10.0% ➖ noise
31 duckdb:vortex-file-compressed +7.1% +1.6% +5.4% +10.0% ➖ noise
32 datafusion:vortex-file-compressed +9.2% +2.1% +7.0% +10.0% ➖ noise
32 duckdb:duckdb -1.7% +2.1% -3.7% +10.0% ➖ noise
32 duckdb:vortex-file-compressed +2.0% +2.1% -0.1% +10.0% ➖ noise
33 datafusion:vortex-file-compressed +7.2% +2.6% +4.5% +10.0% ➖ noise
33 duckdb:duckdb -10.3% +2.6% -12.6% +10.0% ✅ faster
33 duckdb:vortex-file-compressed -0.8% +2.6% -3.3% +10.0% ➖ noise
34 datafusion:vortex-file-compressed +9.7% -1.5% +11.4% +10.0% 🚨 regression
34 duckdb:duckdb -6.3% -1.5% -4.9% +10.0% ➖ noise
34 duckdb:vortex-file-compressed +4.9% -1.5% +6.5% +10.0% ➖ noise
35 datafusion:vortex-file-compressed +9.2% +0.3% +8.9% +10.0% ➖ noise
35 duckdb:duckdb -1.0% +0.3% -1.4% +10.0% ➖ noise
35 duckdb:vortex-file-compressed +1.6% +0.3% +1.2% +10.0% ➖ noise
36 datafusion:vortex-file-compressed +12.7% -5.4% +19.1% +10.0% 🚨 regression
36 duckdb:duckdb +4.2% -5.4% +10.1% +10.0% 🚨 regression
36 duckdb:vortex-file-compressed +5.5% -5.4% +11.5% +10.0% 🚨 regression
37 datafusion:vortex-file-compressed +15.1% -2.6% +18.2% +10.0% 🚨 regression
37 duckdb:duckdb -0.0% -2.6% +2.6% +10.0% ➖ noise
37 duckdb:vortex-file-compressed +0.1% -2.6% +2.8% +10.0% ➖ noise
38 datafusion:vortex-file-compressed +18.4% +0.9% +17.4% +12.3% 🚨 regression
38 duckdb:duckdb +0.0% +0.9% -0.8% +10.5% ➖ noise
38 duckdb:vortex-file-compressed +2.7% +0.9% +1.8% +10.0% ➖ noise
39 datafusion:vortex-file-compressed +12.9% +4.6% +7.9% +10.0% ➖ noise
39 duckdb:duckdb -2.1% +4.6% -6.5% +10.0% ➖ noise
39 duckdb:vortex-file-compressed +11.8% +4.6% +6.8% +11.2% ➖ noise
40 datafusion:vortex-file-compressed +16.6% +1.0% +15.4% +11.4% 🚨 regression
40 duckdb:duckdb +0.3% +1.0% -0.7% +10.0% ➖ noise
40 duckdb:vortex-file-compressed -4.6% +1.0% -5.6% +12.0% ➖ noise
41 datafusion:vortex-file-compressed +18.6% +4.4% +13.6% +10.0% 🚨 regression
41 duckdb:duckdb +0.4% +4.4% -3.8% +10.0% ➖ noise
41 duckdb:vortex-file-compressed +1.7% +4.4% -2.6% +10.6% ➖ noise
42 datafusion:vortex-file-compressed +13.9% -2.8% +17.2% +12.9% 🚨 regression
42 duckdb:duckdb -1.7% -2.8% +1.1% +11.1% ➖ noise
42 duckdb:vortex-file-compressed +7.4% -2.8% +10.5% +12.2% ➖ noise

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: PolarSignals Profiling

Vortex (geomean): 1.026x ➖


datafusion / vortex-file-compressed (1.026x ➖, 0↑ 2↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
polarsignals_q00/datafusion:vortex-file-compressed 120298836 125439095 0.96
polarsignals_q01/datafusion:vortex-file-compressed 259356663 285167050 0.91
polarsignals_q02/datafusion:vortex-file-compressed 23471993 23421198 1.00
polarsignals_q03/datafusion:vortex-file-compressed 270272867 266547688 1.01
polarsignals_q04/datafusion:vortex-file-compressed 🚨 13379708 11560003 1.16
polarsignals_q05/datafusion:vortex-file-compressed 🚨 17429503 14894450 1.17
polarsignals_q06/datafusion:vortex-file-compressed 18945118 18769446 1.01
polarsignals_q07/datafusion:vortex-file-compressed 14373018 13689333 1.05
polarsignals_q08/datafusion:vortex-file-compressed 406098047 406122864 1.00
polarsignals_q09/datafusion:vortex-file-compressed 11383430 11243552 1.01

@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 +401.83 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: -1.1%
Vortex (geomean): 0.979x ➖
Parquet (geomean): 0.990x ➖
Shifts: Parquet (control) -1.0% · Median polish -1.6%


duckdb / vortex-file-compressed (0.974x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-file-compressed 11732749 11865711 0.99
statpopgen_q01/duckdb:vortex-file-compressed 26806500 28070500 0.95
statpopgen_q02/duckdb:vortex-file-compressed 1393583489 1424138095 0.98
statpopgen_q03/duckdb:vortex-file-compressed 3149251109 3211822689 0.98
statpopgen_q04/duckdb:vortex-file-compressed 3178141778 3255681733 0.98
statpopgen_q05/duckdb:vortex-file-compressed 1455553980 1501208903 0.97
statpopgen_q06/duckdb:vortex-file-compressed 2150069553 2179419370 0.99
statpopgen_q07/duckdb:vortex-file-compressed 203453614 219596189 0.93
statpopgen_q08/duckdb:vortex-file-compressed 243803774 245511977 0.99
statpopgen_q09/duckdb:vortex-file-compressed 2955869962 3019949612 0.98
statpopgen_q10/duckdb:vortex-file-compressed 4745720287 4850662834 0.98
duckdb / vortex-compact (0.984x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:vortex-compact 11249876 11819619 0.95
statpopgen_q01/duckdb:vortex-compact 166137751 173623456 0.96
statpopgen_q02/duckdb:vortex-compact 1840051131 1878067221 0.98
statpopgen_q03/duckdb:vortex-compact 3524545971 3583390084 0.98
statpopgen_q04/duckdb:vortex-compact 3611364727 3636664430 0.99
statpopgen_q05/duckdb:vortex-compact 1862148107 1882618018 0.99
statpopgen_q06/duckdb:vortex-compact 2713873624 2738795493 0.99
statpopgen_q07/duckdb:vortex-compact 894919047 902266664 0.99
statpopgen_q08/duckdb:vortex-compact 930156152 929983625 1.00
statpopgen_q09/duckdb:vortex-compact 3365315806 3380441800 1.00
statpopgen_q10/duckdb:vortex-compact 5484991971 5543762497 0.99
duckdb / parquet (0.990x ➖, 0↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
statpopgen_q00/duckdb:parquet 330179576 336061991 0.98
statpopgen_q01/duckdb:parquet 416848051 419978118 0.99
statpopgen_q02/duckdb:parquet 1012330511 1028391047 0.98
statpopgen_q03/duckdb:parquet 1517563725 1532247479 0.99
statpopgen_q04/duckdb:parquet 1510103172 1553859851 0.97
statpopgen_q05/duckdb:parquet 1018314375 1028360467 0.99
statpopgen_q06/duckdb:parquet 1516808933 1499003502 1.01
statpopgen_q07/duckdb:parquet 1352249431 1363767177 0.99
statpopgen_q08/duckdb:parquet 1371008255 1364584698 1.00
statpopgen_q09/duckdb:parquet 1382325086 1419622932 0.97
statpopgen_q10/duckdb:parquet 2689850919 2708965399 0.99
Full attributed analysis
Query Config Raw Δ Control Δ Attributed α Noise floor Significant?
0 duckdb:vortex-compact -4.8% -1.8% -3.1% +10.0% ➖ noise
0 duckdb:vortex-file-compressed -1.1% -1.8% +0.6% +10.0% ➖ noise
1 duckdb:vortex-compact -4.3% -0.7% -3.6% +10.0% ➖ noise
1 duckdb:vortex-file-compressed -4.5% -0.7% -3.8% +178.9% ➖ noise
2 duckdb:vortex-compact -2.0% -1.6% -0.5% +10.0% ➖ noise
2 duckdb:vortex-file-compressed -2.1% -1.6% -0.6% +10.0% ➖ noise
3 duckdb:vortex-compact -1.6% -1.0% -0.7% +10.0% ➖ noise
3 duckdb:vortex-file-compressed -1.9% -1.0% -1.0% +10.0% ➖ noise
4 duckdb:vortex-compact -0.7% -2.8% +2.2% +10.0% ➖ noise
4 duckdb:vortex-file-compressed -2.4% -2.8% +0.4% +10.0% ➖ noise
5 duckdb:vortex-compact -1.1% -1.0% -0.1% +10.0% ➖ noise
5 duckdb:vortex-file-compressed -3.0% -1.0% -2.1% +10.0% ➖ noise
6 duckdb:vortex-compact -0.9% +1.2% -2.1% +10.0% ➖ noise
6 duckdb:vortex-file-compressed -1.3% +1.2% -2.5% +10.0% ➖ noise
7 duckdb:vortex-compact -0.8% -0.8% +0.0% +10.0% ➖ noise
7 duckdb:vortex-file-compressed -7.4% -0.8% -6.6% +10.0% ➖ noise
8 duckdb:vortex-compact +0.0% +0.5% -0.5% +10.0% ➖ noise
8 duckdb:vortex-file-compressed -0.7% +0.5% -1.2% +10.0% ➖ noise
9 duckdb:vortex-compact -0.4% -2.6% +2.2% +10.0% ➖ noise
9 duckdb:vortex-file-compressed -2.1% -2.6% +0.5% +10.0% ➖ noise
10 duckdb:vortex-compact -1.1% -0.7% -0.4% +10.0% ➖ noise
10 duckdb:vortex-file-compressed -2.2% -0.7% -1.5% +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.034x ➖
Parquet (geomean): 1.019x ➖


unknown / unknown (1.026x ➖, 7↑ 12↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
compress time/Arade 1169041894 1141417190 1.02
compress time/Bimbo 7070613276 6925905132 1.02
compress time/CMSprovider 2925789601 2872301703 1.02
compress time/Euro2016 🚨 1225366321 426906342 2.87
compress time/Food 372352435 388960052 0.96
compress time/HashTags 🚨 1446787883 823156065 1.76
compress time/TPC-H l_comment canonical 1342350593 1282841973 1.05
compress time/TPC-H l_comment chunked 1356801548 1264264200 1.07
compress time/taxi 715578746 718141005 1.00
compress time/wide table cols=100 chunks=1 rows=1000 🚀 10774602 12271323 0.88
compress time/wide table cols=100 chunks=50 rows=1000 11150746 10919049 1.02
compress time/wide table cols=1000 chunks=1 rows=1000 128852971 128659761 1.00
compress time/wide table cols=1000 chunks=50 rows=1000 128564945 126989231 1.01
compress time/wide table cols=10000 chunks=1 rows=1000 1451182950 1450647772 1.00
compress time/wide table cols=10000 chunks=50 rows=1000 1426960743 1442786187 0.99
decompress time/Arade 27000157 25959039 1.04
decompress time/Bimbo 83114655 82020984 1.01
decompress time/CMSprovider 🚨 89144010 75027906 1.19
decompress time/Euro2016 18300662 19048612 0.96
decompress time/Food 8059037 8142687 0.99
decompress time/HashTags 🚨 84927335 70778261 1.20
decompress time/TPC-H l_comment canonical 38867762 38969514 1.00
decompress time/TPC-H l_comment chunked 39365904 39749827 0.99
decompress time/taxi 13998429 14629537 0.96
decompress time/wide table cols=100 chunks=1 rows=1000 2585071 2529359 1.02
decompress time/wide table cols=100 chunks=50 rows=1000 2676068 2615287 1.02
decompress time/wide table cols=1000 chunks=1 rows=1000 23858417 23141246 1.03
decompress time/wide table cols=1000 chunks=50 rows=1000 24106260 23765959 1.01
decompress time/wide table cols=10000 chunks=1 rows=1000 266988430 261048820 1.02
decompress time/wide table cols=10000 chunks=50 rows=1000 264039647 262615023 1.01
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 2587823500 2572740170 1.01
parquet_rs-zstd compress time/Bimbo 12644074363 12774235709 0.99
parquet_rs-zstd compress time/CMSprovider 🚨 7512215396 6822146386 1.10
parquet_rs-zstd compress time/Euro2016 1297310249 1304696802 0.99
parquet_rs-zstd compress time/Food 780676122 795544924 0.98
parquet_rs-zstd compress time/HashTags 2139166049 2169704280 0.99
parquet_rs-zstd compress time/TPC-H l_comment canonical 3154795880 3141924085 1.00
parquet_rs-zstd compress time/TPC-H l_comment chunked 3146368590 3154607001 1.00
parquet_rs-zstd compress time/taxi 1212196441 1198680103 1.01
parquet_rs-zstd compress time/wide table cols=100 chunks=1 rows=1000 5569394 6024698 0.92
parquet_rs-zstd compress time/wide table cols=100 chunks=50 rows=1000 5583561 6056371 0.92
parquet_rs-zstd compress time/wide table cols=1000 chunks=1 rows=1000 75303327 74430062 1.01
parquet_rs-zstd compress time/wide table cols=1000 chunks=50 rows=1000 74295873 74882593 0.99
parquet_rs-zstd compress time/wide table cols=10000 chunks=1 rows=1000 804132940 781934220 1.03
parquet_rs-zstd compress time/wide table cols=10000 chunks=50 rows=1000 775102076 789722652 0.98
parquet_rs-zstd decompress time/Arade 617562319 612709202 1.01
parquet_rs-zstd decompress time/Bimbo 1691242748 1691564872 1.00
parquet_rs-zstd decompress time/CMSprovider 1704917768 1685568755 1.01
parquet_rs-zstd decompress time/Euro2016 373351890 375481173 0.99
parquet_rs-zstd decompress time/Food 197571555 198137848 1.00
parquet_rs-zstd decompress time/HashTags 623236056 625562917 1.00
parquet_rs-zstd decompress time/TPC-H l_comment canonical 582037566 587024336 0.99
parquet_rs-zstd decompress time/TPC-H l_comment chunked 590354221 585523805 1.01
parquet_rs-zstd decompress time/taxi 243851763 244823904 1.00
parquet_rs-zstd decompress time/wide table cols=100 chunks=1 rows=1000 🚀 2149847 2790878 0.77
parquet_rs-zstd decompress time/wide table cols=100 chunks=50 rows=1000 🚀 2147128 2796511 0.77
parquet_rs-zstd decompress time/wide table cols=1000 chunks=1 rows=1000 32173365 32248794 1.00
parquet_rs-zstd decompress time/wide table cols=1000 chunks=50 rows=1000 32593512 33251486 0.98
parquet_rs-zstd decompress time/wide table cols=10000 chunks=1 rows=1000 340829725 342832435 0.99
parquet_rs-zstd decompress time/wide table cols=10000 chunks=50 rows=1000 348274554 346874555 1.00
vortex-file-compressed size/Arade 145363532 145363796 1.00
vortex-file-compressed size/Bimbo 468763364 468763332 1.00
vortex-file-compressed size/CMSprovider 416698476 417907812 1.00
vortex-file-compressed size/Euro2016 🚀 138383684 163586068 0.85
vortex-file-compressed size/Food 41937072 41926936 1.00
vortex-file-compressed size/HashTags 🚀 174118308 195647828 0.89
vortex-file-compressed size/TPC-H l_comment canonical 173023264 179087360 0.97
vortex-file-compressed size/TPC-H l_comment chunked 173072208 179087360 0.97
vortex-file-compressed size/taxi 52363340 52363948 1.00
vortex-file-compressed size/wide table cols=100 chunks=1 rows=1000 930880 930848 1.00
vortex-file-compressed size/wide table cols=100 chunks=50 rows=1000 930880 930848 1.00
vortex-file-compressed size/wide table cols=1000 chunks=1 rows=1000 9293680 9293648 1.00
vortex-file-compressed size/wide table cols=1000 chunks=50 rows=1000 9293680 9293648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=1 rows=1000 92957680 92957648 1.00
vortex-file-compressed size/wide table cols=10000 chunks=50 rows=1000 92957680 92957648 1.00
vortex:parquet-zstd ratio compress time/Arade 0 0 1.02
vortex:parquet-zstd ratio compress time/Bimbo 0 0 1.03
vortex:parquet-zstd ratio compress time/CMSprovider 0 0 0.93
vortex:parquet-zstd ratio compress time/Euro2016 🚨 0 0 2.89
vortex:parquet-zstd ratio compress time/Food 0 0 0.98
vortex:parquet-zstd ratio compress time/HashTags 🚨 0 0 1.78
vortex:parquet-zstd ratio compress time/TPC-H l_comment canonical 0 0 1.04
vortex:parquet-zstd ratio compress time/TPC-H l_comment chunked 0 0 1.08
vortex:parquet-zstd ratio compress time/taxi 0 0 0.99
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=1 rows=1000 1 2 0.95
vortex:parquet-zstd ratio compress time/wide table cols=100 chunks=50 rows=1000 🚨 1 1 1.11
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 1.02
vortex:parquet-zstd ratio compress time/wide table cols=10000 chunks=1 rows=1000 1 1 0.97
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.03
vortex:parquet-zstd ratio decompress time/Bimbo 0 0 1.01
vortex:parquet-zstd ratio decompress time/CMSprovider 🚨 0 0 1.17
vortex:parquet-zstd ratio decompress time/Euro2016 0 0 0.97
vortex:parquet-zstd ratio decompress time/Food 0 0 0.99
vortex:parquet-zstd ratio decompress time/HashTags 🚨 0 0 1.20
vortex:parquet-zstd ratio decompress time/TPC-H l_comment canonical 0 0 1.01
vortex:parquet-zstd ratio decompress time/TPC-H l_comment chunked 0 0 0.98
vortex:parquet-zstd ratio decompress time/taxi 0 0 0.96
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=1 rows=1000 🚨 1 0 1.33
vortex:parquet-zstd ratio decompress time/wide table cols=100 chunks=50 rows=1000 🚨 1 0 1.33
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=1 rows=1000 0 0 1.03
vortex:parquet-zstd ratio decompress time/wide table cols=1000 chunks=50 rows=1000 0 0 1.03
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=1 rows=1000 0 0 1.03
vortex:parquet-zstd ratio decompress time/wide table cols=10000 chunks=50 rows=1000 0 0 1.00
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
Layout change driven by two related bugs:

1. The cascading compressor can narrow OnPair's primitive slot children
   (e.g. `dict_offsets` u32 → u16). My `as_slice::<u32>()` panicked.
   The user pointed out codes themselves can't narrow below u9 — only
   the *offsets* arrays were ever at risk. Earlier fix (widen on
   decode) addressed the symptom; the v3 layout removes the root cause
   by keeping offsets as raw byte buffers all the way through.

2. The Vortex flat-segment writer aligns a segment to the alignment of
   its *first* buffer only. Primitive slot children that follow a
   variable-length buffer in the same segment end up at an arbitrary
   offset, and on read `PrimitiveArray<u32>::deserialize` rejects them
   with `Misaligned buffer`. This broke the file roundtrip end-to-end.

New layout (all alignment-stable):

    Buffer 0  dict_bytes               — dictionary blob from C++ trainer
    Buffer 1  dict_offsets   u32[]     — raw little-endian bytes
    Buffer 2  codes          u16[]     — raw little-endian bytes; each
                                          value uses up to `bits` ≤ 16 bits
    Buffer 3  codes_offsets  u32[]     — raw little-endian bytes
    Slot 0    uncompressed_lengths     — integer PrimitiveArray
    Slot 1    validity                 — optional Bool child

`codes` stays full u16 width on disk (no bit-packing) so the decode
hot loop is a straight indexed dict lookup with no unpack:

    for c in codes[lo..hi]:
        out.extend_from_slice(dict_bytes[off[c]..off[c+1]])

`bytes_to_buffer_u{16,32}` copies from arbitrarily-aligned input bytes
to a typed `Buffer<uN>`; the inner `from_le_bytes` loop autovectorises
to a single load on LE targets so the decode setup cost is tiny.

OnPairScheme::compress now only sends `uncompressed_lengths` through
the cascading compressor (the rest are buffers, not children); the
buffer alignment travels with the `BufferHandle::alignment` marker so
the segment writer pads correctly on disk.

Tests
* `vortex-onpair`              7 unit + 1 100k smoke   green
* `vortex-btrblocks`          35 unit + 3 doctests +
                              3 onpair_roundtrip       green
* `vortex-file`               2 + 1 new `test_onpair_string_roundtrip`
                              (full file write/read of a Utf8 column)  green

Smoke-test perf (release, 100k rows, 4.3 MB raw → still 25 % compressed):
  compress 184 ms, canonicalize 9 ms; equals / starts_with / contains
  pushdown counts match a brute-force scan exactly.

Signed-off-by: Claude <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs added the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
@github-actions github-actions Bot removed the action/benchmark Trigger full benchmarks to run on this PR label May 14, 2026
claude added 2 commits May 14, 2026 16:45
Expand the file-write round-trip suite from a single 4 K-row column to
cover the call shapes that the CI bench actually exercises (and that
surfaced the earlier `Misaligned buffer cannot be used to build
PrimitiveArray of u32` regression on TPC-H `supplier_0.vortex`):

* `single_column_single_chunk`  — baseline 4 K rows.
* `single_column_many_chunks`   — 50 K rows split across chunks.
* `tpch_supplier_shape`         — 32 K rows × 8 columns
  (`s_suppkey i64`, `s_name`, `s_address`, `s_nationkey i32`,
   `s_phone`, `s_acctbal i64`, `s_comment`, `s_city`) — five string
  columns interleaved with primitive columns, the exact mix where the
  alignment bug previously fired.
* `nullable_and_extreme_shapes` — 16 K rows of mixed string shapes
  (nulls, empties, 1 KiB-long blobs, short patterns) on a `Nullable`
  Utf8 column, hitting the validity child path.

All four pass after the buffer-only OnPair layout (commit f0e03a3).

Signed-off-by: Claude <noreply@anthropic.com>
Match `vortex::VortexSession::default()` precisely (DType + Array +
Layout + ScalarFn + ArrayKernels + AggregateFn + Runtime sessions
plus `register_default_encodings`). `vortex-file` can't depend on the
umbrella `vortex` crate, but inlining the same composition gives the
tests identical compressor + decompressor wiring to what
`vortex-bench` and downstream applications use.

The write path was already using `WriteStrategyBuilder::default()` =
`BtrBlocksCompressor::default()`; the helper now spells out that the
in-memory write goes through the full cascading compressor and reads
back via `OpenOptions::open_buffer` (no disk, no FS) so reviewers
don't have to chase the call graph.

Signed-off-by: Claude <noreply@anthropic.com>
@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.66 MB +26.65 KB +0.7%
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%
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.53 MB 2.89 MB -3.4%
part_0.vortex 1.0 vortex-file-compressed 5.44 MB 5.26 MB 190.53 KB -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 658.86 KB 47.45 KB -6.7%
customer_0.vortex 1.0 vortex-file-compressed 10.50 MB 9.41 MB 1.09 MB -10.4%
orders_0.vortex 1.0 vortex-file-compressed 43.43 MB 38.16 MB 5.28 MB -12.2%
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.85 MB (+0.0%)
  • vortex-file-compressed: 266.60 MB → 243.59 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.00 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.42 KB +240 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%
promotion.vortex 1.0 vortex-file-compressed 60.16 KB 58.68 KB 1.48 KB -2.5%
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%
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%
customer.vortex 1.0 vortex-file-compressed 4.52 MB 4.28 MB 240.71 KB -5.2%
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_address.vortex 1.0 vortex-file-compressed 1012.93 KB 848.95 KB 163.98 KB -16.2%
item.vortex 1.0 vortex-file-compressed 1.75 MB 1.44 MB 317.13 KB -17.7%
catalog_page.vortex 1.0 vortex-file-compressed 611.54 KB 472.53 KB 139.01 KB -22.7%
date_dim.vortex 1.0 vortex-file-compressed 1.03 MB 790.43 KB 264.89 KB -25.1%
time_dim.vortex 1.0 vortex-file-compressed 687.27 KB 446.73 KB 240.54 KB -35.0%

Totals:

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 14, 2026

Benchmarks: Random Access

Vortex (geomean): 0.941x ➖
Parquet (geomean): 0.939x ➖


unknown / unknown (0.947x ➖, 7↑ 0↓)
name PR adeda19 (ns) base a514cef (ns) ratio (PR/base)
random-access/feature-vectors/correlated/lance-tokio-local-disk 🚀 2037212 2657032 0.77
random-access/feature-vectors/correlated/lance-tokio-local-disk-footer 1476618 1474718 1.00
random-access/feature-vectors/correlated/parquet-tokio-local-disk 8087867083 8384758793 0.96
random-access/feature-vectors/correlated/parquet-tokio-local-disk-footer 8143935066 8530171352 0.95
random-access/feature-vectors/correlated/vortex-tokio-local-disk 7737871 7878024 0.98
random-access/feature-vectors/correlated/vortex-tokio-local-disk-footer 🚀 6704208 7779567 0.86
random-access/feature-vectors/uniform/lance-tokio-local-disk 5763930 5838225 0.99
random-access/feature-vectors/uniform/lance-tokio-local-disk-footer 6554380 6671247 0.98
random-access/feature-vectors/uniform/parquet-tokio-local-disk 8147344511 8546295164 0.95
random-access/feature-vectors/uniform/parquet-tokio-local-disk-footer 8139734147 8806853140 0.92
random-access/feature-vectors/uniform/vortex-tokio-local-disk 12842037 13820507 0.93
random-access/feature-vectors/uniform/vortex-tokio-local-disk-footer 12802876 13493243 0.95
random-access/lance-tokio-local-disk 763486 822115 0.93
random-access/lance-tokio-local-disk-footer 1319360 1386934 0.95
random-access/nested-lists/correlated/lance-tokio-local-disk 251743 271965 0.93
random-access/nested-lists/correlated/lance-tokio-local-disk-footer 625348 630511 0.99
random-access/nested-lists/correlated/parquet-tokio-local-disk 🚀 127534279 183585079 0.69
random-access/nested-lists/correlated/parquet-tokio-local-disk-footer 127723578 128185736 1.00
random-access/nested-lists/correlated/vortex-tokio-local-disk 558152 581020 0.96
random-access/nested-lists/correlated/vortex-tokio-local-disk-footer 🚀 540609 612302 0.88
random-access/nested-lists/uniform/lance-tokio-local-disk 1084217 1063816 1.02
random-access/nested-lists/uniform/lance-tokio-local-disk-footer 1465789 1442452 1.02
random-access/nested-lists/uniform/parquet-tokio-local-disk 127743610 128944660 0.99
random-access/nested-lists/uniform/parquet-tokio-local-disk-footer 127747386 130377996 0.98
random-access/nested-lists/uniform/vortex-tokio-local-disk 2078405 2091711 0.99
random-access/nested-lists/uniform/vortex-tokio-local-disk-footer 2062392 2089111 0.99
random-access/nested-structs/correlated/lance-tokio-local-disk 394526 408023 0.97
random-access/nested-structs/correlated/lance-tokio-local-disk-footer 596359 652577 0.91
random-access/nested-structs/correlated/parquet-tokio-local-disk 21039775 22485595 0.94
random-access/nested-structs/correlated/parquet-tokio-local-disk-footer 20977246 21611493 0.97
random-access/nested-structs/correlated/vortex-tokio-local-disk 734662 780395 0.94
random-access/nested-structs/correlated/vortex-tokio-local-disk-footer 722115 703867 1.03
random-access/nested-structs/uniform/lance-tokio-local-disk 🚀 2648742 2968794 0.89
random-access/nested-structs/uniform/lance-tokio-local-disk-footer 2863952 2884387 0.99
random-access/nested-structs/uniform/parquet-tokio-local-disk 20829299 20918253 1.00
random-access/nested-structs/uniform/parquet-tokio-local-disk-footer 20877047 21586544 0.97
random-access/nested-structs/uniform/vortex-tokio-local-disk 1632157 1605842 1.02
random-access/nested-structs/uniform/vortex-tokio-local-disk-footer 1604308 1617137 0.99
random-access/parquet-tokio-local-disk 164960833 169032989 0.98
random-access/parquet-tokio-local-disk-footer 164980657 176978020 0.93
random-access/taxi/correlated/lance-tokio-local-disk 952151 954157 1.00
random-access/taxi/correlated/lance-tokio-local-disk-footer 1604689 1577359 1.02
random-access/taxi/correlated/parquet-tokio-local-disk 247354103 268508380 0.92
random-access/taxi/correlated/parquet-tokio-local-disk-footer 247668363 270248158 0.92
random-access/taxi/correlated/vortex-tokio-local-disk 🚀 1524174 1794864 0.85
random-access/taxi/correlated/vortex-tokio-local-disk-footer 🚀 1678955 1926001 0.87
random-access/taxi/uniform/lance-tokio-local-disk 9385906 9459290 0.99
random-access/taxi/uniform/lance-tokio-local-disk-footer 9969789 10137485 0.98
random-access/taxi/uniform/parquet-tokio-local-disk 263262885 279799432 0.94
random-access/taxi/uniform/parquet-tokio-local-disk-footer 263962672 283757697 0.93
random-access/taxi/uniform/vortex-tokio-local-disk 4452711 4762315 0.93
random-access/taxi/uniform/vortex-tokio-local-disk-footer 4426113 4698600 0.94
random-access/vortex-tokio-local-disk 1178214 1277233 0.92
random-access/vortex-tokio-local-disk-footer 1199026 1304312 0.92

@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.93 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.3% overall, 9↑ 39↓)
File Scale Format Base HEAD Change %
part_0.vortex 10.0 vortex-compact 18.11 MB 18.27 MB +162.62 KB +0.9%
part_1.vortex 10.0 vortex-compact 18.11 MB 18.24 MB +140.00 KB +0.8%
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%
partsupp_0.vortex 10.0 vortex-compact 126.76 MB 126.76 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%
part_0.vortex 10.0 vortex-file-compressed 27.02 MB 26.20 MB 844.09 KB -3.1%
lineitem_7.vortex 10.0 vortex-file-compressed 134.01 MB 129.65 MB 4.36 MB -3.3%
lineitem_11.vortex 10.0 vortex-file-compressed 134.87 MB 130.47 MB 4.40 MB -3.3%
lineitem_0.vortex 10.0 vortex-file-compressed 134.65 MB 130.26 MB 4.40 MB -3.3%
lineitem_9.vortex 10.0 vortex-file-compressed 134.65 MB 130.24 MB 4.41 MB -3.3%
lineitem_2.vortex 10.0 vortex-file-compressed 134.38 MB 129.97 MB 4.41 MB -3.3%
lineitem_1.vortex 10.0 vortex-file-compressed 134.27 MB 129.86 MB 4.41 MB -3.3%
lineitem_12.vortex 10.0 vortex-file-compressed 134.52 MB 130.10 MB 4.42 MB -3.3%
lineitem_8.vortex 10.0 vortex-file-compressed 134.06 MB 129.64 MB 4.42 MB -3.3%
lineitem_3.vortex 10.0 vortex-file-compressed 133.74 MB 129.33 MB 4.41 MB -3.3%
lineitem_6.vortex 10.0 vortex-file-compressed 133.23 MB 128.83 MB 4.40 MB -3.3%
lineitem_4.vortex 10.0 vortex-file-compressed 134.43 MB 129.99 MB 4.44 MB -3.3%
lineitem_10.vortex 10.0 vortex-file-compressed 134.51 MB 130.03 MB 4.48 MB -3.3%
lineitem_5.vortex 10.0 vortex-file-compressed 133.86 MB 129.40 MB 4.46 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.24 MB 8.76 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.23 MB 8.92 MB -5.4%
supplier_0.vortex 10.0 vortex-file-compressed 6.69 MB 6.10 MB 599.56 KB -8.8%
part_1.vortex 10.0 vortex-file-compressed 26.99 MB 24.48 MB 2.51 MB -9.3%
customer_0.vortex 10.0 vortex-file-compressed 104.73 MB 93.79 MB 10.95 MB -10.5%
partsupp_0.vortex 10.0 vortex-file-compressed 180.47 MB 127.60 MB 52.87 MB -29.3%
partsupp_1.vortex 10.0 vortex-file-compressed 180.65 MB 127.59 MB 53.06 MB -29.4%

Totals:

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

@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, 7↑ 194↓)
File Scale Format Base HEAD Change %
hits_55.vortex 1.0 vortex-compact 93.77 MB 95.06 MB +1.29 MB +1.4%
hits_90.vortex 1.0 vortex-compact 81.86 MB 82.65 MB +808.15 KB +1.0%
hits_31.vortex 1.0 vortex-compact 55.56 MB 55.79 MB +241.38 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_85.vortex 1.0 vortex-compact 52.73 MB 52.78 MB +46.39 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_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_39.vortex 1.0 vortex-compact 49.82 MB 49.82 MB 4.49 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_68.vortex 1.0 vortex-compact 75.99 MB 75.99 MB 8.12 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_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_63.vortex 1.0 vortex-compact 46.10 MB 46.09 MB 10.88 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.21 KB -1.2%
hits_48.vortex 1.0 vortex-file-compressed 28.53 MB 28.06 MB 476.73 KB -1.6%
hits_24.vortex 1.0 vortex-file-compressed 79.71 MB 77.69 MB 2.01 MB -2.5%
hits_23.vortex 1.0 vortex-file-compressed 80.37 MB 78.17 MB 2.20 MB -2.7%
hits_22.vortex 1.0 vortex-file-compressed 81.17 MB 78.81 MB 2.36 MB -2.9%
hits_20.vortex 1.0 vortex-file-compressed 67.53 MB 63.11 MB 4.43 MB -6.6%
hits_21.vortex 1.0 vortex-file-compressed 101.28 MB 94.14 MB 7.14 MB -7.1%
hits_15.vortex 1.0 vortex-file-compressed 97.01 MB 89.31 MB 7.70 MB -7.9%
hits_16.vortex 1.0 vortex-file-compressed 87.59 MB 79.98 MB 7.61 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.42 MB 5.54 MB -8.8%
hits_19.vortex 1.0 vortex-file-compressed 82.10 MB 73.81 MB 8.29 MB -10.1%
hits_53.vortex 1.0 vortex-file-compressed 98.26 MB 87.46 MB 10.79 MB -11.0%
hits_61.vortex 1.0 vortex-file-compressed 114.43 MB 101.43 MB 13.01 MB -11.4%
hits_72.vortex 1.0 vortex-file-compressed 96.27 MB 85.05 MB 11.22 MB -11.7%
hits_37.vortex 1.0 vortex-file-compressed 97.54 MB 86.12 MB 11.42 MB -11.7%
hits_34.vortex 1.0 vortex-file-compressed 111.68 MB 97.87 MB 13.81 MB -12.4%
hits_52.vortex 1.0 vortex-file-compressed 120.78 MB 105.31 MB 15.47 MB -12.8%
hits_32.vortex 1.0 vortex-file-compressed 77.12 MB 66.99 MB 10.13 MB -13.1%
hits_31.vortex 1.0 vortex-file-compressed 104.39 MB 90.62 MB 13.77 MB -13.2%
hits_83.vortex 1.0 vortex-file-compressed 103.72 MB 89.94 MB 13.77 MB -13.3%
hits_85.vortex 1.0 vortex-file-compressed 106.37 MB 92.08 MB 14.29 MB -13.4%
hits_63.vortex 1.0 vortex-file-compressed 80.62 MB 69.71 MB 10.92 MB -13.5%
hits_46.vortex 1.0 vortex-file-compressed 80.32 MB 69.41 MB 10.91 MB -13.6%
hits_66.vortex 1.0 vortex-file-compressed 105.34 MB 90.51 MB 14.83 MB -14.1%
hits_49.vortex 1.0 vortex-file-compressed 88.67 MB 76.18 MB 12.49 MB -14.1%
hits_75.vortex 1.0 vortex-file-compressed 74.18 MB 63.72 MB 10.46 MB -14.1%
hits_36.vortex 1.0 vortex-file-compressed 80.27 MB 68.94 MB 11.34 MB -14.1%
hits_10.vortex 1.0 vortex-file-compressed 81.76 MB 70.18 MB 11.58 MB -14.2%
hits_64.vortex 1.0 vortex-file-compressed 95.27 MB 81.63 MB 13.64 MB -14.3%
hits_86.vortex 1.0 vortex-file-compressed 81.40 MB 69.74 MB 11.66 MB -14.3%
hits_39.vortex 1.0 vortex-file-compressed 94.06 MB 80.35 MB 13.71 MB -14.6%
hits_60.vortex 1.0 vortex-file-compressed 121.19 MB 103.48 MB 17.71 MB -14.6%
hits_80.vortex 1.0 vortex-file-compressed 124.24 MB 105.22 MB 19.01 MB -15.3%
hits_95.vortex 1.0 vortex-file-compressed 114.33 MB 96.72 MB 17.61 MB -15.4%
hits_17.vortex 1.0 vortex-file-compressed 103.64 MB 87.67 MB 15.97 MB -15.4%
hits_93.vortex 1.0 vortex-file-compressed 107.66 MB 90.74 MB 16.91 MB -15.7%
hits_30.vortex 1.0 vortex-file-compressed 104.00 MB 87.44 MB 16.56 MB -15.9%
hits_45.vortex 1.0 vortex-file-compressed 145.48 MB 122.25 MB 23.23 MB -16.0%
hits_73.vortex 1.0 vortex-file-compressed 131.83 MB 110.76 MB 21.07 MB -16.0%
hits_38.vortex 1.0 vortex-file-compressed 118.43 MB 99.36 MB 19.07 MB -16.1%
hits_91.vortex 1.0 vortex-file-compressed 116.23 MB 97.37 MB 18.86 MB -16.2%
hits_59.vortex 1.0 vortex-file-compressed 121.84 MB 101.97 MB 19.87 MB -16.3%
hits_69.vortex 1.0 vortex-file-compressed 147.61 MB 123.34 MB 24.27 MB -16.4%
hits_11.vortex 1.0 vortex-file-compressed 96.07 MB 80.21 MB 15.86 MB -16.5%
hits_25.vortex 1.0 vortex-file-compressed 137.01 MB 114.10 MB 22.90 MB -16.7%
hits_18.vortex 1.0 vortex-file-compressed 126.06 MB 104.95 MB 21.11 MB -16.7%
hits_35.vortex 1.0 vortex-file-compressed 138.81 MB 115.51 MB 23.30 MB -16.8%
hits_14.vortex 1.0 vortex-file-compressed 135.14 MB 111.73 MB 23.41 MB -17.3%
hits_40.vortex 1.0 vortex-file-compressed 142.99 MB 118.14 MB 24.85 MB -17.4%
hits_76.vortex 1.0 vortex-file-compressed 140.05 MB 114.77 MB 25.28 MB -18.1%
hits_97.vortex 1.0 vortex-file-compressed 130.96 MB 107.19 MB 23.77 MB -18.1%
hits_70.vortex 1.0 vortex-file-compressed 115.14 MB 93.83 MB 21.31 MB -18.5%
hits_82.vortex 1.0 vortex-file-compressed 122.77 MB 100.01 MB 22.76 MB -18.5%
hits_88.vortex 1.0 vortex-file-compressed 137.34 MB 111.87 MB 25.47 MB -18.5%
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.46 MB 27.59 MB -19.0%
hits_71.vortex 1.0 vortex-file-compressed 126.41 MB 102.17 MB 24.24 MB -19.2%
hits_12.vortex 1.0 vortex-file-compressed 125.34 MB 101.25 MB 24.09 MB -19.2%
hits_13.vortex 1.0 vortex-file-compressed 123.20 MB 99.49 MB 23.71 MB -19.2%
hits_0.vortex 1.0 vortex-file-compressed 112.17 MB 89.70 MB 22.47 MB -20.0%
hits_9.vortex 1.0 vortex-file-compressed 124.22 MB 99.29 MB 24.92 MB -20.1%
hits_81.vortex 1.0 vortex-file-compressed 126.55 MB 100.88 MB 25.67 MB -20.3%
hits_58.vortex 1.0 vortex-file-compressed 113.78 MB 90.58 MB 23.19 MB -20.4%
hits_62.vortex 1.0 vortex-file-compressed 148.36 MB 117.64 MB 30.72 MB -20.7%
hits_74.vortex 1.0 vortex-file-compressed 152.12 MB 119.88 MB 32.23 MB -21.2%
hits_98.vortex 1.0 vortex-file-compressed 150.55 MB 118.30 MB 32.26 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.09 MB 48.59 MB -21.9%
hits_2.vortex 1.0 vortex-file-compressed 241.46 MB 187.68 MB 53.78 MB -22.3%
hits_99.vortex 1.0 vortex-file-compressed 158.88 MB 123.08 MB 35.80 MB -22.5%
hits_65.vortex 1.0 vortex-file-compressed 238.05 MB 184.40 MB 53.64 MB -22.5%
hits_77.vortex 1.0 vortex-file-compressed 218.96 MB 169.23 MB 49.73 MB -22.7%
hits_44.vortex 1.0 vortex-file-compressed 243.64 MB 187.65 MB 55.99 MB -23.0%
hits_1.vortex 1.0 vortex-file-compressed 181.16 MB 138.82 MB 42.34 MB -23.4%
hits_26.vortex 1.0 vortex-file-compressed 144.05 MB 110.22 MB 33.83 MB -23.5%
hits_8.vortex 1.0 vortex-file-compressed 122.86 MB 93.31 MB 29.55 MB -24.1%
hits_7.vortex 1.0 vortex-file-compressed 123.82 MB 94.03 MB 29.79 MB -24.1%
hits_6.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.04 MB 29.61 MB -24.1%
hits_56.vortex 1.0 vortex-file-compressed 163.76 MB 123.14 MB 40.61 MB -24.8%
hits_96.vortex 1.0 vortex-file-compressed 180.76 MB 135.66 MB 45.10 MB -25.0%
hits_42.vortex 1.0 vortex-file-compressed 298.79 MB 224.13 MB 74.66 MB -25.0%
hits_41.vortex 1.0 vortex-file-compressed 300.49 MB 225.29 MB 75.20 MB -25.0%
hits_94.vortex 1.0 vortex-file-compressed 185.12 MB 138.56 MB 46.56 MB -25.2%
hits_43.vortex 1.0 vortex-file-compressed 305.71 MB 228.33 MB 77.38 MB -25.3%
hits_92.vortex 1.0 vortex-file-compressed 196.47 MB 146.72 MB 49.75 MB -25.3%
hits_3.vortex 1.0 vortex-file-compressed 193.11 MB 142.34 MB 50.78 MB -26.3%
hits_68.vortex 1.0 vortex-file-compressed 172.16 MB 123.26 MB 48.91 MB -28.4%
hits_28.vortex 1.0 vortex-file-compressed 167.55 MB 119.43 MB 48.12 MB -28.7%
hits_79.vortex 1.0 vortex-file-compressed 204.16 MB 144.65 MB 59.51 MB -29.1%
hits_27.vortex 1.0 vortex-file-compressed 174.61 MB 122.41 MB 52.20 MB -29.9%
hits_50.vortex 1.0 vortex-file-compressed 255.24 MB 177.99 MB 77.25 MB -30.3%
hits_90.vortex 1.0 vortex-file-compressed 204.12 MB 141.47 MB 62.65 MB -30.7%
hits_89.vortex 1.0 vortex-file-compressed 266.01 MB 183.16 MB 82.85 MB -31.1%
hits_67.vortex 1.0 vortex-file-compressed 265.94 MB 182.62 MB 83.32 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.40 MB 83.16 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.60 MB 142.23 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
…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>
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