Skip to content

IN LIST: reuse primitive filters for FixedSizeBinary - #24102

Open
geoffreyclaude wants to merge 2 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-fixed-size-binary-hashset
Open

IN LIST: reuse primitive filters for FixedSizeBinary#24102
geoffreyclaude wants to merge 2 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-fixed-size-binary-hashset

Conversation

@geoffreyclaude

@geoffreyclaude geoffreyclaude commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

Today, FixedSizeBinary IN LIST expressions use the general filter, even when their width matches a primitive type with a faster specialized filter. This makes repeated evaluation slower than necessary for common fixed-width values.

A FixedSizeBinary(N) value is exactly N bytes long. For widths 1, 2, 4, 8, and 16, DataFusion already has fast IN LIST filters for primitive values of the same size. This PR lets FixedSizeBinary reuse them.

For example, a 4-byte value can be read as a UInt32 lookup key. This does not turn the value into a number or perform arithmetic. The list and input use the same mapping, so two keys match exactly when the original bytes match. Machine byte order may change the numeric interpretation, but it does not change equality.

The filter depends on the width and the number of non-null values in the list:

Width Lookup key Small lists Larger lists
1 byte UInt8 direct comparison through 16 values bitmap
2 bytes UInt16 direct comparison through 8 values bitmap
4 bytes UInt32 direct comparison through 32 values hash set
8 bytes UInt64 direct comparison through 16 values hash set
16 bytes Decimal128 (i128 storage) direct comparison through 4 values hash set

#24283 provides this choice, so this PR only needs to map each supported width to the matching primitive key. Other widths keep using the general filter.

Arrow buffers are normally aligned for the selected primitive key and can be read without copying. If a buffer is not aligned for that key type, the list is copied once when the filter is built, while an unaligned input is copied before each evaluation. After unwrapping any dictionary, the input must have the same FixedSizeBinary(N) type as the list.

What changes are included in this PR?

  • Adds the faster path for FixedSizeBinary widths 1, 2, 4, 8, and 16.
  • Reuses the primitive filters from IN LIST: centralize primitive filters and optimize Decimal128 #24283.
  • Preserves slices, dictionaries, nulls, IN, and NOT IN.
  • Keeps unsupported widths on the general filter.
  • Expands FixedSizeBinary benchmark coverage from 8 to 14 cases, including both match rates for an input unaligned for i128 access.

Are these changes tested?

Tests cover every supported width around its direct-comparison limit; bitmap and hash-set hits and misses; slices and dictionaries; input and list nulls; IN and NOT IN; wrong widths and Arrow types; unsupported widths; and aligned and unaligned buffers.

Are there any user-facing changes?

No. SQL results and public APIs are unchanged.

Benchmark snapshot

The benchmark repeatedly evaluates an 8,192-row batch; filter construction is outside the timed loop. Each selected configuration is measured with 0% and 50% matches:

  • fsb1/list=16 exercises the direct-comparison boundary for 1-byte keys.
  • fsb2/list=64 exercises the bitmap path.
  • fsb16/list=4 exercises the direct-comparison boundary for 16-byte keys.
  • fsb16/list=64, list=256, and list=10000 exercise hash-set scaling.
  • fsb16/list=64/input=unaligned exercises the per-evaluation input-copy path for buffers unaligned for i128 access.

Lower is better.

An automated run compared this PR's benchmark-only first commit with the completed implementation. The benchmark source is identical in both states, so the comparison isolates the production changes.

Across this selected case set, speedups range from 1.51x to 12.11x, and the geometric mean is 3.17x (68.5% lower execution time).

The aligned and unaligned fsb16/list=64 cases contain identical values, so their results show the per-evaluation input-copy overhead: +1.6 us (12%) with 0% matches and +3.5 us (17%) with 50% matches.

Benchmark Before After Change
fixed_size_binary/fsb1/list=16/match=0% 25.4 us 4.7 us -81.5% (5.40x faster)
fixed_size_binary/fsb1/list=16/match=50% 56.9 us 4.7 us -91.7% (12.11x faster)
fixed_size_binary/fsb2/list=64/match=0% 24.6 us 5.3 us -78.5% (4.64x faster)
fixed_size_binary/fsb2/list=64/match=50% 58.2 us 5.3 us -90.9% (10.98x faster)
fixed_size_binary/fsb16/list=4/match=0% 22.2 us 11.6 us -47.7% (1.91x faster)
fixed_size_binary/fsb16/list=4/match=50% 56.0 us 11.6 us -79.3% (4.83x faster)
fixed_size_binary/fsb16/list=64/match=0% 22.3 us 13.2 us -40.8% (1.69x faster)
fixed_size_binary/fsb16/list=64/match=50% 55.4 us 20.8 us -62.5% (2.66x faster)
fixed_size_binary/fsb16/list=256/match=0% 22.4 us 13.1 us -41.5% (1.71x faster)
fixed_size_binary/fsb16/list=256/match=50% 53.0 us 20.5 us -61.3% (2.59x faster)
fixed_size_binary/fsb16/list=10000/match=0% 24.4 us 14.3 us -41.4% (1.71x faster)
fixed_size_binary/fsb16/list=10000/match=50% 56.5 us 19.4 us -65.7% (2.91x faster)
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned 22.3 us 14.8 us -33.6% (1.51x faster)
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned 55.7 us 24.3 us -56.4% (2.29x faster)

@github-actions github-actions Bot added the physical-expr Changes to the physical-expr crates label Aug 5, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 3 times, most recently from 9915d25 to 6f820d7 Compare August 5, 2026 12:00
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list
baseline:
ref: b6cccfe

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191494656-1454-s5xg2 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-fixed-size-binary-hashset (6f820d7) to b6cccfe diff

Run configuration
run benchmark in_list
baseline:
  ref: "b6cccfeef1a78ab424ffec87afb40958c33fb897"

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-fixed-size-binary-hashset (6f820d7) to b6cccfe diff

Run configuration
run benchmark in_list
baseline:
  ref: "b6cccfeef1a78ab424ffec87afb40958c33fb897"
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-fixed-size-binary-hashset
-----                                                  ----                                   ---------------------------------------
in_list/Float32/list=100/nulls=0%                      1.21     47.6±0.62µs        ? ?/sec    1.00     39.5±0.61µs        ? ?/sec
in_list/Float32/list=100/nulls=20%                     1.00     35.1±1.01µs        ? ?/sec    1.45     51.0±0.62µs        ? ?/sec
in_list/Float32/list=28/nulls=0%                       1.00     14.5±0.01µs        ? ?/sec    1.00     14.5±0.03µs        ? ?/sec
in_list/Float32/list=28/nulls=20%                      1.00     14.7±0.02µs        ? ?/sec    1.00     14.7±0.02µ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.00µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/Float32/list=8/nulls=0%                        1.00      5.1±0.01µs        ? ?/sec    1.00      5.1±0.01µs        ? ?/sec
in_list/Float32/list=8/nulls=20%                       1.00      5.3±0.02µs        ? ?/sec    1.00      5.3±0.01µ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.04µs        ? ?/sec
in_list/Int16/list=28/nulls=0%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
in_list/Int16/list=28/nulls=20%                        1.00      5.4±0.02µs        ? ?/sec    1.00      5.4±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.01µ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.52     55.5±1.16µs        ? ?/sec    1.00     36.6±1.58µs        ? ?/sec
in_list/Int32/list=100/nulls=20%                       1.00     35.8±0.84µs        ? ?/sec    1.02     36.6±1.14µs        ? ?/sec
in_list/Int32/list=28/nulls=0%                         1.00     14.5±0.03µs        ? ?/sec    1.00     14.5±0.03µs        ? ?/sec
in_list/Int32/list=28/nulls=20%                        1.00     14.7±0.02µs        ? ?/sec    1.00     14.7±0.05µs        ? ?/sec
in_list/Int32/list=3/nulls=0%                          1.00      3.2±0.01µs        ? ?/sec    1.00      3.2±0.00µs        ? ?/sec
in_list/Int32/list=3/nulls=20%                         1.00      3.3±0.01µ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.01µs        ? ?/sec
in_list/Int32/list=8/nulls=20%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=0%                  1.00     53.7±0.58µs        ? ?/sec    1.07     57.3±0.51µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=20%                 1.00     61.4±1.22µs        ? ?/sec    1.12     68.8±1.53µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=0%                   1.01     31.9±1.50µs        ? ?/sec    1.00     31.6±1.26µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=20%                  1.00     40.3±1.46µs        ? ?/sec    1.14     46.0±0.82µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=0%                    1.00      3.8±0.01µs        ? ?/sec    1.00      3.8±0.01µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=20%                   1.00      3.9±0.02µs        ? ?/sec    1.00      3.9±0.01µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=0%                    1.00      7.3±0.02µs        ? ?/sec    1.00      7.3±0.01µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=20%                   1.00      7.5±0.02µs        ? ?/sec    1.00      7.4±0.02µs        ? ?/sec
in_list/UInt8/list=100/nulls=0%                        1.02      5.4±0.06µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
in_list/UInt8/list=100/nulls=20%                       1.00      5.4±0.01µs        ? ?/sec    1.01      5.4±0.06µs        ? ?/sec
in_list/UInt8/list=28/nulls=0%                         1.00      5.3±0.02µs        ? ?/sec    1.01      5.3±0.06µs        ? ?/sec
in_list/UInt8/list=28/nulls=20%                        1.02      5.5±0.05µs        ? ?/sec    1.00      5.4±0.06µ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.01µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=0%                          1.00      3.8±0.03µs        ? ?/sec    1.00      3.8±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=20%                         1.00      3.9±0.02µs        ? ?/sec    1.00      3.9±0.01µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=100                 1.00     80.6±0.77µs        ? ?/sec    1.04     84.2±0.63µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=12                  1.00     46.8±0.75µs        ? ?/sec    1.08     50.6±0.76µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=3                   1.00     99.9±0.92µs        ? ?/sec    1.00     99.5±0.84µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=100                1.00     75.9±0.68µs        ? ?/sec    1.03     78.6±1.89µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=12                 1.00     54.9±0.61µs        ? ?/sec    1.07     58.5±2.62µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=3                  1.00     49.1±0.59µs        ? ?/sec    1.04     51.1±2.46µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=100                  1.00    122.1±1.71µs        ? ?/sec    1.02    124.6±1.54µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=12                   1.00     54.9±0.53µs        ? ?/sec    1.10     60.3±1.00µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=3                    1.00     91.8±1.23µs        ? ?/sec    1.04     95.1±2.62µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=100                 1.00    123.8±2.58µs        ? ?/sec    1.01    125.0±0.60µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=12                  1.00     70.2±0.50µs        ? ?/sec    1.03     72.4±1.65µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=3                   1.00     77.1±0.70µs        ? ?/sec    1.02     78.9±1.52µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=100                   1.00     65.1±0.47µs        ? ?/sec    1.05     68.5±0.40µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=12                    1.00     26.6±0.04µs        ? ?/sec    1.10     29.1±0.13µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=3                     1.00     28.3±0.41µs        ? ?/sec    1.10     31.1±0.34µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=100                  1.00     68.1±0.32µs        ? ?/sec    1.05     71.6±0.50µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=12                   1.00     29.1±0.05µs        ? ?/sec    1.09     31.9±0.09µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=3                    1.00     31.5±0.04µs        ? ?/sec    1.09     34.3±0.16µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=100                   1.00     65.2±0.43µs        ? ?/sec    1.05     68.6±0.54µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=12                    1.00     27.1±0.08µs        ? ?/sec    1.12     30.4±0.49µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=3                     1.00     28.9±0.07µs        ? ?/sec    1.09     31.6±0.09µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=100                  1.00     69.3±0.50µs        ? ?/sec    1.04     72.1±0.34µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=12                   1.00     29.6±0.06µs        ? ?/sec    1.09     32.3±0.37µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=3                    1.00     32.0±0.06µs        ? ?/sec    1.08     34.7±0.15µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=0%          1.00     59.5±0.50µs        ? ?/sec    1.02     60.7±0.57µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=20%         1.00     56.9±1.46µs        ? ?/sec    1.05     59.8±1.39µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=0%         1.00    114.3±1.25µs        ? ?/sec    1.02    116.3±1.64µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=20%        1.00    126.1±2.13µs        ? ?/sec    1.04    131.2±2.95µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=0%         1.00    150.9±1.06µs        ? ?/sec    1.00    150.3±2.90µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=20%        1.00    142.9±1.46µs        ? ?/sec    1.03    147.7±1.78µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=0%           1.00    126.9±1.40µs        ? ?/sec    1.00    126.5±0.92µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=20%          1.00     52.1±1.05µs        ? ?/sec    1.05     54.6±1.17µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=0%          1.00    139.1±1.82µs        ? ?/sec    1.01    140.4±2.36µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=20%         1.00     99.5±1.10µs        ? ?/sec    1.02    101.3±1.09µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=0%          1.01    155.4±1.23µs        ? ?/sec    1.00    154.5±1.08µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=20%         1.00    149.4±1.47µs        ? ?/sec    1.02    151.7±1.66µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=0%            1.00     38.9±0.50µs        ? ?/sec    1.07     41.7±0.43µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=20%           1.02     64.5±1.12µs        ? ?/sec    1.00     63.4±0.98µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=0%           1.00     60.4±3.85µs        ? ?/sec    1.06     63.9±1.53µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=20%          1.00     64.7±0.68µs        ? ?/sec    1.03     66.7±0.62µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=0%           1.04    104.0±1.23µs        ? ?/sec    1.00    100.3±1.18µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=20%          1.01    130.5±1.22µs        ? ?/sec    1.00    129.6±1.10µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=0%            1.00     39.1±0.32µs        ? ?/sec    1.07     41.8±0.35µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=20%           1.00     38.3±0.40µs        ? ?/sec    1.15     44.1±0.38µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=0%           1.00     73.3±1.10µs        ? ?/sec    1.01     73.7±1.19µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=20%          1.00     70.8±0.78µs        ? ?/sec    1.01     71.6±0.79µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=0%           1.00    130.7±1.33µs        ? ?/sec    1.00    130.5±1.83µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=20%          1.00    112.0±1.14µs        ? ?/sec    1.05    117.1±1.84µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=100             1.00    102.6±2.71µs        ? ?/sec    1.02    105.0±0.94µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=12              1.00     29.7±0.76µs        ? ?/sec    1.05     31.1±0.65µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=3               1.00     36.9±0.82µs        ? ?/sec    1.06     39.2±1.61µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=100            1.00    103.5±1.93µs        ? ?/sec    1.03    106.7±2.13µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=12             1.00     65.8±1.10µs        ? ?/sec    1.26     82.8±1.67µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=3              1.00     27.9±0.49µs        ? ?/sec    1.29     36.0±1.37µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=100              1.00    113.2±1.20µs        ? ?/sec    1.03    116.3±2.41µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=12               1.00     63.2±0.67µs        ? ?/sec    1.06     67.1±1.60µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=3                1.02     28.5±0.64µs        ? ?/sec    1.00     28.1±0.64µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=100             1.00     84.4±1.31µs        ? ?/sec    1.04     87.5±2.41µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=12              1.00     33.9±0.86µs        ? ?/sec    1.29     43.6±1.23µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=3               1.00     33.7±0.77µs        ? ?/sec    1.38     46.5±2.49µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=100               1.00     75.5±0.32µs        ? ?/sec    1.05     79.0±0.20µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=12                1.00     18.3±0.42µs        ? ?/sec    1.14     20.9±0.06µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=3                 1.00     19.0±0.19µs        ? ?/sec    1.15     21.8±0.05µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=100              1.00     70.0±0.41µs        ? ?/sec    1.04     72.8±0.29µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=12               1.00     22.2±0.06µs        ? ?/sec    1.12     24.9±0.09µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=3                1.00     22.2±0.08µs        ? ?/sec    1.12     24.9±0.07µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=100               1.00     75.9±0.40µs        ? ?/sec    1.06     80.1±0.21µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=12                1.00     18.5±0.08µs        ? ?/sec    1.18     21.8±0.32µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=3                 1.00     18.5±0.05µs        ? ?/sec    1.19     22.0±0.45µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=100              1.00     71.1±0.56µs        ? ?/sec    1.04     74.0±0.33µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=12               1.00     22.4±0.08µs        ? ?/sec    1.12     25.0±0.05µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=3                1.00     22.4±0.06µs        ? ?/sec    1.12     25.1±0.06µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=0%      1.00     80.2±0.86µs        ? ?/sec    1.08     86.8±1.26µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=20%     1.00     62.1±2.06µs        ? ?/sec    1.03     63.8±1.60µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=0%     1.00     88.9±1.93µs        ? ?/sec    1.05     93.3±2.93µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=20%    1.00     88.3±5.49µs        ? ?/sec    1.03     91.4±4.64µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=0%     1.00    112.3±1.33µs        ? ?/sec    1.01    113.8±1.73µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=20%    1.02    123.2±3.05µs        ? ?/sec    1.00    120.5±2.97µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=0%       1.00    105.7±1.00µs        ? ?/sec    1.04    109.8±1.43µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=20%      1.00     75.7±1.47µs        ? ?/sec    1.04     78.6±2.19µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=0%      1.00    123.3±1.08µs        ? ?/sec    1.00    122.8±3.65µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=20%     1.03     72.5±1.15µs        ? ?/sec    1.00     70.6±2.08µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=0%      1.00    122.3±1.97µs        ? ?/sec    1.00    122.4±2.77µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=20%     1.06    118.2±2.74µs        ? ?/sec    1.00    111.5±3.39µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=0%        1.00     35.3±0.49µs        ? ?/sec    1.09     38.3±0.42µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=20%       1.00     32.1±0.31µs        ? ?/sec    1.07     34.4±0.20µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=0%       1.00     61.2±1.34µs        ? ?/sec    1.02     62.2±0.95µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=20%      1.07     64.9±0.59µs        ? ?/sec    1.00     60.4±1.09µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=0%       1.01     76.5±1.90µs        ? ?/sec    1.00     76.0±2.14µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=20%      1.06    107.6±2.60µs        ? ?/sec    1.00    101.4±2.46µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=0%        1.00     35.2±0.42µs        ? ?/sec    1.09     38.4±0.53µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=20%       1.00     32.4±0.36µs        ? ?/sec    1.07     34.6±0.35µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=0%       1.00     53.9±1.63µs        ? ?/sec    1.04     56.1±1.48µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=20%      1.06     58.8±1.04µs        ? ?/sec    1.00     55.2±1.40µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=0%       1.02     69.5±1.20µs        ? ?/sec    1.00     67.9±1.23µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=20%      1.10    106.1±2.13µs        ? ?/sec    1.00     96.1±3.18µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=0%           1.00     53.4±0.28µs        ? ?/sec    1.01     54.0±0.20µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=20%          1.00     71.0±0.37µs        ? ?/sec    1.02     72.3±0.22µs        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=0%         1.01   1886.6±5.57ns        ? ?/sec    1.00   1873.3±5.56ns        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=20%        1.00     70.3±0.45µs        ? ?/sec    1.03     72.3±0.21µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=0%          1.00     28.7±0.07µs        ? ?/sec    1.00     28.7±0.13µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=20%         1.00     70.4±0.36µs        ? ?/sec    1.03     72.2±0.21µ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.02µs        ? ?/sec
in_list_cols/Int32/list=3/match=0%/nulls=20%           1.01      7.2±0.02µs        ? ?/sec    1.00      7.1±0.03µs        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=0%          1.01   1887.9±6.82ns        ? ?/sec    1.00   1868.8±9.23ns        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=20%         1.01      7.2±0.01µs        ? ?/sec    1.00      7.1±0.02µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=0%           1.00      5.7±0.01µs        ? ?/sec    1.00      5.7±0.02µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=20%          1.01      7.2±0.01µs        ? ?/sec    1.00      7.1±0.03µ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.04µs        ? ?/sec
in_list_cols/Int32/list=8/match=0%/nulls=20%           1.00     19.8±0.05µs        ? ?/sec    1.00     19.8±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=0%          1.01   1889.4±5.98ns        ? ?/sec    1.00   1861.6±6.99ns        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=20%         1.00     19.7±0.07µs        ? ?/sec    1.01     19.8±0.06µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=0%           1.00     15.2±0.04µs        ? ?/sec    1.00     15.2±0.04µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=20%          1.00     19.7±0.08µs        ? ?/sec    1.01     20.0±0.05µs        ? ?/sec
in_list_cols/Utf8/list=28/match=0%                     1.00    180.9±0.16µs        ? ?/sec    1.00    181.5±0.29µs        ? ?/sec
in_list_cols/Utf8/list=28/match=100%                   1.01    742.1±0.90µs        ? ?/sec    1.00    731.8±2.39µs        ? ?/sec
in_list_cols/Utf8/list=28/match=50%                    1.00   1147.1±1.67µs        ? ?/sec    1.00   1152.4±1.64µs        ? ?/sec
in_list_cols/Utf8/list=3/match=0%                      1.00     19.0±0.02µs        ? ?/sec    1.00     19.0±0.03µs        ? ?/sec
in_list_cols/Utf8/list=3/match=100%                    1.01     79.0±0.98µs        ? ?/sec    1.00     77.9±0.20µs        ? ?/sec
in_list_cols/Utf8/list=3/match=50%                     1.02    104.8±0.71µs        ? ?/sec    1.00    102.6±2.51µs        ? ?/sec
in_list_cols/Utf8/list=8/match=0%                      1.00     51.2±0.06µs        ? ?/sec    1.01     51.7±0.31µs        ? ?/sec
in_list_cols/Utf8/list=8/match=100%                    1.00    208.3±0.43µs        ? ?/sec    1.01    209.8±0.52µs        ? ?/sec
in_list_cols/Utf8/list=8/match=50%                     1.00    315.0±0.58µs        ? ?/sec    1.01    316.7±0.44µs        ? ?/sec

Resource Usage

in_list — base (merge-base)

Metric Value
Wall time 370.1s
Peak memory 43.1 MiB
Avg memory 15.3 MiB
CPU user 579.8s
CPU sys 1.7s
Peak spill 0 B

in_list — branch

Metric Value
Wall time 360.1s
Peak memory 45.1 MiB
Avg memory 16.5 MiB
CPU user 579.1s
CPU sys 1.6s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy
baseline:
ref: b6cccfe

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191691985-1455-zkzv5 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-fixed-size-binary-hashset (6f820d7) 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 running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191702048-1457-tqkcf 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-fixed-size-binary-hashset (6f820d7) to b6cccfe diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "b6cccfeef1a78ab424ffec87afb40958c33fb897"

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-fixed-size-binary-hashset (6f820d7) 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-fixed-size-binary-hashset
-----                                                                ----                                   ---------------------------------------
dictionary/i32/dict=10/list=16                                       1.01      7.9±0.01µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.01      8.1±0.01µs        ? ?/sec    1.00      8.1±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.01      8.0±0.02µs        ? ?/sec    1.00      7.9±0.02µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.01      8.0±0.06µs        ? ?/sec    1.00      7.9±0.02µ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.01      8.5±0.03µs        ? ?/sec    1.00      8.4±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.1±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.01      9.9±0.01µs        ? ?/sec    1.00      9.8±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     15.7±0.01µs        ? ?/sec    1.00     15.7±0.02µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.00     25.1±2.81µs        ? ?/sec    1.08     27.0±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/fsb1/list=16/match=0%                                                                     1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                                                                    1.00      5.3±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.79     27.8±0.22µs        ? ?/sec    1.00     15.5±0.14µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         2.91     53.7±0.29µs        ? ?/sec    1.00     18.4±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.92     25.7±0.15µs        ? ?/sec    1.00     13.4±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           2.11     49.5±1.09µs        ? ?/sec    1.00     23.5±0.61µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              2.05     24.1±0.11µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.49     52.6±0.60µs        ? ?/sec    1.00     11.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.77     23.9±0.03µs        ? ?/sec    1.00     13.5±0.09µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.92     52.4±0.72µs        ? ?/sec    1.00     27.3±0.32µ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.4±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.2±0.02µs        ? ?/sec    1.21     14.7±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     19.3±0.13µs        ? ?/sec    1.10     21.2±0.09µ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.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.01µ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.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.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.19     24.1±0.28µs        ? ?/sec    1.00     20.2±0.78µ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.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.3±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     70.1±0.43µs        ? ?/sec    1.02     71.6±0.52µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.00     60.7±0.52µs        ? ?/sec    1.02     62.2±0.38µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     86.9±0.23µs        ? ?/sec    1.01     88.1±0.23µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.04     38.8±0.25µs        ? ?/sec    1.00     37.5±0.24µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.03     39.0±0.19µs        ? ?/sec    1.00     37.7±0.25µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.02     29.0±0.18µs        ? ?/sec    1.00     28.3±0.06µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.09     14.8±0.02µs        ? ?/sec    1.00     13.6±0.11µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.18     24.5±0.29µs        ? ?/sec    1.00     20.8±3.33µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.18     15.0±0.02µs        ? ?/sec    1.00     12.7±0.07µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.02     25.9±0.24µs        ? ?/sec    1.00     25.4±1.66µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.01µs        ? ?/sec    1.00      9.2±0.01µ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.01µs        ? ?/sec    1.00     16.5±0.02µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.01µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.5±0.00µs        ? ?/sec    1.00      3.6±0.01µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     12.5±0.02µs        ? ?/sec    1.21     15.1±0.01µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.07     21.9±2.82µs        ? ?/sec    1.00     20.5±3.29µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.7±0.05µs        ? ?/sec    1.20     15.2±0.03µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.00     19.7±2.83µs        ? ?/sec    1.17     23.0±2.41µ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.07µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.4±0.01µ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.01µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.03     18.1±0.37µs        ? ?/sec    1.00     17.6±0.02µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.14     34.0±0.21µs        ? ?/sec    1.00     29.7±0.13µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.6±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µ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.01µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.00     34.9±0.05µs        ? ?/sec    1.02     35.5±0.12µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     70.4±0.33µs        ? ?/sec    1.01     71.3±0.58µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.01     34.4±0.02µs        ? ?/sec    1.00     33.9±0.03µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     71.6±0.32µs        ? ?/sec    1.02     73.2±0.32µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.03     34.8±0.08µs        ? ?/sec    1.00     33.9±0.02µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     69.8±0.35µs        ? ?/sec    1.02     71.5±0.41µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.02     35.8±0.12µs        ? ?/sec    1.00     35.0±0.14µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     92.8±2.44µs        ? ?/sec    1.04     96.3±1.67µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.02     38.8±0.30µs        ? ?/sec    1.00     38.0±0.07µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    102.5±0.69µs        ? ?/sec    1.00    102.5±1.27µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     70.1±0.27µs        ? ?/sec    1.02     71.2±0.31µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.02     63.8±0.27µs        ? ?/sec    1.00     62.3±0.28µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.01     27.2±0.02µs        ? ?/sec    1.00     26.9±0.14µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.02     65.0±0.42µs        ? ?/sec    1.00     63.8±0.31µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.01     27.2±0.02µs        ? ?/sec    1.00     26.9±0.02µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.01     66.1±0.46µs        ? ?/sec    1.00     65.4±0.28µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.05     27.9±0.02µs        ? ?/sec    1.00     26.6±0.05µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.08     69.0±1.73µs        ? ?/sec    1.00     63.7±0.38µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.03     19.0±0.04µs        ? ?/sec    1.00     18.5±0.03µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.04     40.4±0.19µs        ? ?/sec    1.00     39.0±0.21µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.03     18.9±0.02µs        ? ?/sec    1.00     18.4±0.03µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.04     40.0±0.14µs        ? ?/sec    1.00     38.5±0.26µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     40.9±0.03µs        ? ?/sec    1.00     40.9±0.03µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     84.6±0.42µs        ? ?/sec    1.02     86.2±0.20µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.8±0.03µs        ? ?/sec    1.01     41.1±0.32µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     84.5±0.21µs        ? ?/sec    1.03     87.0±0.17µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.8±0.04µs        ? ?/sec    1.02     41.6±0.09µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     84.5±0.33µs        ? ?/sec    1.04     87.6±0.55µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.01     40.9±0.04µs        ? ?/sec    1.00     40.5±0.03µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     84.4±0.25µs        ? ?/sec    1.02     85.9±0.32µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     30.3±0.08µs        ? ?/sec    1.15     34.7±0.13µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     69.4±0.41µs        ? ?/sec    1.40     96.9±0.51µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.0±0.11µs        ? ?/sec    1.02     34.6±0.12µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.00     83.5±0.51µs        ? ?/sec    1.29    108.0±0.41µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.8±0.17µs        ? ?/sec    1.00     42.7±0.09µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.00     85.0±0.22µs        ? ?/sec    1.03     87.3±0.60µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.03     41.9±0.15µs        ? ?/sec    1.00     40.7±0.03µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     85.0±0.17µs        ? ?/sec    1.00     85.4±0.43µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.02     31.0±0.12µs        ? ?/sec    1.00     30.4±0.05µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     72.0±0.33µs        ? ?/sec    1.03     74.4±0.49µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.02     19.2±0.04µs        ? ?/sec    1.00     18.9±0.04µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.03     39.3±0.17µs        ? ?/sec    1.00     38.2±0.21µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.08     19.5±0.03µs        ? ?/sec    1.00     18.1±0.03µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.03     38.5±0.20µs        ? ?/sec    1.00     37.5±0.41µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.03     18.9±0.03µs        ? ?/sec    1.00     18.4±0.05µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   1.05     39.3±0.18µs        ? ?/sec    1.00     37.6±0.27µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.08     19.6±0.05µs        ? ?/sec    1.00     18.2±0.02µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.04     38.8±0.32µs        ? ?/sec    1.00     37.2±0.21µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1330.3s
Peak memory 41.9 MiB
Avg memory 32.6 MiB
CPU user 1531.5s
CPU sys 1.3s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1365.3s
Peak memory 43.2 MiB
Avg memory 32.9 MiB
CPU user 1586.9s
CPU sys 1.4s
Peak spill 0 B

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-fixed-size-binary-hashset (6f820d7) to b6cccfe diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "b6cccfeef1a78ab424ffec87afb40958c33fb897"
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-fixed-size-binary-hashset
-----                                                                ----                                   ---------------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.8±0.01µs        ? ?/sec    1.00      7.9±0.02µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.01µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      8.1±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.02µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.9±0.01µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.9±0.01µs        ? ?/sec    1.00      8.9±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.5±0.01µs        ? ?/sec    1.00      8.4±0.03µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.2±0.01µs        ? ?/sec    1.00      8.2±0.00µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.1±0.01µ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.7±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.05     16.7±0.03µs        ? ?/sec    1.00     15.9±0.11µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.00     27.3±2.19µs        ? ?/sec    1.06     29.0±0.21µ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/fsb1/list=16/match=0%                              5.54     29.6±0.06µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             10.95    58.5±0.53µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.73     26.6±0.05µs        ? ?/sec    1.00     15.3±0.06µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         3.01     54.9±0.73µs        ? ?/sec    1.00     18.2±0.08µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.81     24.2±0.36µs        ? ?/sec    1.00     13.4±0.04µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           2.99     49.1±0.42µs        ? ?/sec    1.00     16.4±0.06µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              2.05     24.0±0.05µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.52     52.9±0.45µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.80     23.8±0.04µs        ? ?/sec    1.00     13.3±0.04µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            2.04     51.1±0.62µs        ? ?/sec    1.00     25.1±0.33µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              5.01     27.1±0.05µs        ? ?/sec    1.00      5.4±0.00µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             11.12    59.7±1.19µs        ? ?/sec    1.00      5.4±0.00µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     14.7±0.01µs        ? ?/sec    1.00     14.7±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     16.9±0.07µs        ? ?/sec    1.25     21.1±0.11µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.01µ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.00µs        ? ?/sec    1.00      3.7±0.01µ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.01µs        ? ?/sec    1.00      3.7±0.01µ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.00µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.01µ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.02µ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.00     18.2±0.15µs        ? ?/sec    1.20     21.8±0.54µ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.3±0.03µ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     72.1±0.31µs        ? ?/sec    1.01     72.8±0.43µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.01     63.4±0.25µs        ? ?/sec    1.00     62.8±0.32µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     86.9±0.27µs        ? ?/sec    1.01     87.4±0.21µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.03     38.3±0.14µs        ? ?/sec    1.00     37.2±0.22µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.03     38.5±0.20µs        ? ?/sec    1.00     37.3±0.13µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.02     28.8±0.10µs        ? ?/sec    1.00     28.3±0.08µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.02     12.6±0.03µs        ? ?/sec    1.00     12.4±0.01µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.00     21.0±3.15µs        ? ?/sec    1.05     22.1±2.32µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.00     12.6±0.03µs        ? ?/sec    1.09     13.7±0.14µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.00     23.8±0.17µs        ? ?/sec    1.01     23.9±0.28µ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.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.00µs        ? ?/sec    1.00      3.6±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     13.5±0.01µs        ? ?/sec    1.11     15.0±0.01µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.00     13.7±0.08µs        ? ?/sec    1.74     23.8±1.73µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.7±0.02µs        ? ?/sec    1.18     15.0±0.07µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.00     24.1±0.28µs        ? ?/sec    1.00     24.1±0.19µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.03     16.6±0.02µs        ? ?/sec    1.00     16.1±0.02µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.6±0.08µs        ? ?/sec    1.01     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.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.03     18.1±0.38µs        ? ?/sec    1.00     17.6±0.02µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.15     34.1±0.22µs        ? ?/sec    1.00     29.7±0.27µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.0±0.01µs        ? ?/sec    1.04     16.6±0.02µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.6±0.02µs        ? ?/sec    1.00     16.7±0.02µ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.00     34.6±0.05µs        ? ?/sec    1.00     34.7±0.09µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     71.7±0.37µs        ? ?/sec    1.00     71.4±0.31µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.02     34.5±0.03µs        ? ?/sec    1.00     33.9±0.04µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.01     73.7±0.37µs        ? ?/sec    1.00     72.7±0.65µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.02     34.5±0.03µs        ? ?/sec    1.00     33.9±0.04µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     71.7±0.22µs        ? ?/sec    1.00     71.5±0.51µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.03     36.1±0.12µs        ? ?/sec    1.00     35.1±0.05µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     97.4±0.88µs        ? ?/sec    1.01     98.2±1.02µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.01     38.2±0.09µs        ? ?/sec    1.00     37.7±0.09µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    102.0±1.54µs        ? ?/sec    1.00    101.6±0.69µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     71.4±0.52µs        ? ?/sec    1.00     71.5±0.43µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.02     66.3±0.37µs        ? ?/sec    1.00     65.3±0.37µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.01     27.2±0.02µs        ? ?/sec    1.00     26.9±0.04µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.04     66.1±0.74µs        ? ?/sec    1.00     63.7±0.89µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.01     27.3±0.05µs        ? ?/sec    1.00     27.1±0.30µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.03     67.0±0.71µs        ? ?/sec    1.00     65.4±0.40µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.02     27.1±0.04µs        ? ?/sec    1.00     26.6±0.09µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.04     66.4±0.39µs        ? ?/sec    1.00     63.6±0.53µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.01     18.6±0.02µs        ? ?/sec    1.00     18.4±0.02µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.04     40.3±0.25µs        ? ?/sec    1.00     38.8±0.23µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.02     18.7±0.02µs        ? ?/sec    1.00     18.3±0.02µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.05     40.4±0.16µs        ? ?/sec    1.00     38.4±0.31µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.01     41.2±0.07µs        ? ?/sec    1.00     40.8±0.05µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     85.8±0.24µs        ? ?/sec    1.01     86.5±0.25µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.01     40.8±0.05µs        ? ?/sec    1.00     40.3±0.04µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     85.5±0.35µs        ? ?/sec    1.01     86.6±0.32µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     41.2±0.05µs        ? ?/sec    1.00     41.0±0.35µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     84.9±0.24µs        ? ?/sec    1.03     87.2±0.11µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.01     40.9±0.05µs        ? ?/sec    1.00     40.4±0.11µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     84.7±0.17µs        ? ?/sec    1.02     86.3±0.30µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     30.6±0.08µs        ? ?/sec    1.13     34.6±0.10µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     73.7±0.57µs        ? ?/sec    1.32     97.0±0.79µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.0±0.13µs        ? ?/sec    1.02     34.6±0.13µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.00     85.7±0.40µs        ? ?/sec    1.26    108.3±0.88µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.02     43.3±0.50µs        ? ?/sec    1.00     42.4±0.04µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.00     85.3±0.53µs        ? ?/sec    1.03     87.6±0.51µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.01     41.1±0.36µs        ? ?/sec    1.00     40.5±0.06µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.01     85.0±0.25µs        ? ?/sec    1.00     84.3±0.37µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.01     30.3±0.07µs        ? ?/sec    1.00     30.0±0.04µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     73.6±0.26µs        ? ?/sec    1.00     73.5±0.16µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.02     18.3±0.05µs        ? ?/sec    1.00     17.9±0.32µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.05     39.5±0.31µs        ? ?/sec    1.00     37.6±0.45µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.00     18.3±0.02µs        ? ?/sec    1.04     19.0±0.19µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.03     38.2±0.18µs        ? ?/sec    1.00     37.1±0.30µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.02     18.8±0.02µs        ? ?/sec    1.00     18.3±0.03µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   1.07     40.0±0.32µs        ? ?/sec    1.00     37.5±0.37µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.00     18.4±0.01µs        ? ?/sec    1.03     18.9±0.34µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.03     38.6±0.28µs        ? ?/sec    1.00     37.4±0.40µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1365.3s
Peak memory 41.9 MiB
Avg memory 31.5 MiB
CPU user 1581.4s
CPU sys 1.3s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1370.3s
Peak memory 41.4 MiB
Avg memory 31.4 MiB
CPU user 1584.4s
CPU sys 1.4s
Peak spill 0 B

File an issue against this benchmark runner

@codecov-commenter

codecov-commenter commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 83.46774% with 41 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.32%. Comparing base (8332cfa) to head (1217f5e).

Files with missing lines Patch % Lines
...rc/expressions/in_list/fixed_size_binary_filter.rs 83.71% 13 Missing and 23 partials ⚠️
...atafusion/physical-expr/src/expressions/in_list.rs 83.33% 0 Missing and 4 partials ⚠️
.../physical-expr/src/expressions/in_list/strategy.rs 66.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24102      +/-   ##
==========================================
- Coverage   81.32%   81.32%   -0.01%     
==========================================
  Files        1117     1118       +1     
  Lines      396269   396517     +248     
  Branches   396269   396517     +248     
==========================================
+ Hits       322260   322454     +194     
- Misses      55186    55202      +16     
- Partials    18823    18861      +38     

☔ 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
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 2 times, most recently from 0ae4133 to 89d1595 Compare August 6, 2026 17:27
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 5 times, most recently from 59667db to 0a20207 Compare August 11, 2026 12:05
@geoffreyclaude geoffreyclaude changed the title IN LIST: reuse primitive filters for FixedSizeBinary IN LIST: reuse primitive filters for FixedSizeBinary and Decimal128 Aug 11, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 5 times, most recently from 12224fb to 2117edf Compare August 11, 2026 15:45
@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing b2e4ecc (b2e4ecc) to 3f95830 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "3f958303e4e4ea4610ce91434f0c38ab75c99658"
changed:
  ref: "b2e4eccd68ce8d694b987cc6667dabcbe53f1582"
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-fixed-size-binary-hashset
-----                                                                ----                                   ---------------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.03µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      8.0±0.02µs        ? ?/sec    1.01      8.1±0.07µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      7.9±0.01µs        ? ?/sec    1.01      7.9±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.9±0.01µs        ? ?/sec    1.01      7.9±0.04µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.9±0.01µs        ? ?/sec    1.01      9.0±0.09µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.4±0.02µs        ? ?/sec    1.00      8.4±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.2±0.03µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.1±0.02µ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     15.8±0.06µs        ? ?/sec    1.04     16.4±0.13µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.00     18.4±0.20µs        ? ?/sec    1.06     19.6±1.54µ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.6±0.00µs        ? ?/sec    1.00      3.6±0.01µ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%                              6.04     28.7±0.04µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             12.03    57.2±0.55µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.46     26.0±0.13µs        ? ?/sec    1.00     17.8±0.10µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         2.89     53.0±0.24µs        ? ?/sec    1.00     18.3±0.07µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.43     23.2±0.17µs        ? ?/sec    1.00     16.2±0.18µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.83     47.5±0.21µs        ? ?/sec    1.00     26.0±0.26µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.97     23.0±0.02µs        ? ?/sec    1.00     11.7±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.56     53.3±0.46µs        ? ?/sec    1.00     11.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.54     23.0±0.02µs        ? ?/sec    1.00     14.9±0.06µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned             1.30     23.0±0.03µs        ? ?/sec    1.00     17.7±0.05µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            2.04     52.7±0.47µs        ? ?/sec    1.00     25.8±0.18µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned            1.80     51.4±0.33µs        ? ?/sec    1.00     28.6±0.33µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              4.96     26.5±0.04µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             11.26    60.2±0.50µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.21     14.7±0.03µs        ? ?/sec    1.00     12.1±0.02µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.07     21.0±0.11µs        ? ?/sec    1.00     19.6±0.08µ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.01µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.01µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.08µ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.01µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.01µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.01      5.3±0.01µ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.01      4.7±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.02µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.4±0.01µ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.01µs        ? ?/sec    1.00      4.8±0.01µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.00     22.5±2.42µs        ? ?/sec    1.05     23.8±0.46µ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.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     69.9±0.37µs        ? ?/sec    1.02     71.2±0.22µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.00     61.7±0.41µs        ? ?/sec    1.04     64.3±0.42µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.03     87.9±0.32µs        ? ?/sec    1.00     85.7±0.17µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.19     47.2±0.39µs        ? ?/sec    1.00     39.7±0.23µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.17     47.0±0.17µs        ? ?/sec    1.00     40.2±0.17µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.25     36.9±0.14µs        ? ?/sec    1.00     29.6±0.16µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                      1.19     18.1±0.03µs        ? ?/sec    1.00     15.2±0.05µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                     2.01     38.6±0.26µs        ? ?/sec    1.00     19.2±0.68µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                     1.16     17.6±0.02µs        ? ?/sec    1.00     15.2±0.02µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                    1.58     37.1±0.29µs        ? ?/sec    1.00     23.5±1.25µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.00     12.4±0.01µs        ? ?/sec    1.03     12.8±0.01µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.14     22.1±2.46µs        ? ?/sec    1.00     19.4±2.93µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.02     12.8±0.03µs        ? ?/sec    1.00     12.6±0.04µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.00     19.8±1.82µs        ? ?/sec    1.21     23.9±0.28µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.01µ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.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.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.8±0.02µs        ? ?/sec    1.17     15.0±0.04µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.25     23.9±0.19µs        ? ?/sec    1.00     19.1±2.85µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     13.0±0.02µs        ? ?/sec    1.17     15.2±0.03µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.11     24.3±0.73µs        ? ?/sec    1.00     21.9±2.53µ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.07µ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.01µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.00     17.5±0.01µs        ? ?/sec    1.01     17.6±0.01µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.00     33.5±0.37µs        ? ?/sec    1.00     33.5±0.19µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µ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.00     34.3±0.05µs        ? ?/sec    1.02     35.0±0.15µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     69.8±0.22µs        ? ?/sec    1.01     70.7±0.33µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.4±0.05µs        ? ?/sec    1.03     35.6±0.24µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     70.2±0.33µs        ? ?/sec    1.03     72.2±0.41µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.00     34.5±0.40µs        ? ?/sec    1.00     34.4±0.03µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     68.6±0.21µs        ? ?/sec    1.02     70.2±0.21µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.05     37.9±0.16µs        ? ?/sec    1.00     36.2±0.14µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.01    100.1±0.58µs        ? ?/sec    1.00     98.9±0.63µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.00     38.8±0.24µs        ? ?/sec    1.01     39.0±0.07µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00     98.8±1.18µs        ? ?/sec    1.04    103.1±0.68µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     71.8±0.50µs        ? ?/sec    1.00     71.6±0.31µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.00     63.5±0.49µs        ? ?/sec    1.05     66.6±1.16µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     26.7±0.02µs        ? ?/sec    1.04     27.8±0.06µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.00     65.1±0.43µs        ? ?/sec    1.00     65.1±1.48µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.00     26.7±0.05µs        ? ?/sec    1.06     28.3±0.03µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.00     65.5±0.45µs        ? ?/sec    1.01     66.0±0.39µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.00     26.6±0.05µs        ? ?/sec    1.04     27.6±0.14µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.00     65.8±0.43µs        ? ?/sec    1.01     66.5±0.31µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.00     18.5±0.03µs        ? ?/sec    1.05     19.5±0.02µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.00     40.6±0.37µs        ? ?/sec    1.00     40.5±0.26µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.00     18.7±0.03µs        ? ?/sec    1.01     18.9±0.02µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.00     39.9±0.19µs        ? ?/sec    1.02     40.6±0.21µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     41.8±0.28µs        ? ?/sec    1.01     42.4±0.04µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.02     86.3±0.20µs        ? ?/sec    1.00     84.5±0.20µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.7±0.03µs        ? ?/sec    1.03     41.8±0.16µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     85.8±0.17µs        ? ?/sec    1.00     86.0±0.24µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     41.3±0.05µs        ? ?/sec    1.00     41.2±0.02µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.02     86.8±0.49µs        ? ?/sec    1.00     85.3±0.40µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     40.7±0.03µs        ? ?/sec    1.03     42.0±0.05µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.01     85.5±0.42µs        ? ?/sec    1.00     84.9±0.27µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     31.3±0.06µs        ? ?/sec    1.09     34.1±0.10µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     65.4±0.30µs        ? ?/sec    1.38     90.0±1.18µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.01     34.9±0.11µs        ? ?/sec    1.00     34.5±0.08µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.00     80.3±0.34µs        ? ?/sec    1.26    101.0±0.68µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     43.2±0.07µs        ? ?/sec    1.00     43.3±0.10µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.05     88.7±0.44µs        ? ?/sec    1.00     84.4±0.20µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.00     41.1±0.34µs        ? ?/sec    1.00     41.0±0.02µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     85.2±0.26µs        ? ?/sec    1.00     85.0±0.23µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.00     30.1±0.03µs        ? ?/sec    1.01     30.2±0.04µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.01     71.8±0.26µs        ? ?/sec    1.00     71.0±0.36µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.04     19.0±0.01µs        ? ?/sec    1.00     18.2±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.00     39.8±0.28µs        ? ?/sec    1.01     40.1±0.26µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.00     18.2±0.28µs        ? ?/sec    1.02     18.5±0.02µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.00     38.3±0.20µs        ? ?/sec    1.03     39.3±0.28µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.00     18.8±0.09µs        ? ?/sec    1.00     18.8±0.02µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   1.00     39.7±0.24µs        ? ?/sec    1.03     40.8±0.30µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.00     18.5±0.51µs        ? ?/sec    1.00     18.4±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.00     38.9±0.17µs        ? ?/sec    1.01     39.3±0.38µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1520.3s
Peak memory 40.8 MiB
Avg memory 29.5 MiB
CPU user 1642.6s
CPU sys 1.5s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1540.3s
Peak memory 41.0 MiB
Avg memory 29.3 MiB
CPU user 1651.2s
CPU sys 1.4s
Peak spill 0 B

File an issue against this benchmark runner

@github-actions github-actions Bot removed the auto detected api change Auto detected API change label Aug 11, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch from b2e4ecc to df7980b Compare August 12, 2026 10:07
@geoffreyclaude geoffreyclaude changed the title IN LIST: reuse primitive filters for FixedSizeBinary and Decimal128 IN LIST: reuse primitive filters for FixedSizeBinary Aug 12, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 9 times, most recently from 9b316c1 to 7ff49f9 Compare August 13, 2026 10:46
Smallfu666 pushed a commit to Smallfu666/datafusion that referenced this pull request Aug 18, 2026
…#24283)

## Which issue does this PR close?

- Part of apache#19241.
- Stacked on [apache#23014](apache#23014).
- Next in stack:
[apache#24102](apache#24102).

## Rationale for this change

apache#23014 adds fast direct comparisons for short primitive `IN` lists. For
longer lists, DataFusion uses a bitmap, a hash set, or another
specialized filter when one exists, and otherwise uses the general
filter.

apache#24102 needs to make that same choice after reading `FixedSizeBinary`
values as same-width primitive keys. Today, the choice is part of the
native primitive path, so apache#24102 would have to repeat its limits and
fallback rules.

This PR moves that choice beside the primitive filters and makes it
reusable. The limits count only non-null list values. A separate commit
uses one `PrimitiveHashSetFilter<T, K>` for the existing integer and
floating-point hash-set paths. Integers keep their native keys;
`Float32` and `Float64` keep their bitwise keys, including distinct
signed zeros and NaN encodings. Filter selection and SQL behavior are
unchanged.

The only new lookup path is for `Decimal128`. Lists with at most four
non-null values still use direct comparisons. Larger lists now use a
hash set over the stored `i128` values instead of the general Arrow
filter. Values are not rescaled, and the existing precision, scale, and
null rules are unchanged. apache#24102 also uses this path for 16-byte
`FixedSizeBinary` values.

## What changes are included in this PR?

- Makes primitive filter selection reusable by apache#24102.
- Uses one primitive hash-set implementation for integer and
floating-point values, while preserving their existing key semantics.
- Uses `PrimitiveHashSetFilter<Decimal128Type>` for `Decimal128` lists
with more than four non-null values.
- Adds four `Decimal128` benchmark cases at list sizes 5 and 64.

## Are these changes tested?

Tests cover the direct-comparison boundary, an all-null list, and
bitwise float hash keys, including signed zero and distinct NaN
encodings. Existing end-to-end Decimal tests cover hits, misses, nulls,
`IN`, and `NOT IN`.

## Are there any user-facing changes?

No. SQL results and public APIs are unchanged.

## Benchmark snapshot

The benchmark uses list size 5, the first size above the
direct-comparison limit, and a larger size of 64. Each size is measured
with 0% and 50% matches. Filter construction is outside the timed loop.
Lower is better.

An [automated
run](apache#24283 (comment))
compared this PR's [benchmark-only first
commit](apache@8649e80)
with the [completed
implementation](apache@510bf3e).
The benchmark source is identical in both states, so the comparison
isolates the production changes.

All four cases improved, with a 34.2% geometric-mean reduction in
execution time.

| Benchmark | Before | After | Change |
|---|---:|---:|---:|
| `primitive/decimal128/large_list/list=5/match=0%` | 20.8 us | 13.5 us
| -35.1% (1.54x faster) |
| `primitive/decimal128/large_list/list=5/match=50%` | 34.3 us | 26.6 us
| -22.4% (1.29x faster) |
| `primitive/decimal128/large_list/list=64/match=0%` | 20.3 us | 13.2 us
| -35.0% (1.54x faster) |
| `primitive/decimal128/large_list/list=64/match=50%` | 34.8 us | 19.9
us | -42.8% (1.75x faster) |
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch from 7ff49f9 to 77498a0 Compare August 18, 2026 21:19
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy
baseline:
ref: a1c8762

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5334340267-1673-2vdlg 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-fixed-size-binary-hashset (77498a0) to a1c8762 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "a1c876203c7655dae4d218ad51b53067b3110b96"

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-fixed-size-binary-hashset (77498a0) to a1c8762 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "a1c876203c7655dae4d218ad51b53067b3110b96"
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-fixed-size-binary-hashset
-----                                                                ----                                   ---------------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.7±0.02µs        ? ?/sec    1.00      7.7±0.02µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      7.9±0.05µs        ? ?/sec    1.00      7.9±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.05µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.8±0.02µs        ? ?/sec    1.00      8.8±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.3±0.09µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.1±0.01µs        ? ?/sec    1.00      8.2±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.6±0.01µs        ? ?/sec    1.01      9.6±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     15.2±0.01µs        ? ?/sec    1.02     15.5±0.01µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.24     28.9±0.27µs        ? ?/sec    1.00     23.2±0.16µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.5±0.01µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.5±0.01µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=0%                              5.37     25.4±0.05µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             12.05    56.9±0.41µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.70     24.4±0.02µs        ? ?/sec    1.00     14.3±0.03µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         2.92     56.5±0.27µs        ? ?/sec    1.00     19.4±0.11µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.71     22.4±0.06µs        ? ?/sec    1.00     13.1±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           2.58     53.0±0.19µs        ? ?/sec    1.00     20.5±0.53µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.91     22.2±0.03µs        ? ?/sec    1.00     11.6±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.82     56.0±0.28µs        ? ?/sec    1.00     11.6±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.69     22.3±0.03µs        ? ?/sec    1.00     13.2±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned             1.51     22.3±0.04µs        ? ?/sec    1.00     14.8±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            2.66     55.4±0.23µs        ? ?/sec    1.00     20.8±0.11µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned            2.29     55.7±0.25µs        ? ?/sec    1.00     24.3±0.30µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              4.66     24.6±0.04µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             10.98    58.2±0.19µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.1±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.0±0.09µs        ? ?/sec    1.11     21.0±0.08µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.2±0.01µs        ? ?/sec    1.00      5.2±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.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µ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.00µs        ? ?/sec    1.00      3.7±0.01µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.7±0.02µ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.01      3.3±0.12µs        ? ?/sec    1.00      3.3±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.3±0.01µs        ? ?/sec    1.00      3.3±0.00µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.8±0.01µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.00     16.5±0.11µs        ? ?/sec    1.14     18.8±0.24µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.1±0.01µs        ? ?/sec    1.00      9.1±0.01µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.2±0.01µs        ? ?/sec    1.00      9.2±0.01µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.1±0.01µs        ? ?/sec    1.00      9.1±0.00µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.01     71.9±0.16µs        ? ?/sec    1.00     71.1±0.29µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.00     61.3±0.25µs        ? ?/sec    1.02     62.8±0.51µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     86.6±0.16µs        ? ?/sec    1.00     86.6±0.33µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.13     47.5±0.33µs        ? ?/sec    1.00     42.2±0.16µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.12     47.6±0.17µs        ? ?/sec    1.00     42.5±0.12µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.17     35.3±0.12µs        ? ?/sec    1.00     30.2±0.08µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                      1.01     13.0±0.03µs        ? ?/sec    1.00     13.0±0.01µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                     1.00     23.6±0.17µs        ? ?/sec    1.03     24.3±0.25µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                     1.03     13.2±0.02µs        ? ?/sec    1.00     12.8±0.01µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                    1.01     19.5±0.19µs        ? ?/sec    1.00     19.3±0.28µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.01     11.9±0.01µs        ? ?/sec    1.00     11.8±0.01µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.00     18.1±0.14µs        ? ?/sec    1.08     19.6±0.11µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.11     13.2±0.18µs        ? ?/sec    1.00     11.8±0.01µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.03     20.4±0.25µs        ? ?/sec    1.00     19.7±0.15µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.1±0.02µs        ? ?/sec    1.00      9.1±0.01µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.5±0.02µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.5±0.02µs        ? ?/sec    1.00     16.5±0.01µ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.01      3.5±0.00µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     11.9±0.04µs        ? ?/sec    1.09     12.9±0.13µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.01     19.3±0.18µs        ? ?/sec    1.00     19.1±0.20µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     11.9±0.01µs        ? ?/sec    1.00     11.8±0.01µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.00     18.0±0.16µs        ? ?/sec    1.34     24.2±0.29µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     15.9±0.01µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     15.9±0.01µs        ? ?/sec    1.00     16.0±0.02µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.3±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     16.3±0.02µs        ? ?/sec    1.07     17.5±0.01µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.00     31.6±0.16µs        ? ?/sec    1.08     34.1±0.22µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     15.9±0.01µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     15.9±0.01µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.3±0.00µs        ? ?/sec    1.00      4.3±0.00µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.3±0.00µs        ? ?/sec    1.00      4.3±0.01µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.00     33.7±0.07µs        ? ?/sec    1.01     34.2±0.04µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     72.5±0.58µs        ? ?/sec    1.00     72.4±0.42µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.1±0.04µs        ? ?/sec    1.01     34.4±0.03µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     73.6±0.33µs        ? ?/sec    1.00     73.6±0.42µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.00     33.3±0.03µs        ? ?/sec    1.02     33.9±0.02µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     71.9±0.34µs        ? ?/sec    1.01     72.5±0.55µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.00     36.6±0.09µs        ? ?/sec    1.04     37.9±0.10µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00    105.0±0.50µs        ? ?/sec    1.02    107.2±0.71µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.00     36.4±0.63µs        ? ?/sec    1.06     38.5±0.12µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    114.8±0.37µs        ? ?/sec    1.03    118.0±0.42µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     72.2±0.46µs        ? ?/sec    1.01     73.2±0.59µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.00     64.6±0.53µs        ? ?/sec    1.05     67.5±0.73µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     25.9±0.02µs        ? ?/sec    1.03     26.6±0.02µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.00     64.6±0.19µs        ? ?/sec    1.03     66.7±0.60µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.00     25.8±0.03µs        ? ?/sec    1.03     26.5±0.03µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.00     64.9±0.55µs        ? ?/sec    1.04     67.5±0.34µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.00     25.8±0.02µs        ? ?/sec    1.03     26.5±0.02µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.00     62.1±0.39µs        ? ?/sec    1.07     66.4±0.65µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.00     17.0±0.02µs        ? ?/sec    1.05     17.9±0.02µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.00     45.2±0.29µs        ? ?/sec    1.07     48.3±0.31µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.00     17.1±0.03µs        ? ?/sec    1.06     18.1±0.04µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.00     45.2±0.28µs        ? ?/sec    1.04     47.0±0.20µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     39.3±0.06µs        ? ?/sec    1.03     40.5±0.04µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     86.3±0.20µs        ? ?/sec    1.01     87.3±0.16µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     39.2±0.03µs        ? ?/sec    1.03     40.5±0.04µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     84.6±0.24µs        ? ?/sec    1.02     86.5±0.28µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     39.4±0.06µs        ? ?/sec    1.04     40.8±0.42µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     86.4±0.20µs        ? ?/sec    1.00     86.8±0.22µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     39.2±0.04µs        ? ?/sec    1.04     40.7±0.06µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     83.7±0.38µs        ? ?/sec    1.01     84.9±0.23µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     29.3±0.08µs        ? ?/sec    1.00     29.5±0.05µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     73.6±0.48µs        ? ?/sec    1.00     73.8±0.50µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     33.1±0.12µs        ? ?/sec    1.00     33.2±0.14µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.01     85.3±0.54µs        ? ?/sec    1.00     84.9±0.58µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     41.4±0.19µs        ? ?/sec    1.03     42.6±0.21µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.00     82.3±1.13µs        ? ?/sec    1.02     83.9±0.41µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.00     39.1±0.03µs        ? ?/sec    1.05     41.0±0.30µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     83.7±0.18µs        ? ?/sec    1.02     85.4±0.52µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.00     28.8±0.16µs        ? ?/sec    1.05     30.1±0.08µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     70.4±0.28µs        ? ?/sec    1.07     75.6±0.61µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.00     16.8±0.02µs        ? ?/sec    1.07     17.9±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.00     41.5±0.16µs        ? ?/sec    1.05     43.6±0.17µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.00     16.9±0.03µs        ? ?/sec    1.06     18.0±0.02µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.00     41.4±0.16µs        ? ?/sec    1.05     43.3±0.14µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.00     17.0±0.03µs        ? ?/sec    1.06     18.1±0.03µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   1.00     44.3±0.15µs        ? ?/sec    1.08     47.6±0.34µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.00     17.1±0.02µs        ? ?/sec    1.06     18.2±0.02µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.00     40.3±0.22µs        ? ?/sec    1.05     42.5±0.25µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1530.3s
Peak memory 40.8 MiB
Avg memory 29.2 MiB
CPU user 1651.5s
CPU sys 1.4s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1535.3s
Peak memory 41.2 MiB
Avg memory 29.6 MiB
CPU user 1665.6s
CPU sys 1.4s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch 4 times, most recently from 7770d0b to 20399e4 Compare August 20, 2026 14:49
@geoffreyclaude
geoffreyclaude marked this pull request as ready for review August 20, 2026 19:29
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch from 20399e4 to 1217f5e Compare August 20, 2026 19:31
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy
baseline:
ref: ab4b5e0

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5360844561-1815-48lhf 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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-fixed-size-binary-hashset (1217f5e) to ab4b5e0 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "ab4b5e0d964dd2b76a68ba515764d186bb476298"

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-fixed-size-binary-hashset (1217f5e) to ab4b5e0 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "ab4b5e0d964dd2b76a68ba515764d186bb476298"
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-fixed-size-binary-hashset
-----                                                                ----                                   ---------------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.7±0.01µs        ? ?/sec    1.00      7.7±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      7.9±0.01µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      7.8±0.01µs        ? ?/sec    1.00      7.8±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.7±0.01µs        ? ?/sec    1.00      7.8±0.01µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.8±0.01µs        ? ?/sec    1.00      8.8±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.3±0.01µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.1±0.01µs        ? ?/sec    1.00      8.1±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.6±0.02µs        ? ?/sec    1.00      9.6±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     15.3±0.01µs        ? ?/sec    1.01     15.5±0.05µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.05     25.2±0.23µs        ? ?/sec    1.00     23.9±0.48µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.5±0.02µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.5±0.01µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=0%                              6.11     28.9±0.13µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             12.14    57.4±0.48µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.79     25.1±0.03µs        ? ?/sec    1.00     14.1±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         2.85     54.0±0.10µs        ? ?/sec    1.00     18.9±0.12µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.80     23.3±0.03µs        ? ?/sec    1.00     13.0±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           2.08     52.4±0.21µs        ? ?/sec    1.00     25.2±0.34µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.98     23.0±0.03µs        ? ?/sec    1.00     11.6±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             4.79     55.7±0.37µs        ? ?/sec    1.00     11.6±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.78     22.9±0.02µs        ? ?/sec    1.00     12.9±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned             1.52     23.1±0.02µs        ? ?/sec    1.00     15.2±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            2.20     54.3±0.43µs        ? ?/sec    1.00     24.7±0.30µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned            1.97     54.6±0.17µs        ? ?/sec    1.00     27.7±0.25µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              4.96     26.2±0.23µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             11.10    58.8±0.39µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     14.6±0.01µs        ? ?/sec    1.00     14.7±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     20.9±0.07µs        ? ?/sec    1.01     21.2±0.08µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±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.2±0.04µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.03µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.03µ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.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±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.3±0.00µs        ? ?/sec    1.00      3.3±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.3±0.00µs        ? ?/sec    1.00      3.3±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.17     23.1±0.09µs        ? ?/sec    1.00     19.8±0.25µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.1±0.00µs        ? ?/sec    1.00      9.1±0.00µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.2±0.00µs        ? ?/sec    1.00      9.2±0.01µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.1±0.00µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     70.6±0.37µs        ? ?/sec    1.00     70.8±0.35µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.00     62.1±0.63µs        ? ?/sec    1.02     63.6±0.61µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     77.7±0.23µs        ? ?/sec    1.02     79.6±0.20µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.00     43.6±0.25µs        ? ?/sec    1.24     54.0±0.26µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.00     43.6±0.14µs        ? ?/sec    1.24     54.2±0.26µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.00     31.7±0.07µs        ? ?/sec    1.50     47.6±0.24µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                      1.00     13.0±0.07µs        ? ?/sec    1.00     13.0±0.03µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                     1.00     23.1±0.23µs        ? ?/sec    1.09     25.1±0.19µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                     1.00     12.8±0.02µs        ? ?/sec    1.02     13.0±0.02µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                    1.15     25.5±0.90µs        ? ?/sec    1.00     22.0±0.15µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.08     13.1±0.08µs        ? ?/sec    1.00     12.1±0.02µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.09     19.9±0.13µs        ? ?/sec    1.00     18.3±0.16µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.00     12.4±0.03µs        ? ?/sec    1.08     13.4±0.02µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.24     22.0±0.35µs        ? ?/sec    1.00     17.8±0.15µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.1±0.01µs        ? ?/sec    1.00      9.1±0.00µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.5±0.03µs        ? ?/sec    1.00     16.5±0.01µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.6±0.02µs        ? ?/sec    1.00     16.5±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.01     12.2±0.03µs        ? ?/sec    1.00     12.2±0.10µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.00     18.7±0.11µs        ? ?/sec    1.20     22.4±0.26µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.03     12.5±0.02µs        ? ?/sec    1.00     12.1±0.01µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.11     23.1±0.27µs        ? ?/sec    1.00     20.8±0.23µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     15.9±0.01µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     15.9±0.01µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.3±0.00µs        ? ?/sec    1.00      4.3±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.4±0.04µs        ? ?/sec    1.03     17.9±0.01µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.00     34.5±0.54µs        ? ?/sec    1.01     35.0±0.24µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.0±0.08µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     15.9±0.04µs        ? ?/sec    1.00     15.9±0.01µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.3±0.01µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.3±0.00µs        ? ?/sec    1.00      4.3±0.00µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.02     34.7±0.03µs        ? ?/sec    1.00     34.2±0.03µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.01     73.1±0.45µs        ? ?/sec    1.00     72.2±0.47µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.4±0.15µs        ? ?/sec    1.00     34.3±0.09µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     73.6±0.49µs        ? ?/sec    1.03     75.9±1.11µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.00     33.7±0.06µs        ? ?/sec    1.01     34.1±0.06µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.01     73.4±0.68µs        ? ?/sec    1.00     72.7±0.51µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.01     35.3±0.24µs        ? ?/sec    1.00     34.8±0.09µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.02     97.4±0.57µs        ? ?/sec    1.00     95.7±1.28µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.02     38.2±0.07µs        ? ?/sec    1.00     37.6±0.08µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    103.7±0.41µs        ? ?/sec    1.00    103.6±0.48µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     71.8±0.34µs        ? ?/sec    1.00     71.9±0.50µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.01     66.9±0.28µs        ? ?/sec    1.00     66.5±0.66µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     26.5±0.02µs        ? ?/sec    1.01     26.8±0.27µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.00     65.6±0.37µs        ? ?/sec    1.01     66.5±0.54µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.02     27.1±0.03µs        ? ?/sec    1.00     26.5±0.04µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.00     65.8±0.64µs        ? ?/sec    1.02     66.8±0.43µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.01     26.7±0.10µs        ? ?/sec    1.00     26.6±0.02µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.00     66.3±0.49µs        ? ?/sec    1.02     68.0±0.79µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.00     18.0±0.03µs        ? ?/sec    1.02     18.2±0.02µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.04     47.6±0.20µs        ? ?/sec    1.00     45.9±0.17µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.00     18.1±0.07µs        ? ?/sec    1.01     18.2±0.03µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.04     47.3±0.24µs        ? ?/sec    1.00     45.6±0.22µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.01     40.5±0.06µs        ? ?/sec    1.00     40.3±0.04µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     86.7±0.29µs        ? ?/sec    1.01     87.3±0.29µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.4±0.06µs        ? ?/sec    1.00     40.3±0.10µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     84.9±0.17µs        ? ?/sec    1.01     85.7±0.26µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.5±0.15µs        ? ?/sec    1.01     41.1±0.13µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     86.7±0.22µs        ? ?/sec    1.00     86.6±0.21µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     40.6±0.03µs        ? ?/sec    1.00     40.5±0.13µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     83.8±0.22µs        ? ?/sec    1.00     84.1±0.34µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.14     34.2±0.13µs        ? ?/sec    1.00     29.9±0.06µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.28     95.0±1.22µs        ? ?/sec    1.00     74.4±0.44µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.01     34.5±0.09µs        ? ?/sec    1.00     34.1±0.13µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.25    107.2±0.51µs        ? ?/sec    1.00     85.9±0.49µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.3±0.04µs        ? ?/sec    1.00     42.2±0.13µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.01     83.9±0.38µs        ? ?/sec    1.00     82.7±0.36µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.01     40.8±0.17µs        ? ?/sec    1.00     40.5±0.04µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     84.3±0.29µs        ? ?/sec    1.00     84.0±0.31µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.01     30.0±0.04µs        ? ?/sec    1.00     29.8±0.09µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     70.6±0.09µs        ? ?/sec    1.02     72.3±0.33µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.00     17.8±0.04µs        ? ?/sec    1.01     18.0±0.14µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.00     43.2±0.18µs        ? ?/sec    1.01     43.6±0.21µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.00     18.0±0.05µs        ? ?/sec    1.00     17.9±0.02µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.01     42.8±0.31µs        ? ?/sec    1.00     42.4±0.34µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.00     18.0±0.03µs        ? ?/sec    1.01     18.2±0.03µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   1.04     46.9±0.15µs        ? ?/sec    1.00     45.2±0.16µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.03     18.7±0.26µs        ? ?/sec    1.00     18.2±0.02µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.03     42.5±0.22µs        ? ?/sec    1.00     41.2±0.19µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1525.3s
Peak memory 41.9 MiB
Avg memory 29.3 MiB
CPU user 1638.7s
CPU sys 1.4s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1520.3s
Peak memory 41.0 MiB
Avg memory 29.7 MiB
CPU user 1648.1s
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.

3 participants