Skip to content

IN LIST: optimize Utf8View and BinaryView filters - #24088

Draft
geoffreyclaude wants to merge 8 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-byte-view-hashset
Draft

IN LIST: optimize Utf8View and BinaryView filters#24088
geoffreyclaude wants to merge 8 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-byte-view-hashset

Conversation

@geoffreyclaude

@geoffreyclaude geoffreyclaude commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Note

Until #24102 merges, GitHub's Files changed tab also shows the earlier PRs in the stack. The direct diff from #24102 to this PR shows only this PR's byte-view changes.

Rationale for this change

Arrow represents every Utf8View and BinaryView value with a 16-byte view. When a value is at most 12 bytes long, the complete value is stored directly in that view:

32-bit length | up to 12 value bytes, zero-padded

Equal short values therefore have the same 128-bit view. DataFusion can look up that view directly, without reading another buffer or using Arrow's general value comparison.

This PR uses that faster path when every non-null value in the IN list is at most 12 bytes long. The byte-view adapter treats each inline view as a Decimal128 key and passes it to the shared primitive selector from #24283, the same selector used by #24102:

Decimal128 is only a 16-byte container here; no decimal operations are performed.

A longer input value cannot match a short list value because its encoded length is different, so it can be rejected without reading its backing bytes. If the list itself contains a value longer than 12 bytes, DataFusion keeps using the general filter.

Null list entries do not affect this choice, but are still recorded for SQL null behavior. After unwrapping any dictionary, the input and list must use the same view type: Utf8View is not mixed with BinaryView, and regular Utf8 and Binary keep their existing paths.

What changes are included in this PR?

  • Adds the short-value path for Utf8View and BinaryView.
  • Passes the 128-bit keys to the shared primitive selector instead of making a separate filter choice.
  • Keeps the general filter for longer list values or mismatched types.
  • Preserves slices, dictionaries, nulls, IN, and NOT IN.

Are these changes tested?

Tests cover both view types and both faster paths; the 4/5-value and 12/13-byte boundaries; long inputs and lists that require the general filter; exact-type routing; slices and dictionaries; input and list nulls; and IN and NOT IN.

Are there any user-facing changes?

No. SQL results and public APIs are unchanged.

Automated benchmark snapshot

Automated run on an aarch64 Neoverse V2 runner, comparing #24102 with this PR at exact commit 00dd083e. The benchmark evaluates 8,192-row batches after filter construction. Lower is better.

All 15 reported rows improved, with a 35.9% geometric-mean time reduction.

