Skip to content

IN LIST: reuse primitive filters for FixedSizeBinary - #24102

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

IN LIST: reuse primitive filters for FixedSizeBinary#24102
geoffreyclaude wants to merge 7 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?

Note

Until #24283 merges, GitHub's Files changed tab also includes that PR. The direct diff from #24283 to this PR shows only the FixedSizeBinary changes.

Rationale for this change

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 used 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 does not change that 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 these key types and can be read without copying. If a buffer is unaligned, the list is copied once when the filter is built, while an unaligned input is copied before each evaluation. The benchmark below measures the input-copy cost. 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 benchmark coverage from 8 to 14 cases, including two unaligned-input cases.

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.

Local benchmark snapshot

Both code states were built in separate target directories and run with identical benchmark source:

cargo bench --target-dir <target-dir> \
  -p datafusion-physical-expr \
  --bench in_list_strategy -- fixed_size_binary --noplot

Criterion defaults were used. The tables report median point estimates. The filter is built before the timed loop, so the results measure repeated evaluation, not filter construction or a complete query. Lower is better; changes within +/-5% are treated as noise.

Compared code states: #24283 -> #24102

These measurements predate the stack split: they compared #23014 with the then-combined branch. Restacking kept the FixedSizeBinary adapter, its filter choices, and the timed membership loops unchanged.

All 12 aligned cases improved. The geometric-mean time reduction was 71.5%. Grouped by filter, the reductions were 83.5% for direct comparison, 91.2% for bitmap lookup, and 39.4% for hash-set lookup.

Aligned FixedSizeBinary results (12 rows)
Benchmark Before After Change
fixed_size_binary/fsb1/list=16/match=0% 28.794 us 3.779 us -86.9% (7.62x faster)
fixed_size_binary/fsb1/list=16/match=50% 67.875 us 3.805 us -94.4% (17.84x faster)
fixed_size_binary/fsb2/list=64/match=0% 26.012 us 3.963 us -84.8% (6.56x faster)
fixed_size_binary/fsb2/list=64/match=50% 75.415 us 3.821 us -94.9% (19.74x faster)
fixed_size_binary/fsb16/list=4/match=0% 24.063 us 12.067 us -49.9% (1.99x faster)
fixed_size_binary/fsb16/list=4/match=50% 59.507 us 12.072 us -79.7% (4.93x faster)
fixed_size_binary/fsb16/list=64/match=0% 23.866 us 14.875 us -37.7% (1.60x faster)
fixed_size_binary/fsb16/list=64/match=50% 63.890 us 36.388 us -43.0% (1.76x faster)
fixed_size_binary/fsb16/list=256/match=0% 24.956 us 15.979 us -36.0% (1.56x faster)
fixed_size_binary/fsb16/list=256/match=50% 62.657 us 33.580 us -46.4% (1.87x faster)
fixed_size_binary/fsb16/list=10000/match=0% 26.350 us 17.983 us -31.8% (1.47x faster)
fixed_size_binary/fsb16/list=10000/match=50% 60.882 us 36.444 us -40.1% (1.67x faster)

Unaligned input

A separate automated run used an 8,192-row input of 16-byte values and a 64-value list. Each evaluation copied 128 KiB into aligned storage.

Benchmark Before After Change
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned 23.0 us 17.7 us -23.0% (1.30x faster)
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned 51.4 us 28.6 us -44.4% (1.80x faster)

In that run, the aligned versions took 14.9 us and 25.8 us after this PR. Copying added 2.8 us in both cases, or 18.8% and 10.9%, respectively.

@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 79.54545% with 81 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.15%. Comparing base (426b351) to head (7ff49f9).
⚠️ Report is 106 commits behind head on main.

Files with missing lines Patch % Lines
...l-expr/src/expressions/in_list/primitive_filter.rs 73.79% 21 Missing and 17 partials ⚠️
...rc/expressions/in_list/fixed_size_binary_filter.rs 83.56% 13 Missing and 23 partials ⚠️
...atafusion/physical-expr/src/expressions/in_list.rs 84.00% 0 Missing and 4 partials ⚠️
.../physical-expr/src/expressions/in_list/strategy.rs 40.00% 0 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24102      +/-   ##
==========================================
+ Coverage   80.91%   81.15%   +0.23%     
==========================================
  Files        1102     1113      +11     
  Lines      377102   387186   +10084     
  Branches   377102   387186   +10084     
==========================================
+ Hits       305143   314204    +9061     
- Misses      53769    54449     +680     
- Partials    18190    18533     +343     

☔ 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
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch from 2117edf to b2e4ecc Compare August 11, 2026 16:28
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy
baseline:
ref: 3f95830
changed:
ref: b2e4ecc

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5255921797-1547-d9qbg 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 b2e4ecc (b2e4ecc) to 3f95830 diff

Run configuration
run benchmark in_list_strategy
baseline:
  ref: "3f958303e4e4ea4610ce91434f0c38ab75c99658"
changed:
  ref: "b2e4eccd68ce8d694b987cc6667dabcbe53f1582"

Results will be posted here when complete


File an issue against this benchmark runner

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Aug 11, 2026
@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 8 times, most recently from 65e9121 to 9b316c1 Compare August 13, 2026 10:14
geoffreyclaude and others added 6 commits August 13, 2026 12:40
Use PrimitiveHashSetFilter<T, K> for integer and floating-point arrays. Integer filters keep their native key type by default; Float32 and Float64 use their existing bitwise wrapper keys, preserving signed-zero and NaN-payload behavior.

The key type and conversion are selected statically, with no function pointer or dynamic dispatch in the lookup loop. Filter selection, dictionary handling, null handling, IN, and NOT IN behavior remain unchanged. Decimal128 routing remains in the following commit.
Route Decimal128 lists above the branchless cutoff through PrimitiveHashSetFilter, replacing the ArrayStaticFilter fallback.
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-fixed-size-binary-hashset branch from 9b316c1 to 7ff49f9 Compare August 13, 2026 10:46
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