Benchmark Before After Change
utf8view/short_8b/list=4/match=0% 18.7 us 11.6 us -38.0% (1.61x faster)
utf8view/short_8b/list=4/match=50% 39.3 us 11.6 us -70.5% (3.39x faster)
utf8view/short_8b/list=16/match=0% 18.9 us 14.1 us -25.4% (1.34x faster)
utf8view/short_8b/list=16/match=50% 39.6 us 30.1 us -24.0% (1.32x faster)
utf8view/short_8b/list=64/match=0% 18.6 us 13.4 us -28.0% (1.39x faster)
utf8view/short_8b/list=64/match=50% 38.5 us 28.4 us -26.2% (1.36x faster)
utf8view/short_8b/list=256/match=0% 18.5 us 13.4 us -27.6% (1.38x faster)
utf8view/short_8b/list=256/match=50% 38.3 us 25.7 us -32.9% (1.49x faster)
utf8view/len_12b/list=16/match=0% 18.6 us 15.4 us -17.2% (1.21x faster)
utf8view/len_12b/list=16/match=50% 40.0 us 18.3 us -54.2% (2.19x faster)
utf8view/len_12b/list=64/match=0% 18.7 us 13.7 us -26.7% (1.36x faster)
utf8view/len_12b/list=64/match=50% 39.6 us 25.9 us -34.6% (1.53x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=20% 38.7 us 25.8 us -33.3% (1.50x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN 38.5 us 24.7 us -35.8% (1.56x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=50% 29.2 us 17.8 us -39.0% (1.64x faster)

@github-actions github-actions Bot added the physical-expr Changes to the physical-expr crates label Aug 4, 2026
@codecov-commenter

codecov-commenter commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.91873% with 108 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.15%. Comparing base (426b351) to head (00dd083).
⚠️ Report is 106 commits behind head on main.

Files with missing lines Patch % Lines
...l-expr/src/expressions/in_list/primitive_filter.rs 73.79% 21 Missing and 17 partials ⚠️
...rc/expressions/in_list/fixed_size_binary_filter.rs 83.56% 13 Missing and 23 partials ⚠️
...l-expr/src/expressions/in_list/byte_view_filter.rs 83.72% 9 Missing and 12 partials ⚠️
...atafusion/physical-expr/src/expressions/in_list.rs 78.94% 1 Missing and 7 partials ⚠️
.../physical-expr/src/expressions/in_list/strategy.rs 84.84% 0 Missing and 5 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24088      +/-   ##
==========================================
+ Coverage   80.91%   81.15%   +0.23%     
==========================================
  Files        1102     1114      +12     
  Lines      377102   387354   +10252     
  Branches   377102   387354   +10252     
==========================================
+ Hits       305143   314345    +9202     
- Misses      53769    54461     +692     
- Partials    18190    18548     +358     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191485522-1453-kq4t5 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                  HEAD                                   codex_in-list-byte-view-hashset
-----                                                  ----                                   -------------------------------
in_list/Float32/list=100/nulls=0%                      1.00     18.1±0.26µs        ? ?/sec    1.26     22.9±1.53µs        ? ?/sec
in_list/Float32/list=100/nulls=20%                     1.35     49.8±2.50µs        ? ?/sec    1.00     36.9±0.54µs        ? ?/sec
in_list/Float32/list=28/nulls=0%                       1.00     14.5±0.02µs        ? ?/sec    1.00     14.5±0.03µs        ? ?/sec
in_list/Float32/list=28/nulls=20%                      1.00     14.6±0.03µs        ? ?/sec    1.00     14.6±0.03µs        ? ?/sec
in_list/Float32/list=3/nulls=0%                        1.00      3.2±0.01µs        ? ?/sec    1.00      3.2±0.01µs        ? ?/sec
in_list/Float32/list=3/nulls=20%                       1.00      3.3±0.01µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
in_list/Float32/list=8/nulls=0%                        1.00      5.1±0.01µs        ? ?/sec    1.00      5.1±0.02µs        ? ?/sec
in_list/Float32/list=8/nulls=20%                       1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.02µs        ? ?/sec
in_list/Int16/list=100/nulls=0%                        1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
in_list/Int16/list=100/nulls=20%                       1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/Int16/list=28/nulls=0%                         1.00      5.3±0.01µs        ? ?/sec    1.01      5.4±0.09µs        ? ?/sec
in_list/Int16/list=28/nulls=20%                        1.00      5.5±0.02µs        ? ?/sec    1.01      5.5±0.01µs        ? ?/sec
in_list/Int16/list=3/nulls=0%                          1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.01µs        ? ?/sec
in_list/Int16/list=3/nulls=20%                         1.00      3.6±0.01µs        ? ?/sec    1.00      3.6±0.01µs        ? ?/sec
in_list/Int16/list=8/nulls=0%                          1.00      4.5±0.01µs        ? ?/sec    1.00      4.5±0.02µs        ? ?/sec
in_list/Int16/list=8/nulls=20%                         1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.01µs        ? ?/sec
in_list/Int32/list=100/nulls=0%                        1.87     56.1±0.66µs        ? ?/sec    1.00     30.0±0.54µs        ? ?/sec
in_list/Int32/list=100/nulls=20%                       2.07     57.8±0.62µs        ? ?/sec    1.00     27.9±0.62µs        ? ?/sec
in_list/Int32/list=28/nulls=0%                         1.00     14.5±0.05µs        ? ?/sec    1.00     14.5±0.02µs        ? ?/sec
in_list/Int32/list=28/nulls=20%                        1.00     14.7±0.02µs        ? ?/sec    1.00     14.7±0.04µs        ? ?/sec
in_list/Int32/list=3/nulls=0%                          1.00      3.2±0.00µs        ? ?/sec    1.00      3.2±0.02µs        ? ?/sec
in_list/Int32/list=3/nulls=20%                         1.00      3.4±0.02µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/Int32/list=8/nulls=0%                          1.00      5.1±0.02µs        ? ?/sec    1.00      5.1±0.02µs        ? ?/sec
in_list/Int32/list=8/nulls=20%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.3±0.02µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=0%                  1.00     54.8±0.80µs        ? ?/sec    1.08     59.3±1.59µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=20%                 1.00     62.4±1.41µs        ? ?/sec    1.03     64.3±0.62µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=0%                   1.00     31.5±0.63µs        ? ?/sec    1.05     33.0±0.81µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=20%                  1.00     40.9±1.00µs        ? ?/sec    1.19     48.6±4.45µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=0%                    1.00      3.8±0.01µs        ? ?/sec    1.00      3.8±0.02µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=20%                   1.00      3.9±0.00µs        ? ?/sec    1.00      3.9±0.02µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=0%                    1.00      7.3±0.01µs        ? ?/sec    1.00      7.3±0.04µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=20%                   1.00      7.5±0.01µs        ? ?/sec    1.00      7.5±0.01µs        ? ?/sec
in_list/UInt8/list=100/nulls=0%                        1.00      5.3±0.01µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
in_list/UInt8/list=100/nulls=20%                       1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/UInt8/list=28/nulls=0%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
in_list/UInt8/list=28/nulls=20%                        1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/UInt8/list=3/nulls=0%                          1.00      3.3±0.01µs        ? ?/sec    1.00      3.3±0.01µs        ? ?/sec
in_list/UInt8/list=3/nulls=20%                         1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=0%                          1.00      3.8±0.01µs        ? ?/sec    1.00      3.8±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=20%                         1.00      3.9±0.01µs        ? ?/sec    1.00      3.9±0.01µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=100                 1.02     82.1±2.17µs        ? ?/sec    1.00     80.5±1.82µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=12                  1.00     48.7±2.62µs        ? ?/sec    1.08     52.4±0.48µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=3                   1.00    100.2±3.17µs        ? ?/sec    1.00    100.2±0.61µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=100                1.00     76.8±0.61µs        ? ?/sec    1.03     79.2±0.60µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=12                 1.00     54.2±1.02µs        ? ?/sec    1.05     57.0±1.97µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=3                  1.02     51.0±1.85µs        ? ?/sec    1.00     49.9±0.57µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=100                  1.00    123.1±1.93µs        ? ?/sec    1.02    126.1±0.93µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=12                   1.00     57.5±0.67µs        ? ?/sec    1.05     60.2±0.41µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=3                    1.00     92.1±0.49µs        ? ?/sec    1.01     92.7±0.54µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=100                 1.00    121.0±0.73µs        ? ?/sec    1.02    123.3±0.86µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=12                  1.00     71.3±0.44µs        ? ?/sec    1.01     72.2±0.43µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=3                   1.00     79.2±0.54µs        ? ?/sec    1.02     80.8±3.07µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=100                   1.00     64.5±0.50µs        ? ?/sec    1.00     64.6±0.59µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=12                    1.00     26.6±0.11µs        ? ?/sec    1.00     26.6±0.10µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=3                     1.00     28.2±0.19µs        ? ?/sec    1.00     28.1±0.10µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=100                  1.00     68.2±0.28µs        ? ?/sec    1.00     68.0±0.24µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=12                   1.00     29.1±0.08µs        ? ?/sec    1.00     29.1±0.07µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=3                    1.00     31.6±0.04µs        ? ?/sec    1.00     31.4±0.05µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=100                   1.00     64.7±0.34µs        ? ?/sec    1.00     64.9±0.58µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=12                    1.01     26.9±0.08µs        ? ?/sec    1.00     26.8±0.06µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=3                     1.01     29.2±0.14µs        ? ?/sec    1.00     28.8±0.08µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=100                  1.00     69.2±0.47µs        ? ?/sec    1.00     69.1±0.42µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=12                   1.00     29.7±0.06µs        ? ?/sec    1.00     29.6±0.05µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=3                    1.06     34.0±1.47µs        ? ?/sec    1.00     32.0±0.05µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=0%          1.00     59.2±0.84µs        ? ?/sec    1.01     59.8±0.75µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=20%         1.10     54.6±2.38µs        ? ?/sec    1.00     49.7±3.32µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=0%         1.01    116.4±0.98µs        ? ?/sec    1.00    115.0±1.58µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=20%        1.00    126.0±2.18µs        ? ?/sec    1.02    128.9±2.18µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=0%         1.00    150.4±1.49µs        ? ?/sec    1.02    153.6±2.76µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=20%        1.00    144.3±1.52µs        ? ?/sec    1.03    147.9±1.39µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=0%           1.00    125.9±1.09µs        ? ?/sec    1.00    126.1±0.75µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=20%          1.00     50.1±2.81µs        ? ?/sec    1.05     52.6±1.09µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=0%          1.01    140.3±2.28µs        ? ?/sec    1.00    139.3±2.08µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=20%         1.00     99.5±2.06µs        ? ?/sec    1.01    100.8±1.24µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=0%          1.00    154.9±1.10µs        ? ?/sec    1.00    155.4±2.18µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=20%         1.00    150.1±1.84µs        ? ?/sec    1.02    153.6±1.73µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=0%            1.00     39.0±0.30µs        ? ?/sec    1.00     38.9±0.60µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=20%           1.05     63.9±1.08µs        ? ?/sec    1.00     60.9±1.38µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=0%           1.00     62.1±1.14µs        ? ?/sec    1.00     62.2±1.30µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=20%          1.00     64.2±0.58µs        ? ?/sec    1.01     64.8±0.86µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=0%           1.01    101.3±0.47µs        ? ?/sec    1.00    100.2±1.02µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=20%          1.01    128.4±1.00µs        ? ?/sec    1.00    127.7±0.92µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=0%            1.00     39.4±0.35µs        ? ?/sec    1.00     39.3±0.55µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=20%           1.04     41.2±1.12µs        ? ?/sec    1.00     39.7±1.05µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=0%           1.00     73.4±1.75µs        ? ?/sec    1.00     73.7±1.51µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=20%          1.02     69.7±1.15µs        ? ?/sec    1.00     68.3±1.35µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=0%           1.00    130.3±2.75µs        ? ?/sec    1.00    129.8±2.28µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=20%          1.00    114.8±1.08µs        ? ?/sec    1.01    116.4±0.95µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=100             1.01    101.6±1.00µs        ? ?/sec    1.00    100.4±1.20µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=12              1.00     30.8±0.89µs        ? ?/sec    1.78     54.7±1.18µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=3               1.38     38.0±1.03µs        ? ?/sec    1.00     27.6±2.15µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=100            1.00    104.7±1.10µs        ? ?/sec    1.02    107.2±1.49µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=12             1.01     66.4±0.90µs        ? ?/sec    1.00     65.7±0.72µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=3              1.00     27.6±0.60µs        ? ?/sec    2.20     60.9±2.50µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=100              1.00    115.6±0.95µs        ? ?/sec    1.01    117.2±1.23µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=12               1.00     62.3±0.77µs        ? ?/sec    1.13     70.3±0.66µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=3                1.00     28.2±1.10µs        ? ?/sec    2.40     67.7±1.47µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=100             1.00     85.4±1.32µs        ? ?/sec    1.03     88.0±1.75µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=12              1.00     33.8±0.63µs        ? ?/sec    1.09     37.0±1.95µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=3               1.00     33.5±0.98µs        ? ?/sec    1.92     64.4±4.63µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=100               1.00     76.2±0.43µs        ? ?/sec    1.00     76.5±0.64µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=12                1.87     18.0±0.07µs        ? ?/sec    1.00      9.6±0.01µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=3                 1.89     18.2±0.04µs        ? ?/sec    1.00      9.6±0.03µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=100              1.00     70.4±0.44µs        ? ?/sec    1.01     70.8±0.24µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=12               2.28     22.2±0.08µs        ? ?/sec    1.00      9.7±0.01µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=3                2.28     22.2±0.11µs        ? ?/sec    1.00      9.7±0.02µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=100               1.01     77.0±0.27µs        ? ?/sec    1.00     76.3±0.28µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=12                1.17     18.4±0.12µs        ? ?/sec    1.00     15.7±0.03µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=3                 1.21     19.2±0.14µs        ? ?/sec    1.00     15.8±0.05µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=100              1.00     70.6±0.29µs        ? ?/sec    1.01     71.4±0.47µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=12               1.42     22.4±0.07µs        ? ?/sec    1.00     15.7±0.05µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=3                1.43     22.3±0.06µs        ? ?/sec    1.00     15.6±0.14µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=0%      1.00     80.7±0.94µs        ? ?/sec    1.07     86.1±1.20µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=20%     1.00     62.3±2.40µs        ? ?/sec    1.00     62.1±1.13µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=0%     1.00     87.0±2.35µs        ? ?/sec    1.03     89.3±2.49µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=20%    1.05     89.5±4.46µs        ? ?/sec    1.00     85.3±2.73µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=0%     1.00    111.0±1.70µs        ? ?/sec    1.03    113.9±1.77µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=20%    1.04    122.5±4.31µs        ? ?/sec    1.00    118.1±3.64µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=0%       1.00    106.3±1.23µs        ? ?/sec    1.05    111.9±0.94µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=20%      1.00     76.0±2.06µs        ? ?/sec    1.04     78.8±1.80µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=0%      1.00    121.4±1.05µs        ? ?/sec    1.01    123.1±2.13µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=20%     1.05     73.4±2.33µs        ? ?/sec    1.00     69.9±1.92µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=0%      1.00    118.4±1.10µs        ? ?/sec    1.02    121.2±1.20µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=20%     1.04    117.4±1.68µs        ? ?/sec    1.00    112.7±2.91µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=0%        1.00     35.4±0.46µs        ? ?/sec    1.04     36.9±0.38µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=20%       1.02     31.9±0.17µs        ? ?/sec    1.00     31.4±0.27µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=0%       1.02     61.2±1.26µs        ? ?/sec    1.00     60.2±0.74µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=20%      1.10     65.0±1.04µs        ? ?/sec    1.00     58.9±1.26µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=0%       1.00     76.9±1.38µs        ? ?/sec    1.00     76.7±1.31µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=20%      1.09    109.0±1.90µs        ? ?/sec    1.00    100.0±1.86µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=0%        1.00     35.1±0.44µs        ? ?/sec    1.05     36.8±0.36µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=20%       1.02     32.4±0.33µs        ? ?/sec    1.00     31.7±0.35µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=0%       1.00     55.2±1.64µs        ? ?/sec    1.02     56.3±1.65µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=20%      1.13     58.9±0.95µs        ? ?/sec    1.00     52.0±0.64µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=0%       1.00     68.9±1.18µs        ? ?/sec    1.01     69.9±2.62µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=20%      1.13    105.8±1.70µs        ? ?/sec    1.00     93.5±2.79µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=0%           1.01     54.8±0.68µs        ? ?/sec    1.00     54.3±0.24µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=20%          1.00     72.3±0.48µs        ? ?/sec    1.01     73.2±0.50µs        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=0%         1.00   1887.6±7.97ns        ? ?/sec    1.00   1880.6±6.16ns        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=20%        1.00     72.2±0.51µs        ? ?/sec    1.01     72.7±0.44µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=0%          1.00     28.7±0.06µs        ? ?/sec    1.00     28.8±0.13µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=20%         1.00     71.5±0.27µs        ? ?/sec    1.01     72.4±0.24µs        ? ?/sec
in_list_cols/Int32/list=3/match=0%/nulls=0%            1.00      5.7±0.01µs        ? ?/sec    1.00      5.7±0.01µs        ? ?/sec
in_list_cols/Int32/list=3/match=0%/nulls=20%           1.00      7.1±0.01µs        ? ?/sec    1.03      7.3±0.04µs        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=0%          1.01   1882.5±5.17ns        ? ?/sec    1.00   1871.0±5.27ns        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=20%         1.00      7.1±0.02µs        ? ?/sec    1.01      7.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=0%           1.00      5.7±0.05µs        ? ?/sec    1.00      5.7±0.01µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=20%          1.00      7.1±0.02µs        ? ?/sec    1.01      7.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=8/match=0%/nulls=0%            1.00     15.2±0.03µs        ? ?/sec    1.00     15.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=8/match=0%/nulls=20%           1.00     19.8±0.06µs        ? ?/sec    1.00     19.7±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=0%          1.01   1880.8±5.46ns        ? ?/sec    1.00  1867.4±11.36ns        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=20%         1.01     19.8±0.05µs        ? ?/sec    1.00     19.7±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=0%           1.00     15.3±0.04µs        ? ?/sec    1.00     15.2±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=20%          1.00     19.8±0.04µs        ? ?/sec    1.00     19.8±0.05µs        ? ?/sec
in_list_cols/Utf8/list=28/match=0%                     1.00    181.3±0.40µs        ? ?/sec    1.00    180.4±0.46µs        ? ?/sec
in_list_cols/Utf8/list=28/match=100%                   1.05    740.1±1.83µs        ? ?/sec    1.00    706.4±1.87µs        ? ?/sec
in_list_cols/Utf8/list=28/match=50%                    1.00   1148.5±2.04µs        ? ?/sec    1.00   1154.2±1.86µs        ? ?/sec
in_list_cols/Utf8/list=3/match=0%                      1.00     18.9±0.03µs        ? ?/sec    1.00     18.9±0.03µs        ? ?/sec
in_list_cols/Utf8/list=3/match=100%                    1.06     78.7±0.85µs        ? ?/sec    1.00     73.9±0.34µs        ? ?/sec
in_list_cols/Utf8/list=3/match=50%                     1.00    100.1±0.72µs        ? ?/sec    1.04    104.1±2.68µs        ? ?/sec
in_list_cols/Utf8/list=8/match=0%                      1.00     51.5±0.13µs        ? ?/sec    1.00     51.6±0.29µs        ? ?/sec
in_list_cols/Utf8/list=8/match=100%                    1.05    210.3±0.76µs        ? ?/sec    1.00    200.3±0.68µs        ? ?/sec
in_list_cols/Utf8/list=8/match=50%                     1.01    317.2±0.53µs        ? ?/sec    1.00    314.8±1.81µs        ? ?/sec

Resource Usage

in_list — base (merge-base)

Metric Value
Wall time 310.1s
Peak memory 44.8 MiB
Avg memory 19.7 MiB
CPU user 579.8s
CPU sys 1.6s
Peak spill 0 B

in_list — branch

Metric Value
Wall time 305.1s
Peak memory 42.3 MiB
Avg memory 18.7 MiB
CPU user 578.7s
CPU sys 1.7s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191695185-1456-pstns 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list_strategy

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list_strategy
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                                HEAD                                   codex_in-list-byte-view-hashset
-----                                                                ----                                   -------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.9±0.01µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.06µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      8.1±0.01µs        ? ?/sec    1.00      8.1±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.9±0.00µs        ? ?/sec    1.00      8.0±0.07µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      9.0±0.01µs        ? ?/sec    1.00      9.0±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.5±0.01µs        ? ?/sec    1.00      8.5±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.3±0.01µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.2±0.01µs        ? ?/sec    1.00      8.2±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.9±0.02µs        ? ?/sec    1.00      9.8±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.04     16.3±0.02µs        ? ?/sec    1.00     15.7±0.01µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.14     24.5±1.83µs        ? ?/sec    1.00     21.5±0.25µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.08     28.0±0.13µs        ? ?/sec    1.00     25.9±0.07µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         1.00     55.5±0.32µs        ? ?/sec    1.06     58.7±0.46µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.03     25.4±0.05µs        ? ?/sec    1.00     24.8±0.27µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.00     50.5±0.39µs        ? ?/sec    1.03     52.1±0.59µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.02     24.0±0.02µs        ? ?/sec    1.00     23.5±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             1.00     54.4±0.38µs        ? ?/sec    1.02     55.4±0.61µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.02     24.1±0.06µs        ? ?/sec    1.00     23.6±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.00     54.4±0.59µs        ? ?/sec    1.01     54.9±0.63µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.2±0.01µs        ? ?/sec    1.21     14.7±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     19.2±0.10µs        ? ?/sec    1.08     20.8±0.06µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.01      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=50%                                  1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.4±0.02µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.8±0.00µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.28     22.1±0.15µs        ? ?/sec    1.00     17.3±0.13µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.3±0.02µs        ? ?/sec    1.00      9.4±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     71.1±0.28µs        ? ?/sec    1.01     72.1±0.34µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.01     62.2±0.42µs        ? ?/sec    1.00     61.7±0.46µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     86.4±0.18µs        ? ?/sec    1.01     87.2±0.22µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.52     38.5±0.14µs        ? ?/sec    1.00     25.3±0.37µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.65     38.7±0.17µs        ? ?/sec    1.00     23.5±0.33µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.81     28.9±0.11µs        ? ?/sec    1.00     15.9±0.12µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.18     16.0±0.09µs        ? ?/sec    1.00     13.6±0.04µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.03     24.3±0.44µs        ? ?/sec    1.00     23.7±0.36µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.16     16.1±0.06µs        ? ?/sec    1.00     14.0±0.30µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.14     25.1±0.19µs        ? ?/sec    1.00     21.9±0.81µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.02µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.05µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     12.4±0.02µs        ? ?/sec    1.03     12.8±0.04µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.35     22.5±3.07µs        ? ?/sec    1.00     16.6±0.09µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.6±0.10µs        ? ?/sec    1.00     12.6±0.02µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.53     25.4±0.21µs        ? ?/sec    1.00     16.6±0.10µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=50%                            1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.00     17.9±0.24µs        ? ?/sec    1.02     18.3±0.02µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.08     33.3±0.25µs        ? ?/sec    1.00     31.0±1.34µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.6±0.02µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.01µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.01     35.1±0.03µs        ? ?/sec    1.00     34.6±0.04µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     69.7±0.35µs        ? ?/sec    1.03     72.1±0.31µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.4±0.03µs        ? ?/sec    1.00     34.5±0.02µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     71.4±0.42µs        ? ?/sec    1.03     73.4±0.26µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.01     34.8±0.03µs        ? ?/sec    1.00     34.3±0.07µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     68.6±0.26µs        ? ?/sec    1.06     72.5±0.33µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.00     35.3±0.10µs        ? ?/sec    1.12     39.6±0.08µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     95.8±1.05µs        ? ?/sec    1.09    104.5±0.88µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.00     38.8±0.13µs        ? ?/sec    1.05     40.5±0.08µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    103.2±0.90µs        ? ?/sec    1.12    115.7±0.65µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     70.9±1.01µs        ? ?/sec    1.02     72.2±0.34µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.07     67.1±0.53µs        ? ?/sec    1.00     62.6±0.47µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     27.3±0.06µs        ? ?/sec    1.01     27.7±0.10µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.01     65.0±0.45µs        ? ?/sec    1.00     64.2±0.44µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.00     27.3±0.03µs        ? ?/sec    1.03     28.1±0.03µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.04     67.0±0.40µs        ? ?/sec    1.00     64.2±0.36µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.02     27.7±0.01µs        ? ?/sec    1.00     27.1±0.11µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.06     66.3±0.27µs        ? ?/sec    1.00     62.7±0.40µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.32     18.9±0.03µs        ? ?/sec    1.00     14.3±0.01µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   2.09     40.0±0.25µs        ? ?/sec    1.00     19.2±0.30µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.34     19.0±0.02µs        ? ?/sec    1.00     14.2±0.02µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.73     39.7±0.19µs        ? ?/sec    1.00     22.9±3.32µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     40.9±0.03µs        ? ?/sec    1.02     41.6±0.07µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     85.1±0.29µs        ? ?/sec    1.02     86.5±0.51µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.8±0.03µs        ? ?/sec    1.00     40.8±0.08µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     84.9±0.37µs        ? ?/sec    1.01     85.9±0.38µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.8±0.05µs        ? ?/sec    1.02     41.4±0.04µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     84.1±0.16µs        ? ?/sec    1.02     85.7±0.33µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     41.0±0.09µs        ? ?/sec    1.00     40.8±0.03µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     84.1±0.40µs        ? ?/sec    1.01     84.9±0.34µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     29.9±0.05µs        ? ?/sec    1.06     31.7±0.12µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.04     69.4±0.49µs        ? ?/sec    1.00     66.9±0.27µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.3±0.12µs        ? ?/sec    1.03     35.3±0.16µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.03     83.6±0.53µs        ? ?/sec    1.00     80.8±0.60µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.8±0.05µs        ? ?/sec    1.00     42.8±0.12µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.00     84.5±0.28µs        ? ?/sec    1.05     89.1±0.98µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.03     42.0±0.09µs        ? ?/sec    1.00     40.8±0.13µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     84.2±0.39µs        ? ?/sec    1.01     85.3±0.20µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.02     30.7±0.08µs        ? ?/sec    1.00     30.2±0.05µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     72.5±0.36µs        ? ?/sec    1.01     73.2±0.12µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.36     19.3±0.20µs        ? ?/sec    1.00     14.2±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.57     39.3±0.15µs        ? ?/sec    1.00     25.0±1.68µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.29     19.4±0.05µs        ? ?/sec    1.00     15.0±0.20µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.43     38.3±0.14µs        ? ?/sec    1.00     26.8±1.40µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.65     19.0±0.03µs        ? ?/sec    1.00     11.5±0.05µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   3.46     39.7±0.21µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.37     19.6±0.02µs        ? ?/sec    1.00     14.3±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.48     38.8±0.19µs        ? ?/sec    1.00     26.3±0.31µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1330.3s
Peak memory 40.8 MiB
Avg memory 31.3 MiB
CPU user 1537.5s
CPU sys 1.3s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1300.3s
Peak memory 43.7 MiB
Avg memory 34.3 MiB
CPU user 1511.6s
CPU sys 1.3s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from 65b67ba to a44ee0d Compare August 6, 2026 16:01
@geoffreyclaude geoffreyclaude changed the title IN LIST: optimize Utf8View and BinaryView filters with standard hash sets IN LIST: optimize Utf8View and BinaryView filters Aug 7, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from a44ee0d to b0443b6 Compare August 9, 2026 06:21
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch 10 times, most recently from 61cc7a6 to 156d76b Compare August 11, 2026 16:29
@github-actions github-actions Bot added auto detected api change Auto detected API change and removed auto detected api change Auto detected API change labels Aug 11, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch 2 times, most recently from 6a5284e to f8ae3ad Compare August 12, 2026 10:18
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5265996536-1569-lm87v 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (f8ae3ad) to 426b351 (merge-base) diff

Run configuration
run benchmark in_list_strategy

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (f8ae3ad) to 426b351 (merge-base) diff

Run configuration
run benchmark in_list_strategy
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                                HEAD                                   codex_in-list-byte-view-hashset
-----                                                                ----                                   -------------------------------
dictionary/i32/dict=10/list=16                                       1.01      7.9±0.02µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.01      8.0±0.02µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.01      8.1±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.01      7.9±0.01µs        ? ?/sec    1.00      7.9±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.01      7.9±0.01µs        ? ?/sec    1.00      7.9±0.05µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.01      9.0±0.08µs        ? ?/sec    1.00      8.9±0.00µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.01      8.5±0.03µs        ? ?/sec    1.00      8.4±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.01      8.3±0.05µs        ? ?/sec    1.00      8.2±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.01      8.2±0.01µs        ? ?/sec    1.00      8.1±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.01      9.9±0.02µs        ? ?/sec    1.00      9.8±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     16.0±0.02µs        ? ?/sec    1.02     16.3±0.02µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.00     18.3±0.06µs        ? ?/sec    1.55     28.2±0.46µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.00µs        ? ?/sec    1.00      3.6±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=0%                                                                     1.00      4.8±0.01µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                                                                    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.53     28.0±0.03µs        ? ?/sec    1.00     18.3±0.07µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         2.31     54.2±0.42µs        ? ?/sec    1.00     23.4±0.15µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.59     25.6±0.05µs        ? ?/sec    1.00     16.1±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.89     49.4±0.81µs        ? ?/sec    1.00     26.2±1.90µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              2.07     24.1±0.25µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.60     53.6±0.77µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.50     23.9±0.05µs        ? ?/sec    1.00     15.9±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned                                                    1.00     18.0±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.97     53.0±0.61µs        ? ?/sec    1.00     26.9±0.27µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned                                                   1.00     29.5±0.30µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                                                                     1.00      5.4±0.00µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                                                                    1.00      5.3±0.00µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.2±0.01µs        ? ?/sec    1.00     12.2±0.03µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     19.2±0.09µs        ? ?/sec    1.01     19.5±0.08µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.01      5.3±0.03µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
narrow_integer/i16/list=4/match=0%                                   1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=50%                                  1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.8±0.01µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.03     23.1±0.88µs        ? ?/sec    1.00     22.3±0.19µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.2±0.01µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.3±0.01µs        ? ?/sec    1.00      9.3±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.01     70.4±0.41µs        ? ?/sec    1.00     69.5±0.28µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.03     62.8±0.59µs        ? ?/sec    1.00     60.8±0.47µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     87.2±0.22µs        ? ?/sec    1.00     87.2±0.22µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.44     38.7±0.18µs        ? ?/sec    1.00     26.9±0.42µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.39     38.7±0.22µs        ? ?/sec    1.00     27.9±0.15µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.65     29.0±0.15µs        ? ?/sec    1.00     17.6±0.23µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                                                             1.00     16.0±0.02µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                                                            1.00     27.1±0.28µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                                                            1.00     16.0±0.02µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                                                           1.00     27.1±0.38µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.00     14.7±0.00µs        ? ?/sec    1.02     15.0±0.03µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.44     24.0±0.29µs        ? ?/sec    1.00     16.7±0.47µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.06     16.0±0.05µs        ? ?/sec    1.00     15.0±0.03µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.00     21.0±2.50µs        ? ?/sec    1.10     23.0±0.95µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.01µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.4±0.02µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     12.7±0.03µs        ? ?/sec    1.01     12.8±0.09µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.34     24.3±0.17µs        ? ?/sec    1.00     18.1±0.26µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.5±0.02µs        ? ?/sec    1.04     12.9±0.02µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.08     25.0±0.20µs        ? ?/sec    1.00     23.2±0.86µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     16.6±0.01µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.7±0.01µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
primitive/i64/small_list/list=4/match=50%                            1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.00     17.7±0.01µs        ? ?/sec    1.00     17.6±0.04µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.08     33.5±0.26µs        ? ?/sec    1.00     31.2±0.28µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.7±0.02µs        ? ?/sec    1.00     16.6±0.02µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.6±0.03µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.02     34.6±0.02µs        ? ?/sec    1.00     33.9±0.04µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     69.8±0.25µs        ? ?/sec    1.02     71.2±0.41µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.2±0.10µs        ? ?/sec    1.02     34.8±0.09µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     71.3±0.45µs        ? ?/sec    1.00     71.4±0.26µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.01     34.6±0.08µs        ? ?/sec    1.00     34.2±0.35µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.04     72.0±2.05µs        ? ?/sec    1.00     69.2±0.48µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.01     35.8±0.13µs        ? ?/sec    1.00     35.5±0.15µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     94.3±2.07µs        ? ?/sec    1.01     94.9±3.05µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.02     39.0±0.12µs        ? ?/sec    1.00     38.3±0.07µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    102.9±0.94µs        ? ?/sec    1.00    103.1±0.92µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     70.9±0.66µs        ? ?/sec    1.00     71.0±0.43µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.03     65.2±0.35µs        ? ?/sec    1.00     63.3±0.32µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.02     27.3±0.03µs        ? ?/sec    1.00     26.8±0.15µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.03     65.8±0.35µs        ? ?/sec    1.00     63.9±0.73µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.03     27.4±0.20µs        ? ?/sec    1.00     26.7±0.03µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.01     66.0±0.84µs        ? ?/sec    1.00     65.0±0.48µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.04     27.7±0.04µs        ? ?/sec    1.00     26.6±0.06µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.05     65.5±0.46µs        ? ?/sec    1.00     62.2±0.48µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.14     19.0±0.04µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.46     40.3±0.20µs        ? ?/sec    1.00     27.7±0.20µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.19     18.9±0.02µs        ? ?/sec    1.00     15.9±0.03µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.63     40.5±0.19µs        ? ?/sec    1.00     24.9±2.70µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.01     41.9±0.05µs        ? ?/sec    1.00     41.4±0.40µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     84.9±0.43µs        ? ?/sec    1.01     86.1±0.27µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.01     41.2±0.19µs        ? ?/sec    1.00     41.0±0.29µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     85.3±0.20µs        ? ?/sec    1.00     85.3±0.65µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.9±0.10µs        ? ?/sec    1.00     41.0±0.08µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     84.8±0.18µs        ? ?/sec    1.02     86.2±0.35µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.01     41.1±0.04µs        ? ?/sec    1.00     40.9±0.10µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.01     85.7±0.48µs        ? ?/sec    1.00     85.1±0.46µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     30.0±0.06µs        ? ?/sec    1.01     30.3±0.09µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     69.1±0.32µs        ? ?/sec    1.03     70.9±0.46µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.0±0.10µs        ? ?/sec    1.01     34.3±0.15µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.01     83.7±0.55µs        ? ?/sec    1.00     82.8±0.41µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.7±0.07µs        ? ?/sec    1.02     43.4±0.25µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.01     85.2±0.38µs        ? ?/sec    1.00     84.5±0.29µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.02     42.0±0.10µs        ? ?/sec    1.00     41.1±0.21µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     85.4±0.15µs        ? ?/sec    1.00     85.0±0.37µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.02     30.6±0.04µs        ? ?/sec    1.00     29.9±0.04µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     70.6±0.26µs        ? ?/sec    1.02     71.8±0.25µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.19     19.2±0.02µs        ? ?/sec    1.00     16.1±0.01µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.43     39.7±0.18µs        ? ?/sec    1.00     27.8±0.15µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.11     19.6±0.06µs        ? ?/sec    1.00     17.6±0.09µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.38     38.1±0.26µs        ? ?/sec    1.00     27.6±0.67µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.65     19.0±0.05µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   3.48     39.9±0.36µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.23     19.6±0.05µs        ? ?/sec    1.00     16.0±0.03µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.37     38.6±0.19µs        ? ?/sec    1.00     28.1±0.32µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1330.3s
Peak memory 41.3 MiB
Avg memory 32.1 MiB
CPU user 1535.1s
CPU sys 1.3s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1455.3s
Peak memory 41.1 MiB
Avg memory 30.8 MiB
CPU user 1635.1s
CPU sys 1.4s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

I noticed this is marked as draft -- please ping me when ready to review

@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch 7 times, most recently from 854fa0b to dab222a Compare August 13, 2026 10:14
geoffreyclaude and others added 6 commits August 13, 2026 12:40
Use PrimitiveHashSetFilter<T, K> for integer and floating-point arrays. Integer filters keep their native key type by default; Float32 and Float64 use their existing bitwise wrapper keys, preserving signed-zero and NaN-payload behavior.

The key type and conversion are selected statically, with no function pointer or dynamic dispatch in the lookup loop. Filter selection, dictionary handling, null handling, IN, and NOT IN behavior remain unchanged. Decimal128 routing remains in the following commit.
Route Decimal128 lists above the branchless cutoff through PrimitiveHashSetFilter, replacing the ArrayStaticFilter fallback.
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from dab222a to cc8aacf Compare August 13, 2026 10:46
Treat inline Utf8View and BinaryView values as 128-bit primitive keys and pass them to the shared primitive filter selector. This reuses direct comparisons for short lists and the primitive hash-set path for larger lists without reading backing buffers.

Lists containing a non-inline value continue to use the general filter. Exact view types, dictionaries, slices, nulls, IN, and NOT IN keep their existing behavior.
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from cc8aacf to 00dd083 Compare August 13, 2026 11:42
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy
baseline:
ref: 7ff49f9
changed:
ref: 00dd083

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5279945938-1588-j8mp7 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing 00dd083 (00dd083) to 7ff49f9 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "7ff49f94d14f73151a55f59314247c4c223073f2"
changed:
  ref: "00dd083e02da959679b1b5996f9b64cafe2cff75"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing 00dd083 (00dd083) to 7ff49f9 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "7ff49f94d14f73151a55f59314247c4c223073f2"
changed:
  ref: "00dd083e02da959679b1b5996f9b64cafe2cff75"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                                HEAD                                   codex_in-list-byte-view-hashset
-----                                                                ----                                   -------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.8±0.01µs        ? ?/sec    1.00      7.9±0.04µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.06µs        ? ?/sec    1.00      8.0±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      7.9±0.01µs        ? ?/sec    1.00      7.9±0.05µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.9±0.00µs        ? ?/sec    1.00      7.9±0.04µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.9±0.01µs        ? ?/sec    1.00      9.0±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.4±0.00µs        ? ?/sec    1.00      8.4±0.00µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.2±0.00µs        ? ?/sec    1.00      8.2±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.01      8.2±0.03µs        ? ?/sec    1.00      8.1±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.8±0.01µs        ? ?/sec    1.00      9.8±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     16.0±0.01µs        ? ?/sec    1.01     16.1±0.03µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.00     22.0±2.91µs        ? ?/sec    1.30     28.6±0.17µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.03µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.02µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=0%                              1.00      4.8±0.00µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             1.00      4.8±0.01µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.14     17.4±0.03µs        ? ?/sec    1.00     15.3±0.03µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         1.00     18.2±0.02µs        ? ?/sec    1.00     18.2±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.12     15.5±0.04µs        ? ?/sec    1.00     13.7±0.06µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.40     23.5±1.68µs        ? ?/sec    1.00     16.8±0.16µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.00     11.7±0.01µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             1.00     11.7±0.01µs        ? ?/sec    1.00     11.7±0.05µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.07     15.0±0.02µs        ? ?/sec    1.00     14.0±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned             1.12     17.0±0.03µs        ? ?/sec    1.00     15.1±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.00     18.9±2.22µs        ? ?/sec    1.21     22.9±2.13µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned            1.18     28.2±0.28µs        ? ?/sec    1.00     23.9±2.55µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              1.00      5.4±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             1.00      5.3±0.00µs        ? ?/sec    1.01      5.4±0.00µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.1±0.01µs        ? ?/sec    1.01     12.2±0.02µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     19.7±0.10µs        ? ?/sec    1.01     19.8±0.10µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.01      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=50%                                  1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.4±0.05µs        ? ?/sec    1.00      3.4±0.02µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.4±0.05µs        ? ?/sec    1.00      3.4±0.02µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.8±0.00µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.00     22.7±0.19µs        ? ?/sec    1.08     24.5±0.47µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.2±0.03µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.3±0.02µs        ? ?/sec    1.00      9.3±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     70.0±0.39µs        ? ?/sec    1.03     71.8±0.48µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.01     62.4±0.60µs        ? ?/sec    1.00     61.8±0.46µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.13     86.5±0.20µs        ? ?/sec    1.00     76.4±0.45µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.50     38.7±0.27µs        ? ?/sec    1.00     25.8±0.12µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.56     38.5±0.13µs        ? ?/sec    1.00     24.7±0.40µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.64     29.2±0.14µs        ? ?/sec    1.00     17.8±0.14µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                      1.06     15.1±0.02µs        ? ?/sec    1.00     14.2±0.02µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                     1.15     23.8±2.11µs        ? ?/sec    1.00     20.8±0.49µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                     1.16     15.3±0.04µs        ? ?/sec    1.00     13.1±0.01µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                    1.57     25.7±0.37µs        ? ?/sec    1.00     16.4±0.05µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.00     12.5±0.09µs        ? ?/sec    1.22     15.2±0.11µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.15     23.7±0.33µs        ? ?/sec    1.00     20.6±3.14µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.00     12.5±0.02µs        ? ?/sec    1.36     17.0±0.06µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.00     20.2±2.57µs        ? ?/sec    1.09     22.0±2.61µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.04µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.03µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.4±0.03µs        ? ?/sec    1.00     16.4±0.03µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.19     14.8±0.02µs        ? ?/sec    1.00     12.4±0.01µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.00     16.2±0.08µs        ? ?/sec    1.36     22.0±2.29µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.20     15.3±0.51µs        ? ?/sec    1.00     12.8±0.05µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.36     24.1±0.41µs        ? ?/sec    1.00     17.7±0.12µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.7±0.01µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.4±0.07µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=50%                            1.00      4.4±0.02µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.01     17.7±0.01µs        ? ?/sec    1.00     17.6±0.05µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.00     33.6±0.26µs        ? ?/sec    1.05     35.3±0.48µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.03µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.01µs        ? ?/sec    1.00     16.7±0.04µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.4±0.01µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.03     35.2±0.08µs        ? ?/sec    1.00     34.2±0.03µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     69.8±0.32µs        ? ?/sec    1.03     72.1±0.33µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.5±0.03µs        ? ?/sec    1.02     35.0±0.04µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     71.6±0.20µs        ? ?/sec    1.03     73.4±0.25µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.01     34.4±0.02µs        ? ?/sec    1.00     34.1±0.03µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     69.3±0.35µs        ? ?/sec    1.04     72.0±0.30µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.00     35.9±0.09µs        ? ?/sec    1.04     37.4±0.08µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     98.0±0.81µs        ? ?/sec    1.10    107.6±0.57µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.01     39.1±0.12µs        ? ?/sec    1.00     38.7±0.08µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    103.3±0.98µs        ? ?/sec    1.15    119.2±0.51µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     71.1±0.28µs        ? ?/sec    1.02     72.4±0.33µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.02     65.7±0.54µs        ? ?/sec    1.00     64.4±0.32µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.03     27.3±0.03µs        ? ?/sec    1.00     26.5±0.02µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.00     66.0±0.50µs        ? ?/sec    1.01     66.5±0.43µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.02     27.2±0.03µs        ? ?/sec    1.00     26.7±0.17µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.00     65.2±0.29µs        ? ?/sec    1.04     67.7±0.35µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.03     27.1±0.02µs        ? ?/sec    1.00     26.4±0.14µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.00     64.8±0.23µs        ? ?/sec    1.02     65.8±0.69µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.21     18.6±0.02µs        ? ?/sec    1.00     15.4±0.05µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   2.19     40.0±0.18µs        ? ?/sec    1.00     18.3±1.43µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.36     18.7±0.03µs        ? ?/sec    1.00     13.7±0.03µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.53     39.6±0.17µs        ? ?/sec    1.00     25.9±0.26µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.01     41.2±0.05µs        ? ?/sec    1.00     40.8±0.06µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     85.0±0.20µs        ? ?/sec    1.01     86.1±0.30µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.04     41.8±0.18µs        ? ?/sec    1.00     40.3±0.04µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     85.5±0.37µs        ? ?/sec    1.00     85.5±0.25µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.01     41.1±0.03µs        ? ?/sec    1.00     40.8±0.07µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     85.3±0.32µs        ? ?/sec    1.01     86.0±0.38µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.02     41.1±0.08µs        ? ?/sec    1.00     40.4±0.02µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     83.4±0.20µs        ? ?/sec    1.01     84.6±0.19µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     34.0±0.16µs        ? ?/sec    1.03     35.1±0.16µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     90.1±0.65µs        ? ?/sec    1.06     95.8±0.58µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.3±0.13µs        ? ?/sec    1.02     34.9±0.16µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.00    101.0±0.42µs        ? ?/sec    1.05    106.5±0.46µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.02     43.4±0.18µs        ? ?/sec    1.00     42.5±0.06µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.01     85.2±0.35µs        ? ?/sec    1.00     84.0±0.20µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.01     40.9±0.10µs        ? ?/sec    1.00     40.5±0.05µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     85.4±0.18µs        ? ?/sec    1.00     85.8±0.37µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.00     30.2±0.05µs        ? ?/sec    1.00     30.2±0.18µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.01     72.6±0.21µs        ? ?/sec    1.00     71.9±0.11µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.34     18.9±0.36µs        ? ?/sec    1.00     14.1±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.31     39.6±0.36µs        ? ?/sec    1.00     30.1±0.42µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.37     18.5±0.09µs        ? ?/sec    1.00     13.4±0.07µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.49     38.3±0.28µs        ? ?/sec    1.00     25.7±1.10µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.60     18.7±0.02µs        ? ?/sec    1.00     11.6±0.00µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   3.38     39.3±0.21µs        ? ?/sec    1.00     11.6±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.39     18.6±0.03µs        ? ?/sec    1.00     13.4±0.10µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.36     38.5±0.33µs        ? ?/sec    1.00     28.4±0.39µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1460.3s
Peak memory 41.1 MiB
Avg memory 30.9 MiB
CPU user 1651.8s
CPU sys 1.8s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1430.3s
Peak memory 42.4 MiB
Avg memory 31.8 MiB
CPU user 1633.6s
CPU sys 1.5s
Peak spill 0 B

File an issue against this benchmark runner

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

Labels

physical-expr Changes to the physical-expr crates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants