Skip to content

feat(parquet): RowSelection can be backed by a BooleanBuffer#10141

Open
haohuaijin wants to merge 13 commits into
apache:mainfrom
haohuaijin:export-mask
Open

feat(parquet): RowSelection can be backed by a BooleanBuffer#10141
haohuaijin wants to merge 13 commits into
apache:mainfrom
haohuaijin:export-mask

Conversation

@haohuaijin

@haohuaijin haohuaijin commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

RowSelection currently stores selections as Vec<RowSelector> (16 bytes per selector). This is compact for long runs, but expensive for scattered matches. With ~35% isolated single-row hits, it uses about 11.2 bytes per input row. A BooleanBuffer uses 1 bit per input row, about 90x less memory.

The reader can also choose the Mask strategy, which converts selectors back into a bitmap. When the caller already had a bitmap, this conversion round-trip is unnecessary.

This PR lets RowSelection preserve a caller-provided bitmap and pass it directly to mask execution.

This is not intended to claim broad DataFusion / TPC-DS / ClickBench speedups. Current common DataFusion SQL paths generally do not naturally produce bitmap-backed RowSelections. The practical benefit is for integrations that already have a row-level bitmap and need Parquet to consume it without materializing a large selector list.

What changes are included in this PR?

RowSelection can now be backed by either Vec<RowSelector> or BooleanBuffer. New public construction:

pub fn RowSelection::from_boolean_buffer(mask: BooleanBuffer) -> Self;
impl From<BooleanBuffer> for RowSelection;

Methods that can work directly on the bitmap now do so:

  • iter() streams via BitSliceIterator
  • row_count / skipped_row_count use count_set_bits
  • selects_any uses set_indices().next()
  • trim preserves mask backing via BooleanBuffer::slice
  • intersection / union on Mask+Mask use BitAnd / BitOr
  • split_off on a mask uses BooleanBuffer::slice (O(1), both halves stay mask-backed)
  • limit slices at the selected-row boundary via find_nth_set_bit_position, staying mask-backed
  • offset finds the first selected row to keep via find_nth_set_bit_position and rebuilds only the mask buffer, avoiding selector materialization
  • and_then applies the inner selection over the mask's set positions, returning a mask-backed result
  • FromIterator<RowSelection> concatenates BooleanBuffers when every input is mask-backed

Mixed inputs, and existing selector-backed inputs, still use the existing selector helpers. Existing callers keep the same behavior.

The reader (ReadPlanBuilder::build) passes a mask-backed selection straight to RowSelectionCursor::new_mask_from_buffer, so it skips rebuilding the bitmap from selectors.

Are these changes tested?

Yes. This PR extends the existing RowSelection unit tests with coverage for:

  • constructing from BooleanBuffer, including empty and all-unset masks
  • From<BooleanBuffer>
  • preserving mask backing across clone, split_off, limit, offset, and_then, and all-mask FromIterator<RowSelection>
  • falling back to selector backing for mixed-backed concatenation
  • equality between equivalent selector-backed and mask-backed selections
  • mask-backed intersection / union, including uneven-length inputs
  • fuzz-style equivalence between mask-backed selections and the existing from_filters selector path

Are there any user-facing changes?

no breaking api change

@github-actions github-actions Bot added the parquet Changes to the parquet crate label Jun 14, 2026
@alamb

alamb commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

@haohuaijin

Copy link
Copy Markdown
Contributor Author

Thanks @alamb for the pointers. I looked at #6624, #7454, and the work that landed in #8733.

My understanding is:

This does not replace selector-backed selections. Selectors are still better for clustered/page-index-style selections.

The case this helps is when the caller already has a row-level bitmap, such as from an external index, FTS index, or bitmap index. Today that bitmap has to go through BooleanBuffer -> Vec<RowSelector> -> mask in some paths. Keeping the original BooleanBuffer avoids that extra conversion and avoids building a large selector list for fragmented masks.

So I see this as a small representation-layer improvement that complements #8733. #8733 added mask execution; this PR adds a direct bitmap-backed input path for it. It does not try to implement the broader adaptive predicate-pushdown/page-cache design from #7454.

cc @hhhizzz @XiangpengHao @zhuqi-lucas

@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

run benchmark arrow_reader arrow_reader_row_filter

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4783293361-635-hxxkf 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (1720537) to 2e035fd (merge-base) diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4783293361-636-bs95k 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (1720537) to 2e035fd (merge-base) diff
BENCH_NAME=arrow_reader_row_filter
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_row_filter
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@alamb alamb added performance api-change Changes to the arrow API labels Jun 23, 2026
@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

run benchmark arrow_reader_clickbench

@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Merging up to fix CI

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4783400488-637-cprmq 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (7b102f4) to 6ba533d (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                                                                              export-mask                            main
-----                                                                                              -----------                            ----
arrow_reader_row_filter/float64 <= 99.0/all_columns/async                                          1.02      5.4±0.03ms        ? ?/sec    1.00      5.3±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/all_columns/sync                                           1.01      5.2±0.04ms        ? ?/sec    1.00      5.2±0.06ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/exclude_filter_column/async                                1.01      4.6±0.04ms        ? ?/sec    1.00      4.6±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/exclude_filter_column/sync                                 1.00      4.5±0.04ms        ? ?/sec    1.00      4.5±0.05ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/all_columns/async                            1.01      4.2±0.04ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/all_columns/sync                             1.01      4.5±0.04ms        ? ?/sec    1.00      4.5±0.04ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/exclude_filter_column/async                  1.02      3.7±0.03ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/exclude_filter_column/sync                   1.01      3.7±0.04ms        ? ?/sec    1.00      3.7±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/all_columns/async                                           1.01      5.4±0.03ms        ? ?/sec    1.00      5.3±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/all_columns/sync                                            1.01      5.2±0.05ms        ? ?/sec    1.00      5.2±0.05ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/exclude_filter_column/async                                 1.00      4.6±0.03ms        ? ?/sec    1.00      4.6±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/exclude_filter_column/sync                                  1.00      4.5±0.03ms        ? ?/sec    1.00      4.5±0.04ms        ? ?/sec
arrow_reader_row_filter/int64 == 9999/all_columns/async                                            1.02    897.9±2.45µs        ? ?/sec    1.00    878.6±2.32µs        ? ?/sec
arrow_reader_row_filter/int64 == 9999/all_columns/sync                                             1.00      2.2±0.02ms        ? ?/sec    1.00      2.2±0.02ms        ? ?/sec
arrow_reader_row_filter/int64 == 9999/exclude_filter_column/async                                  1.03    822.5±2.61µs        ? ?/sec    1.00    798.2±2.02µs        ? ?/sec
arrow_reader_row_filter/int64 == 9999/exclude_filter_column/sync                                   1.00      2.1±0.02ms        ? ?/sec    1.00      2.1±0.02ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/all_columns/async                                               1.09      8.3±0.12ms        ? ?/sec    1.00      7.6±0.05ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/all_columns/sync                                                1.01      6.9±0.06ms        ? ?/sec    1.00      6.8±0.04ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/exclude_filter_column/async                                     1.08      7.7±0.12ms        ? ?/sec    1.00      7.2±0.05ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/exclude_filter_column/sync                                      1.01      6.4±0.05ms        ? ?/sec    1.00      6.3±0.04ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/all_columns/async                                                1.01      5.0±0.04ms        ? ?/sec    1.00      5.0±0.04ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/all_columns/sync                                                 1.00      5.3±0.04ms        ? ?/sec    1.00      5.3±0.04ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/exclude_filter_column/async                                      1.00      4.5±0.04ms        ? ?/sec    1.01      4.6±0.03ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/exclude_filter_column/sync                                       1.01      4.5±0.04ms        ? ?/sec    1.00      4.5±0.04ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/all_columns/async                                               1.00      3.4±0.03ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/all_columns/sync                                                1.00      3.6±0.03ms        ? ?/sec    1.01      3.6±0.02ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/exclude_filter_column/async                                     1.00      3.1±0.02ms        ? ?/sec    1.02      3.1±0.03ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/exclude_filter_column/sync                                      1.00      3.2±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/all_columns/async                                           1.06      9.1±0.08ms        ? ?/sec    1.00      8.6±0.06ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/all_columns/sync                                            1.01      9.4±0.06ms        ? ?/sec    1.00      9.3±0.06ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/exclude_filter_column/async                                 1.06      7.6±0.07ms        ? ?/sec    1.00      7.2±0.04ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/exclude_filter_column/sync                                  1.00      6.4±0.03ms        ? ?/sec    1.00      6.4±0.04ms        ? ?/sec
arrow_reader_row_filter_limit/float64 <= 99.0/all_columns/limit10/async                            1.03    347.8±1.64µs        ? ?/sec    1.00    336.2±0.81µs        ? ?/sec
arrow_reader_row_filter_limit/float64 <= 99.0/exclude_filter_column/limit10/async                  1.05    344.0±1.71µs        ? ?/sec    1.00    326.9±0.57µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0 AND ts >= 9000/all_columns/limit10/async              1.03    384.5±1.68µs        ? ?/sec    1.00    374.1±1.44µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0 AND ts >= 9000/exclude_filter_column/limit10/async    1.04    371.2±2.32µs        ? ?/sec    1.00    356.9±1.02µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0/all_columns/limit10/async                             1.03    348.1±1.56µs        ? ?/sec    1.00    337.2±1.29µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0/exclude_filter_column/limit10/async                   1.05    345.4±1.73µs        ? ?/sec    1.00    327.9±0.97µs        ? ?/sec
arrow_reader_row_filter_limit/int64 > 90/all_columns/limit10/async                                 1.03    341.7±2.09µs        ? ?/sec    1.00    330.5±1.30µs        ? ?/sec
arrow_reader_row_filter_limit/int64 > 90/exclude_filter_column/limit10/async                       1.04    336.2±1.81µs        ? ?/sec    1.00    324.6±1.56µs        ? ?/sec
arrow_reader_row_filter_limit/ts < 9000/all_columns/limit10/async                                  1.04    338.6±1.61µs        ? ?/sec    1.00    326.5±1.17µs        ? ?/sec
arrow_reader_row_filter_limit/ts < 9000/exclude_filter_column/limit10/async                        1.05    335.8±1.76µs        ? ?/sec    1.00    321.1±1.14µs        ? ?/sec
arrow_reader_row_filter_limit/ts >= 9000/all_columns/limit10/async                                 1.03    354.8±1.67µs        ? ?/sec    1.00    344.6±1.16µs        ? ?/sec
arrow_reader_row_filter_limit/ts >= 9000/exclude_filter_column/limit10/async                       1.05    349.7±1.31µs        ? ?/sec    1.00    334.1±0.97µs        ? ?/sec
arrow_reader_row_filter_limit/utf8View <> ''/all_columns/limit10/async                             1.06    373.9±1.52µs        ? ?/sec    1.00    353.8±0.99µs        ? ?/sec
arrow_reader_row_filter_limit/utf8View <> ''/exclude_filter_column/limit10/async                   1.03    353.8±1.27µs        ? ?/sec    1.00    343.5±0.93µs        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 480.1s
Peak memory 45.0 MiB
Avg memory 30.9 MiB
CPU user 473.1s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 470.1s
Peak memory 44.8 MiB
Avg memory 31.1 MiB
CPU user 467.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

run benchmark row_selector row_selection_cursor

@alamb alamb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @haohuaijin . I think this is totally the right direction and I really like where this is going

As long as this doesn't cause a performance regression I think it is good to go.

I have actually tried this myself (see #6624) as did @XiangpengHao in #6624.

Some other thoughts

  1. We need to make sure it doesn't cause a performance regression (I can help here)
  2. It currently has a public API change, so we can't merge it until main opens for the next major release (likely in mid-late July). If we can figure out how to keep the API the same we could potentially release it sooner

I haven' tmade it through the entire PR yet, but I did fire off some benchmarks


#[inline]
fn next(&mut self) -> Option<RowSelector> {
match self {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general I think this will add a branch in the main loops - every chunk of bits will require matching -- it might make sense to figure out how to have iterators for the two different types, so that code paths that want to iterate over the selection can match outside

match iter { 
  RowSelectionIter::Selectors(iter) => {  for i in iter ... }, // special loop for selector backed
  RowSelectionIter::Mask(iter) => {  for i in iter ... }, // special loop for mask backed
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated in fff3ab3

if self.finished {
return None;
}
match self.slices.next() {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much of this code appears untested

I ran code coverage like

  cargo llvm-cov --html test -p parquet --features arrow
Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added in fff3ab3

impl Iterator for MaskRunIter<'_> {
type Item = RowSelector;

fn next(&mut self) -> Option<RowSelector> {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is the main API that is not compatible -- it need to return &RowSelector -- if we could change that we can merge this PR before the next major release (with breaking API changes)

@haohuaijin haohuaijin Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated RowSelection::iter() to keep returning Iterator<Item = &RowSelector>.

  • For selector-backed selections this still borrows from the internal Vec<RowSelector>.
  • For mask-backed selections I added a lazy selector cache, because the returned &RowSelector values need stable storage inside RowSelection; otherwise they would point into a temporary Vec.

The internal hot paths still avoid this cache and use the BooleanBuffer or MaskRunIter directly.

the struct is below

pub struct RowSelection {
    inner: RowSelectionInner,
}

pub(crate) enum RowSelectionInner {
    Selectors(Vec<RowSelector>),
    Mask(Box<MaskSelection>),
}

pub(crate) struct MaskSelection {
    mask: BooleanBuffer,
    selectors: OnceLock<Vec<RowSelector>>,
}

I am not fully sure this is the best approach, so suggestions and feedback are welcome.

if let (Some(l), Some(r)) = (self.as_mask(), other.as_mask()) {
return Self::from_boolean_buffer(intersect_masks(l, r));
}
let l = self.materialize_for_combine();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a clever idea -- as a follow on we could potentially implement specialized versions of each of these implementations

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for example, I think and_then can use some of the fancy BMI instructions that @devanbenz is investigating in #10136

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree

// Verify that the size of RowGroupDecoderState does not grow too large
fn test_structure_size() {
assert_eq!(std::mem::size_of::<RowGroupDecoderState>(), 232);
assert_eq!(std::mem::size_of::<RowGroupDecoderState>(), 256);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is bigger because a RowSelection is now bigger.

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4783482356-640-s7mgp 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (7b102f4) to 6ba533d (merge-base) diff
BENCH_NAME=row_selection_cursor
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench row_selection_cursor
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4783482356-639-b2k9m 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (7b102f4) to 6ba533d (merge-base) diff
BENCH_NAME=row_selector
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench row_selector
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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           export-mask                            main
-----           -----------                            ----
and_then        1.48   862.5±15.70µs        ? ?/sec    1.00    581.9±2.03µs        ? ?/sec
from_filters    1.00    370.2±1.96µs        ? ?/sec    1.01    372.2±5.17µs        ? ?/sec
intersection    2.03      2.7±0.02ms        ? ?/sec    1.00   1338.6±2.46µs        ? ?/sec
union           2.38      3.1±0.03ms        ? ?/sec    1.00   1294.3±3.77µs        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 14.0 MiB
Avg memory 10.4 MiB
CPU user 44.6s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 45.0s
Peak memory 13.5 MiB
Avg memory 10.8 MiB
CPU user 30.9s
CPU sys 9.1s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

🤔 looks like arrow_reader_row_filter is slightly slower. Rerunning to try an reproduce

@alamb

alamb commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

run benchmark arrow_reader_row_filter

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4787465734-648-84cnc 6.12.85+ #1 SMP Mon May 11 08:17:35 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 export-mask (0ffbf26) to 6ba533d (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4787465734-650-xqjtv 6.12.85+ #1 SMP Mon May 11 08:17:35 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 export-mask (0ffbf26) to 6ba533d (merge-base) diff
BENCH_NAME=row_selector
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench row_selector
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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           export-mask                            main
-----           -----------                            ----
and_then        1.00    582.5±2.11µs        ? ?/sec    1.00    580.9±2.23µs        ? ?/sec
from_filters    1.00    370.5±2.14µs        ? ?/sec    1.00    370.8±1.81µs        ? ?/sec
intersection    1.00   1302.6±1.35µs        ? ?/sec    1.03   1337.8±1.64µs        ? ?/sec
union           1.03   1331.1±2.70µs        ? ?/sec    1.00   1294.7±1.88µs        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 14.0 MiB
Avg memory 10.4 MiB
CPU user 44.7s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 50.0s
Peak memory 13.9 MiB
Avg memory 10.4 MiB
CPU user 44.0s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

haohuaijin commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for your reviews @alamb , i revert the break api change, and fix some performance issue, i retrigger the benchmark, let see the result.

One thing I noticed is that selection.rs is getting quite large. It may be cleaner to move selector/mask-specific implementation details into separate files, while keeping the public API in selection.rs.

I am not sure if we should do that in this PR, as it would make the diff larger, or leave it as a follow-up.

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                                                                              export-mask                            main
-----                                                                                              -----------                            ----
arrow_reader_row_filter/float64 <= 99.0/all_columns/async                                          1.00      5.3±0.02ms        ? ?/sec    1.00      5.3±0.02ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/all_columns/sync                                           1.00      5.3±0.08ms        ? ?/sec    1.01      5.3±0.10ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/exclude_filter_column/async                                1.00      4.7±0.06ms        ? ?/sec    1.00      4.7±0.03ms        ? ?/sec
arrow_reader_row_filter/float64 <= 99.0/exclude_filter_column/sync                                 1.00      4.5±0.02ms        ? ?/sec    1.00      4.5±0.02ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/all_columns/async                            1.00      4.2±0.01ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/all_columns/sync                             1.00      4.5±0.01ms        ? ?/sec    1.01      4.6±0.10ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/exclude_filter_column/async                  1.02      3.8±0.09ms        ? ?/sec    1.00      3.8±0.08ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0 AND ts >= 9000/exclude_filter_column/sync                   1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/all_columns/async                                           1.00      5.4±0.11ms        ? ?/sec    1.01      5.5±0.10ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/all_columns/sync                                            1.00      5.4±0.18ms        ? ?/sec    1.00      5.4±0.16ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/exclude_filter_column/async                                 1.00      4.6±0.02ms        ? ?/sec    1.00      4.6±0.02ms        ? ?/sec
arrow_reader_row_filter/float64 > 99.0/exclude_filter_column/sync                                  1.00      4.6±0.14ms        ? ?/sec    1.00      4.6±0.13ms        ? ?/sec
arrow_reader_row_filter/int64 == 9999/all_columns/async                                            1.00   904.0±14.03µs        ? ?/sec    1.00   907.6±18.66µs        ? ?/sec
arrow_reader_row_filter/int64 == 9999/all_columns/sync                                             1.00      2.1±0.01ms        ? ?/sec    1.00      2.2±0.01ms        ? ?/sec
arrow_reader_row_filter/int64 == 9999/exclude_filter_column/async                                  1.00    814.5±5.68µs        ? ?/sec    1.00    813.6±9.14µs        ? ?/sec
arrow_reader_row_filter/int64 == 9999/exclude_filter_column/sync                                   1.00      2.1±0.01ms        ? ?/sec    1.00      2.1±0.01ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/all_columns/async                                               1.00      7.7±0.02ms        ? ?/sec    1.00      7.7±0.02ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/all_columns/sync                                                1.01      6.8±0.02ms        ? ?/sec    1.00      6.8±0.02ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/exclude_filter_column/async                                     1.01      7.3±0.07ms        ? ?/sec    1.00      7.2±0.07ms        ? ?/sec
arrow_reader_row_filter/int64 > 90/exclude_filter_column/sync                                      1.01      6.5±0.16ms        ? ?/sec    1.00      6.5±0.17ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/all_columns/async                                                1.00      5.0±0.03ms        ? ?/sec    1.01      5.0±0.04ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/all_columns/sync                                                 1.00      5.3±0.02ms        ? ?/sec    1.00      5.3±0.02ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/exclude_filter_column/async                                      1.00      4.6±0.01ms        ? ?/sec    1.01      4.6±0.09ms        ? ?/sec
arrow_reader_row_filter/ts < 9000/exclude_filter_column/sync                                       1.01      4.6±0.05ms        ? ?/sec    1.00      4.6±0.02ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/all_columns/async                                               1.00      3.5±0.10ms        ? ?/sec    1.02      3.6±0.11ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/all_columns/sync                                                1.00      3.6±0.01ms        ? ?/sec    1.00      3.6±0.01ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/exclude_filter_column/async                                     1.00      3.2±0.06ms        ? ?/sec    1.01      3.2±0.07ms        ? ?/sec
arrow_reader_row_filter/ts >= 9000/exclude_filter_column/sync                                      1.00      3.2±0.04ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/all_columns/async                                           1.01      8.6±0.03ms        ? ?/sec    1.00      8.6±0.02ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/all_columns/sync                                            1.01      9.4±0.08ms        ? ?/sec    1.00      9.4±0.03ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/exclude_filter_column/async                                 1.01      7.2±0.02ms        ? ?/sec    1.00      7.2±0.03ms        ? ?/sec
arrow_reader_row_filter/utf8View <> ''/exclude_filter_column/sync                                  1.02      6.5±0.09ms        ? ?/sec    1.00      6.4±0.07ms        ? ?/sec
arrow_reader_row_filter_limit/float64 <= 99.0/all_columns/limit10/async                            1.01    347.2±5.20µs        ? ?/sec    1.00    342.1±7.85µs        ? ?/sec
arrow_reader_row_filter_limit/float64 <= 99.0/exclude_filter_column/limit10/async                  1.02    336.5±1.09µs        ? ?/sec    1.00    329.6±1.62µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0 AND ts >= 9000/all_columns/limit10/async              1.03    391.5±6.28µs        ? ?/sec    1.00    380.0±3.23µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0 AND ts >= 9000/exclude_filter_column/limit10/async    1.00    364.6±0.69µs        ? ?/sec    1.00    363.7±5.43µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0/all_columns/limit10/async                             1.00    346.1±2.47µs        ? ?/sec    1.00    345.3±8.56µs        ? ?/sec
arrow_reader_row_filter_limit/float64 > 99.0/exclude_filter_column/limit10/async                   1.01    337.5±2.20µs        ? ?/sec    1.00    335.0±5.57µs        ? ?/sec
arrow_reader_row_filter_limit/int64 > 90/all_columns/limit10/async                                 1.02    338.8±1.26µs        ? ?/sec    1.00    332.9±1.29µs        ? ?/sec
arrow_reader_row_filter_limit/int64 > 90/exclude_filter_column/limit10/async                       1.02    336.0±5.63µs        ? ?/sec    1.00    327.8±5.34µs        ? ?/sec
arrow_reader_row_filter_limit/ts < 9000/all_columns/limit10/async                                  1.01    342.9±6.32µs        ? ?/sec    1.00    338.4±6.19µs        ? ?/sec
arrow_reader_row_filter_limit/ts < 9000/exclude_filter_column/limit10/async                        1.01    332.5±6.11µs        ? ?/sec    1.00    328.1±5.09µs        ? ?/sec
arrow_reader_row_filter_limit/ts >= 9000/all_columns/limit10/async                                 1.01    350.5±3.12µs        ? ?/sec    1.00    346.2±1.81µs        ? ?/sec
arrow_reader_row_filter_limit/ts >= 9000/exclude_filter_column/limit10/async                       1.02    341.9±3.63µs        ? ?/sec    1.00    335.7±3.60µs        ? ?/sec
arrow_reader_row_filter_limit/utf8View <> ''/all_columns/limit10/async                             1.01    362.4±0.84µs        ? ?/sec    1.00    360.0±1.98µs        ? ?/sec
arrow_reader_row_filter_limit/utf8View <> ''/exclude_filter_column/limit10/async                   1.02    351.6±2.22µs        ? ?/sec    1.00    346.0±1.92µs        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 480.1s
Peak memory 44.8 MiB
Avg memory 30.6 MiB
CPU user 474.1s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 475.1s
Peak memory 45.6 MiB
Avg memory 31.0 MiB
CPU user 469.6s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.00   1082.9±4.02µs        ? ?/sec    1.00   1083.7±8.52µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.00      6.5±0.05ms        ? ?/sec    1.00      6.4±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.01      7.5±0.07ms        ? ?/sec    1.00      7.4±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.01     14.4±0.08ms        ? ?/sec    1.00     14.3±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.01     17.0±0.14ms        ? ?/sec    1.00     16.8±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.01     15.9±0.10ms        ? ?/sec    1.00     15.8±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.00      3.0±0.02ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.09     91.6±0.89ms        ? ?/sec    1.00    83.7±10.72ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.00    87.9±10.09ms        ? ?/sec    1.22    107.1±0.51ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.00    123.5±1.86ms        ? ?/sec    1.10    136.3±4.29ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.04    253.0±1.97ms        ? ?/sec    1.00    242.6±0.66ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.03     19.5±0.17ms        ? ?/sec    1.00     19.1±0.08ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.04     59.0±0.54ms        ? ?/sec    1.00     56.9±0.31ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.04     59.3±0.56ms        ? ?/sec    1.00     57.1±0.28ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.01     18.6±0.10ms        ? ?/sec    1.00     18.4±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.05     15.6±0.32ms        ? ?/sec    1.00     14.9±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.00      5.5±0.01ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.05     13.8±0.27ms        ? ?/sec    1.00     13.2±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.07     24.9±0.52ms        ? ?/sec    1.00     23.4±0.14ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.01      5.7±0.05ms        ? ?/sec    1.00      5.7±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.01      5.0±0.03ms        ? ?/sec    1.00      5.0±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.00      3.5±0.02ms        ? ?/sec    1.00      3.5±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.00   1068.9±4.11µs        ? ?/sec    1.00   1065.9±4.37µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      6.3±0.05ms        ? ?/sec    1.00      6.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.00      7.3±0.05ms        ? ?/sec    1.00      7.3±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.00     14.3±0.09ms        ? ?/sec    1.00     14.3±0.06ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.01     16.9±0.15ms        ? ?/sec    1.00     16.8±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.01     15.8±0.13ms        ? ?/sec    1.00     15.7±0.07ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.01      3.0±0.03ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.03     72.8±0.68ms        ? ?/sec    1.00     71.0±0.14ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.03     81.9±0.66ms        ? ?/sec    1.00     79.6±0.17ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.04    100.6±0.77ms        ? ?/sec    1.00     96.8±0.15ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.00    230.2±0.70ms        ? ?/sec    1.02    234.2±0.66ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.02     19.3±0.16ms        ? ?/sec    1.00     18.8±0.10ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.03     58.0±0.74ms        ? ?/sec    1.00     56.0±0.16ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.03     58.1±0.80ms        ? ?/sec    1.00     56.5±0.16ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.02     18.3±0.14ms        ? ?/sec    1.00     18.0±0.07ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.03     14.8±0.30ms        ? ?/sec    1.00     14.4±0.15ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.01      5.4±0.02ms        ? ?/sec    1.00      5.3±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.04     13.1±0.25ms        ? ?/sec    1.00     12.6±0.12ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.08     24.2±0.66ms        ? ?/sec    1.00     22.4±0.13ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.03      5.5±0.04ms        ? ?/sec    1.00      5.4±0.05ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.01      4.8±0.02ms        ? ?/sec    1.00      4.8±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.01      3.4±0.01ms        ? ?/sec    1.00      3.4±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.00    891.2±0.98µs        ? ?/sec    1.00    890.6±1.72µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.00      5.1±0.02ms        ? ?/sec    1.00      5.1±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.00      6.0±0.02ms        ? ?/sec    1.00      6.0±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.00     21.6±0.10ms        ? ?/sec    1.00     21.7±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.16     28.4±0.24ms        ? ?/sec    1.00     24.5±0.13ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.00     23.0±0.12ms        ? ?/sec    1.00     23.0±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.00      2.7±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.03    124.4±0.27ms        ? ?/sec    1.00    121.3±0.24ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.03     99.3±0.20ms        ? ?/sec    1.00     96.4±0.22ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.02    146.5±0.41ms        ? ?/sec    1.00    143.4±0.32ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.01    302.2±7.89ms        ? ?/sec    1.00   298.7±10.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.00     26.7±0.15ms        ? ?/sec    1.00     26.7±0.10ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.02    109.5±0.23ms        ? ?/sec    1.00    106.9±0.20ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.03    107.5±0.21ms        ? ?/sec    1.00    104.3±0.18ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.00     18.6±0.10ms        ? ?/sec    1.00     18.7±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.00     21.9±0.10ms        ? ?/sec    1.01     22.1±0.11ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.00      6.7±0.01ms        ? ?/sec    1.01      6.8±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.00     11.3±0.07ms        ? ?/sec    1.01     11.4±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.00     20.5±0.11ms        ? ?/sec    1.00     20.4±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.00      5.1±0.02ms        ? ?/sec    1.01      5.2±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.00      5.5±0.03ms        ? ?/sec    1.00      5.6±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.00      4.2±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 790.2s
Peak memory 286.3 MiB
Avg memory 130.7 MiB
CPU user 709.8s
CPU sys 74.2s
Peak spill 0 B

branch

Metric Value
Wall time 780.2s
Peak memory 286.1 MiB
Avg memory 133.7 MiB
CPU user 695.3s
CPU sys 82.6s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader_clickbench

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4787709681-651-d6b6g 6.12.85+ #1 SMP Mon May 11 08:17:35 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 export-mask (0ffbf26) to 6ba533d (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@haohuaijin

haohuaijin commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

the arrow_reader_row_filter row_selector benchmark almost same to main branch, but arrow_reader_clickbench still slower than main branch, i retrigger again

update: the arrow_reader_clickbench after retrigger still a bit slower, i will check more on this part in my local

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.00   1086.0±7.05µs        ? ?/sec    1.00   1084.8±6.38µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.00      6.5±0.05ms        ? ?/sec    1.01      6.6±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.00      7.5±0.05ms        ? ?/sec    1.01      7.5±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.02     14.5±0.09ms        ? ?/sec    1.00     14.3±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.01     17.1±0.15ms        ? ?/sec    1.00     16.9±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.02     16.1±0.11ms        ? ?/sec    1.00     15.8±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.00      3.1±0.03ms        ? ?/sec    1.01      3.1±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.11     92.7±0.85ms        ? ?/sec    1.00     83.9±0.37ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.01    106.6±1.26ms        ? ?/sec    1.00    105.0±7.45ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.02    141.4±7.98ms        ? ?/sec    1.00    139.0±9.48ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.00    258.0±2.20ms        ? ?/sec    1.00    257.3±7.13ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.02     19.6±0.16ms        ? ?/sec    1.00     19.3±0.14ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.01     59.1±0.42ms        ? ?/sec    1.00     58.5±0.32ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.02     59.4±0.56ms        ? ?/sec    1.00     58.3±0.37ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.01     18.5±0.11ms        ? ?/sec    1.00     18.4±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.01     15.8±0.32ms        ? ?/sec    1.00     15.6±0.34ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.01      5.5±0.03ms        ? ?/sec    1.00      5.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.00     13.7±0.31ms        ? ?/sec    1.00     13.7±0.32ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.00     24.7±0.62ms        ? ?/sec    1.01     24.9±0.53ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.00      5.7±0.05ms        ? ?/sec    1.01      5.7±0.06ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.00      5.0±0.03ms        ? ?/sec    1.00      5.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.00      3.5±0.02ms        ? ?/sec    1.00      3.5±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.01   1066.9±3.66µs        ? ?/sec    1.00   1056.5±3.18µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      6.4±0.05ms        ? ?/sec    1.00      6.4±0.06ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.01      7.4±0.06ms        ? ?/sec    1.00      7.3±0.06ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.02     14.5±0.14ms        ? ?/sec    1.00     14.2±0.07ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.02     17.1±0.16ms        ? ?/sec    1.00     16.8±0.14ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.01     15.9±0.11ms        ? ?/sec    1.00     15.7±0.07ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.00      3.0±0.04ms        ? ?/sec    1.01      3.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.00     72.4±0.74ms        ? ?/sec    1.00     72.6±0.54ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.01     81.9±0.65ms        ? ?/sec    1.00     80.9±0.54ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.01    100.4±1.01ms        ? ?/sec    1.00     99.6±0.72ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.06    244.6±0.61ms        ? ?/sec    1.00    230.2±3.28ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.02     19.3±0.19ms        ? ?/sec    1.00     19.0±0.14ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.02     57.9±0.77ms        ? ?/sec    1.00     57.0±0.51ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.03     58.4±0.73ms        ? ?/sec    1.00     56.8±0.38ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.01     18.3±0.14ms        ? ?/sec    1.00     18.0±0.09ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.01     15.0±0.27ms        ? ?/sec    1.00     14.9±0.21ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.02      5.4±0.02ms        ? ?/sec    1.00      5.3±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.00     13.2±0.34ms        ? ?/sec    1.00     13.3±0.21ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.02     24.1±0.63ms        ? ?/sec    1.00     23.7±0.42ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.01      5.6±0.06ms        ? ?/sec    1.00      5.5±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.00      4.8±0.04ms        ? ?/sec    1.01      4.9±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.00      3.4±0.02ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.00    892.4±1.84µs        ? ?/sec    1.00    889.8±2.26µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.00      5.1±0.01ms        ? ?/sec    1.00      5.1±0.10ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.00      6.0±0.02ms        ? ?/sec    1.01      6.1±0.11ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.00     21.6±0.08ms        ? ?/sec    1.00     21.6±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.18     28.6±0.22ms        ? ?/sec    1.00     24.3±0.11ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.01     23.0±0.08ms        ? ?/sec    1.00     22.8±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.00      2.7±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.02    126.5±0.27ms        ? ?/sec    1.00    124.1±0.31ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.03    100.3±0.17ms        ? ?/sec    1.00     97.7±0.20ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.01    148.4±0.29ms        ? ?/sec    1.00    147.0±0.43ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.01    309.5±8.60ms        ? ?/sec    1.00   306.6±10.33ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.01     26.9±0.14ms        ? ?/sec    1.00     26.6±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.02    110.7±0.44ms        ? ?/sec    1.00    108.6±0.18ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.03    108.2±0.20ms        ? ?/sec    1.00    105.4±0.13ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.02     18.8±0.09ms        ? ?/sec    1.00     18.5±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.00     22.0±0.12ms        ? ?/sec    1.00     22.1±0.11ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.00      6.8±0.01ms        ? ?/sec    1.00      6.8±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.00     11.4±0.06ms        ? ?/sec    1.00     11.4±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.00     20.7±0.12ms        ? ?/sec    1.00     20.7±0.10ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.00      5.2±0.02ms        ? ?/sec    1.00      5.2±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.00      5.6±0.02ms        ? ?/sec    1.01      5.6±0.04ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.00      4.3±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 790.2s
Peak memory 282.2 MiB
Avg memory 126.1 MiB
CPU user 700.0s
CPU sys 84.0s
Peak spill 0 B

branch

Metric Value
Wall time 795.2s
Peak memory 286.1 MiB
Avg memory 130.1 MiB
CPU user 697.9s
CPU sys 90.9s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader_clickbench

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4788216344-652-npbdx 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (3121682) to 6ba533d (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.00   1092.4±5.01µs        ? ?/sec    1.01   1098.1±6.39µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.00      6.6±0.03ms        ? ?/sec    1.00      6.5±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.00      7.5±0.05ms        ? ?/sec    1.00      7.5±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.00     14.5±0.06ms        ? ?/sec    1.00     14.5±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.00     17.2±0.12ms        ? ?/sec    1.00     17.1±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.00     15.9±0.09ms        ? ?/sec    1.00     15.9±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.00      3.1±0.03ms        ? ?/sec    1.00      3.0±0.02ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.10     92.7±1.70ms        ? ?/sec    1.00     84.4±0.28ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.00    103.7±4.77ms        ? ?/sec    1.02    105.4±6.65ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.00    138.7±6.97ms        ? ?/sec    1.00    138.7±1.64ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.00    255.1±1.50ms        ? ?/sec    1.02   259.8±10.85ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.00     19.5±0.18ms        ? ?/sec    1.00     19.6±0.17ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.01     58.9±0.54ms        ? ?/sec    1.00     58.5±0.42ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.00     59.5±0.46ms        ? ?/sec    1.00     59.3±0.45ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.00     18.7±0.09ms        ? ?/sec    1.00     18.6±0.11ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.00     15.5±0.25ms        ? ?/sec    1.00     15.5±0.17ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.00      5.5±0.03ms        ? ?/sec    1.00      5.5±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.03     13.9±0.31ms        ? ?/sec    1.00     13.6±0.23ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.02     25.2±0.62ms        ? ?/sec    1.00     24.7±0.41ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.00      5.8±0.05ms        ? ?/sec    1.00      5.8±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.00      5.0±0.03ms        ? ?/sec    1.01      5.1±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.00      3.5±0.02ms        ? ?/sec    1.01      3.6±0.05ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.01   1074.9±7.08µs        ? ?/sec    1.00   1064.0±4.25µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      6.4±0.04ms        ? ?/sec    1.01      6.5±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.00      7.4±0.04ms        ? ?/sec    1.00      7.4±0.05ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.00     14.4±0.07ms        ? ?/sec    1.00     14.5±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.00     17.1±0.14ms        ? ?/sec    1.00     17.1±0.12ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.00     15.9±0.09ms        ? ?/sec    1.00     15.9±0.10ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.00      3.0±0.03ms        ? ?/sec    1.00      3.0±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.01     72.7±0.64ms        ? ?/sec    1.00     72.0±0.51ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.01     81.6±0.66ms        ? ?/sec    1.00     81.0±0.52ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.02    100.7±0.77ms        ? ?/sec    1.00     98.6±0.53ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.07    244.4±2.29ms        ? ?/sec    1.00    229.0±0.43ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.00     19.1±0.11ms        ? ?/sec    1.00     19.1±0.14ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.02     58.2±0.72ms        ? ?/sec    1.00     57.1±0.45ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.00     58.3±0.71ms        ? ?/sec    1.00     58.2±0.60ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.01     18.4±0.11ms        ? ?/sec    1.00     18.3±0.13ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.01     15.0±0.26ms        ? ?/sec    1.00     14.9±0.18ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.01      5.4±0.03ms        ? ?/sec    1.00      5.4±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.02     13.2±0.25ms        ? ?/sec    1.00     13.0±0.18ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.01     23.7±0.37ms        ? ?/sec    1.00     23.5±0.26ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.01      5.6±0.05ms        ? ?/sec    1.00      5.5±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.01      4.9±0.03ms        ? ?/sec    1.00      4.8±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.01      3.4±0.02ms        ? ?/sec    1.00      3.4±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.00    890.2±1.34µs        ? ?/sec    1.00    890.4±1.23µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.00      5.1±0.01ms        ? ?/sec    1.00      5.1±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.00      6.0±0.02ms        ? ?/sec    1.00      6.0±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.00     21.7±0.05ms        ? ?/sec    1.00     21.8±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.17     28.7±0.11ms        ? ?/sec    1.00     24.6±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.00     23.1±0.07ms        ? ?/sec    1.01     23.2±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.00      2.7±0.02ms        ? ?/sec    1.01      2.7±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.01    125.7±0.17ms        ? ?/sec    1.00    124.8±0.36ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.01    100.0±0.13ms        ? ?/sec    1.00     98.8±0.20ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.01    147.9±0.27ms        ? ?/sec    1.00    146.7±0.36ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.00    307.0±8.33ms        ? ?/sec    1.00   308.4±10.12ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.00     27.0±0.07ms        ? ?/sec    1.00     26.9±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.00    110.1±0.12ms        ? ?/sec    1.00    109.7±0.16ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.00    108.0±0.11ms        ? ?/sec    1.00    108.0±0.11ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.00     18.7±0.06ms        ? ?/sec    1.00     18.6±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.01     22.2±0.10ms        ? ?/sec    1.00     22.0±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.00      6.8±0.05ms        ? ?/sec    1.00      6.8±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.00     11.5±0.04ms        ? ?/sec    1.00     11.4±0.04ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.00     20.6±0.07ms        ? ?/sec    1.01     20.8±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.01      5.2±0.01ms        ? ?/sec    1.00      5.2±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.00      5.6±0.03ms        ? ?/sec    1.00      5.6±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.00      4.3±0.01ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 795.2s
Peak memory 288.4 MiB
Avg memory 135.8 MiB
CPU user 704.5s
CPU sys 85.5s
Peak spill 0 B

branch

Metric Value
Wall time 790.2s
Peak memory 286.1 MiB
Avg memory 129.6 MiB
CPU user 697.6s
CPU sys 90.2s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader_clickbench

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4788477163-653-wzxgs 6.12.85+ #1 SMP Mon May 11 08:17:35 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 export-mask (3121682) to 6ba533d (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.02   1097.5±6.11µs        ? ?/sec    1.00   1079.9±4.52µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.00      6.6±0.06ms        ? ?/sec    1.00      6.5±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.00      7.5±0.04ms        ? ?/sec    1.01      7.6±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.01     14.5±0.08ms        ? ?/sec    1.00     14.4±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.01     17.2±0.13ms        ? ?/sec    1.00     17.1±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.01     16.0±0.10ms        ? ?/sec    1.00     15.9±0.08ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.02      3.1±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.10     91.9±0.92ms        ? ?/sec    1.00     83.7±0.42ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.00    102.8±4.58ms        ? ?/sec    1.04    106.7±0.55ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.00    124.2±0.83ms        ? ?/sec    1.11    138.2±1.22ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.02    255.1±4.05ms        ? ?/sec    1.00    250.7±1.24ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.01     19.6±0.15ms        ? ?/sec    1.00     19.5±0.17ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.00     59.0±0.44ms        ? ?/sec    1.00     58.8±0.43ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.01     59.0±0.76ms        ? ?/sec    1.00     58.8±0.42ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.00     18.6±0.10ms        ? ?/sec    1.00     18.6±0.12ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.00     15.6±0.28ms        ? ?/sec    1.00     15.7±0.32ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.00      5.4±0.02ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.01     13.9±0.34ms        ? ?/sec    1.00     13.8±0.26ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.02     25.1±0.46ms        ? ?/sec    1.00     24.6±0.38ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.00      5.7±0.05ms        ? ?/sec    1.00      5.7±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.01      5.0±0.06ms        ? ?/sec    1.00      5.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.01      3.5±0.02ms        ? ?/sec    1.00      3.5±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.01   1064.1±3.48µs        ? ?/sec    1.00   1049.2±4.70µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      6.4±0.03ms        ? ?/sec    1.00      6.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.00      7.4±0.03ms        ? ?/sec    1.00      7.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.00     14.4±0.08ms        ? ?/sec    1.00     14.4±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.00     17.0±0.13ms        ? ?/sec    1.00     17.1±0.15ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.01     16.0±0.07ms        ? ?/sec    1.00     15.8±0.10ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.01      3.0±0.03ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.00     72.9±0.66ms        ? ?/sec    1.00     72.6±0.59ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.00     81.7±0.74ms        ? ?/sec    1.00     81.5±0.60ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.02    100.7±0.79ms        ? ?/sec    1.00     98.8±0.52ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.07    242.5±0.51ms        ? ?/sec    1.00    226.4±3.64ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.01     19.3±0.10ms        ? ?/sec    1.00     19.2±0.17ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.00     57.8±0.70ms        ? ?/sec    1.00     57.9±0.64ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.01     58.5±0.76ms        ? ?/sec    1.00     58.1±0.55ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.00     18.4±0.11ms        ? ?/sec    1.00     18.4±0.16ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.00     15.1±0.27ms        ? ?/sec    1.00     15.1±0.28ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.01      5.4±0.01ms        ? ?/sec    1.00      5.3±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.00     13.2±0.21ms        ? ?/sec    1.00     13.2±0.23ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.01     23.8±0.52ms        ? ?/sec    1.00     23.5±0.38ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.00      5.5±0.05ms        ? ?/sec    1.00      5.5±0.06ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.00      4.8±0.02ms        ? ?/sec    1.00      4.8±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.00      3.4±0.01ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.00    891.2±1.41µs        ? ?/sec    1.00    888.6±1.61µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.00      5.1±0.01ms        ? ?/sec    1.00      5.1±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.00      6.0±0.02ms        ? ?/sec    1.00      6.0±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.00     21.7±0.05ms        ? ?/sec    1.00     21.8±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.16     28.5±0.12ms        ? ?/sec    1.00     24.6±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.00     23.1±0.07ms        ? ?/sec    1.00     23.2±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.00      2.7±0.02ms        ? ?/sec    1.01      2.7±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.01    125.2±0.17ms        ? ?/sec    1.00    124.6±0.23ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.01     99.7±0.14ms        ? ?/sec    1.00     99.2±0.15ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.02    147.4±0.34ms        ? ?/sec    1.00    144.7±0.28ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.00    304.4±8.00ms        ? ?/sec    1.01    307.1±9.65ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.00     26.9±0.09ms        ? ?/sec    1.01     27.1±0.13ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.00    109.8±0.11ms        ? ?/sec    1.01    110.7±0.13ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.00    107.7±0.13ms        ? ?/sec    1.00    107.5±0.16ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.00     18.7±0.06ms        ? ?/sec    1.00     18.7±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.00     22.1±0.12ms        ? ?/sec    1.01     22.2±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.00      6.7±0.01ms        ? ?/sec    1.00      6.8±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.00     11.4±0.04ms        ? ?/sec    1.01     11.5±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.00     20.7±0.06ms        ? ?/sec    1.01     20.8±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.00      5.2±0.02ms        ? ?/sec    1.00      5.2±0.01ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.00      5.6±0.02ms        ? ?/sec    1.00      5.6±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.00      4.2±0.02ms        ? ?/sec    1.01      4.3±0.02ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 795.2s
Peak memory 286.4 MiB
Avg memory 134.0 MiB
CPU user 702.5s
CPU sys 85.3s
Peak spill 0 B

branch

Metric Value
Wall time 790.2s
Peak memory 286.1 MiB
Avg memory 130.9 MiB
CPU user 699.8s
CPU sys 87.9s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader_clickbench

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4789243487-654-fw46z 6.12.68+ #1 SMP Sat May 2 07:49:07 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 export-mask (ee2df31) to 7fb7751 (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.01   1097.8±6.48µs        ? ?/sec    1.00   1086.7±7.43µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.02      7.3±0.11ms        ? ?/sec    1.00      7.1±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.00      8.2±0.10ms        ? ?/sec    1.00      8.2±0.09ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.01     15.2±0.08ms        ? ?/sec    1.00     15.1±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.03     18.3±0.21ms        ? ?/sec    1.00     17.8±0.12ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.03     16.9±0.14ms        ? ?/sec    1.00     16.4±0.08ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.01      3.3±0.05ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.00     75.6±0.49ms        ? ?/sec    1.11     84.1±0.37ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.00     83.6±0.78ms        ? ?/sec    1.30    108.5±0.51ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.00    117.9±2.19ms        ? ?/sec    1.20    141.8±1.65ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.05    265.7±2.72ms        ? ?/sec    1.00    254.0±2.21ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.04     21.0±0.26ms        ? ?/sec    1.00     20.1±0.14ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.04     60.6±0.99ms        ? ?/sec    1.00     58.5±0.61ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.06     61.7±0.64ms        ? ?/sec    1.00     58.4±0.30ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.01     19.2±0.22ms        ? ?/sec    1.00     18.9±0.08ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.04     16.4±0.41ms        ? ?/sec    1.00     15.7±0.21ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.01      5.7±0.04ms        ? ?/sec    1.00      5.7±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.06     14.6±0.34ms        ? ?/sec    1.00     13.8±0.17ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.06     26.0±0.67ms        ? ?/sec    1.00     24.5±0.25ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.02      6.1±0.08ms        ? ?/sec    1.00      6.0±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.01      5.2±0.05ms        ? ?/sec    1.00      5.2±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.00      3.6±0.03ms        ? ?/sec    1.00      3.6±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.01   1070.7±5.67µs        ? ?/sec    1.00   1065.3±5.27µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      7.0±0.09ms        ? ?/sec    1.01      7.1±0.10ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.00      8.1±0.07ms        ? ?/sec    1.01      8.2±0.14ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.01     15.2±0.13ms        ? ?/sec    1.00     15.1±0.16ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.00     17.9±0.17ms        ? ?/sec    1.00     17.9±0.19ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.01     16.8±0.15ms        ? ?/sec    1.00     16.7±0.17ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.00      3.1±0.03ms        ? ?/sec    1.01      3.2±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.01     74.2±0.90ms        ? ?/sec    1.00     73.2±0.62ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.02     83.0±0.80ms        ? ?/sec    1.00     81.6±0.65ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.03    105.1±3.83ms        ? ?/sec    1.00    101.6±0.77ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.03    252.9±1.98ms        ? ?/sec    1.00    246.2±5.50ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.00     20.3±0.20ms        ? ?/sec    1.00     20.3±0.24ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.02     59.3±0.90ms        ? ?/sec    1.00     58.2±0.64ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.01     59.9±0.94ms        ? ?/sec    1.00     59.3±0.43ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.00     18.8±0.15ms        ? ?/sec    1.00     18.7±0.12ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.00     15.6±0.30ms        ? ?/sec    1.03     16.1±0.22ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.00      5.6±0.04ms        ? ?/sec    1.02      5.7±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.01     13.8±0.27ms        ? ?/sec    1.00     13.6±0.10ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.02     24.9±0.74ms        ? ?/sec    1.00     24.4±0.26ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.01      5.9±0.06ms        ? ?/sec    1.00      5.8±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.01      5.1±0.04ms        ? ?/sec    1.00      5.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.00      3.5±0.02ms        ? ?/sec    1.00      3.5±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.01   902.6±10.22µs        ? ?/sec    1.00    894.7±2.58µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.01      5.3±0.02ms        ? ?/sec    1.00      5.2±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.01      6.3±0.02ms        ? ?/sec    1.00      6.2±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.02     22.6±0.13ms        ? ?/sec    1.00     22.1±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.22     30.5±0.27ms        ? ?/sec    1.00     25.0±0.12ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.02     24.0±0.13ms        ? ?/sec    1.00     23.5±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.01      2.9±0.04ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.06    130.3±1.37ms        ? ?/sec    1.00    123.1±0.48ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.05    102.3±0.52ms        ? ?/sec    1.00     97.7±0.24ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.04    153.3±1.19ms        ? ?/sec    1.00    147.2±0.51ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.00    304.3±4.98ms        ? ?/sec    1.01    307.4±9.26ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.02     28.1±0.17ms        ? ?/sec    1.00     27.5±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.04    112.8±0.37ms        ? ?/sec    1.00    108.3±0.31ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.05    110.7±0.37ms        ? ?/sec    1.00    105.3±0.26ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.02     19.4±0.07ms        ? ?/sec    1.00     18.9±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.02     23.0±0.06ms        ? ?/sec    1.00     22.5±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.02      7.1±0.02ms        ? ?/sec    1.00      6.9±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.02     12.0±0.05ms        ? ?/sec    1.00     11.7±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.04     21.9±0.14ms        ? ?/sec    1.00     21.0±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.04      5.6±0.04ms        ? ?/sec    1.00      5.3±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.02      5.8±0.03ms        ? ?/sec    1.00      5.7±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.01      4.4±0.02ms        ? ?/sec    1.00      4.4±0.02ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 800.2s
Peak memory 286.3 MiB
Avg memory 137.7 MiB
CPU user 707.9s
CPU sys 88.0s
Peak spill 0 B

branch

Metric Value
Wall time 795.2s
Peak memory 286.2 MiB
Avg memory 153.8 MiB
CPU user 696.7s
CPU sys 92.2s
Peak spill 0 B

File an issue against this benchmark runner

@haohuaijin

haohuaijin commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

weird, in my local(M2 Max), i can't reproduce the result for arrow_reader_clickbench benchmark
main branch is in 7fb7751

git checkout export-mask
cargo bench --bench arrow_reader_clickbench --features="arrow,async,object_store,experimental,test_common" -- --save-baseline 10141

git checkout main
cargo bench --bench arrow_reader_clickbench --features="arrow,async,object_store,experimental,test_common" -- --save-baseline main

critcmp main 10141
image

this is the result from another machine(M4)
image

@haohuaijin

haohuaijin commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

I tried one more change in #10209: inline the selector-backed bodies of scan_ranges and expand_to_batch_boundaries directly into the RowSelection methods, so the selector path keeps the same code shape as main.

I ran arrow_reader_clickbench three times on that branch. The results are not stable across runs:

case Run 1 Run 2 Run 3
async/Q20 +26% −14% −17%
async/Q21 +27% −20% −24%
async/Q22 +16% −20% −8%
sync/Q13 +1% +17% +17%
async_object_store/Q23 −2% −11% −4%

Same commit, but results swing 30–46 percentage points between runs. The sync/Q13 regression only shows up in 2 of 3 runs, and the big async/Q20/Q21/Q22 improvements only show up in 2 of 3 runs.

Update: Today I ran more benchmarks on #10214 with the same commit id in this branch. The results are still not stable, but overall they show this branch may have a 1–3% regression in some queries, possibly related to this PR adding a match arm and extracting some function bodies into new functions. will check later.

@haohuaijin

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader_clickbench

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4795054381-675-lmz82 6.12.85+ #1 SMP Mon May 11 08:17:35 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 export-mask (ee2df31) to 7fb7751 (merge-base) diff
BENCH_NAME=arrow_reader_clickbench
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader_clickbench
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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                                             export-mask                            main
-----                                             -----------                            ----
arrow_reader_clickbench/async/Q1                  1.01   1098.7±5.61µs        ? ?/sec    1.00   1085.6±4.15µs        ? ?/sec
arrow_reader_clickbench/async/Q10                 1.02      6.5±0.05ms        ? ?/sec    1.00      6.4±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q11                 1.01      7.6±0.12ms        ? ?/sec    1.00      7.5±0.07ms        ? ?/sec
arrow_reader_clickbench/async/Q12                 1.01     14.3±0.08ms        ? ?/sec    1.00     14.1±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q13                 1.01     17.0±0.14ms        ? ?/sec    1.00     16.7±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q14                 1.01     15.8±0.10ms        ? ?/sec    1.00     15.6±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q19                 1.01      3.1±0.04ms        ? ?/sec    1.00      3.0±0.02ms        ? ?/sec
arrow_reader_clickbench/async/Q20                 1.29     92.8±1.15ms        ? ?/sec    1.00     72.2±0.33ms        ? ?/sec
arrow_reader_clickbench/async/Q21                 1.10    107.7±1.24ms        ? ?/sec    1.00     98.1±7.30ms        ? ?/sec
arrow_reader_clickbench/async/Q22                 1.11    137.2±8.76ms        ? ?/sec    1.00    123.5±0.66ms        ? ?/sec
arrow_reader_clickbench/async/Q23                 1.03    254.6±2.18ms        ? ?/sec    1.00    248.0±1.25ms        ? ?/sec
arrow_reader_clickbench/async/Q24                 1.02     19.4±0.17ms        ? ?/sec    1.00     18.9±0.10ms        ? ?/sec
arrow_reader_clickbench/async/Q27                 1.02     58.6±0.56ms        ? ?/sec    1.00     57.4±0.26ms        ? ?/sec
arrow_reader_clickbench/async/Q28                 1.03     59.1±0.52ms        ? ?/sec    1.00     57.4±0.34ms        ? ?/sec
arrow_reader_clickbench/async/Q30                 1.02     18.5±0.10ms        ? ?/sec    1.00     18.2±0.05ms        ? ?/sec
arrow_reader_clickbench/async/Q36                 1.00     15.3±0.24ms        ? ?/sec    1.01     15.4±0.30ms        ? ?/sec
arrow_reader_clickbench/async/Q37                 1.00      5.4±0.04ms        ? ?/sec    1.01      5.5±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q38                 1.01     13.6±0.27ms        ? ?/sec    1.00     13.4±0.26ms        ? ?/sec
arrow_reader_clickbench/async/Q39                 1.01     25.1±0.49ms        ? ?/sec    1.00     24.9±0.44ms        ? ?/sec
arrow_reader_clickbench/async/Q40                 1.02      5.8±0.06ms        ? ?/sec    1.00      5.6±0.04ms        ? ?/sec
arrow_reader_clickbench/async/Q41                 1.01      5.0±0.03ms        ? ?/sec    1.00      5.0±0.03ms        ? ?/sec
arrow_reader_clickbench/async/Q42                 1.00      3.5±0.02ms        ? ?/sec    1.00      3.5±0.01ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q1     1.00   1068.1±6.19µs        ? ?/sec    1.01   1078.6±5.12µs        ? ?/sec
arrow_reader_clickbench/async_object_store/Q10    1.00      6.3±0.05ms        ? ?/sec    1.00      6.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q11    1.00      7.3±0.04ms        ? ?/sec    1.00      7.3±0.03ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q12    1.01     14.3±0.10ms        ? ?/sec    1.00     14.1±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q13    1.01     16.8±0.14ms        ? ?/sec    1.00     16.6±0.11ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q14    1.00     15.6±0.07ms        ? ?/sec    1.00     15.6±0.07ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q19    1.02      3.0±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q20    1.01     72.1±0.72ms        ? ?/sec    1.00     71.6±0.47ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q21    1.01     81.2±0.72ms        ? ?/sec    1.00     80.1±0.42ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q22    1.04    100.4±1.84ms        ? ?/sec    1.00     96.8±0.44ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q23    1.03   243.4±19.11ms        ? ?/sec    1.00    236.4±0.44ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q24    1.01     19.0±0.13ms        ? ?/sec    1.00     18.8±0.09ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q27    1.02     58.0±0.65ms        ? ?/sec    1.00     57.0±0.37ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q28    1.02     57.6±0.72ms        ? ?/sec    1.00     56.5±0.40ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q30    1.02     18.3±0.45ms        ? ?/sec    1.00     17.9±0.08ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q36    1.02     15.0±0.38ms        ? ?/sec    1.00     14.6±0.24ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q37    1.00      5.4±0.02ms        ? ?/sec    1.00      5.4±0.04ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q38    1.03     13.1±0.25ms        ? ?/sec    1.00     12.8±0.19ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q39    1.04     24.3±0.79ms        ? ?/sec    1.00     23.4±0.46ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q40    1.01      5.5±0.04ms        ? ?/sec    1.00      5.5±0.06ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q41    1.00      4.8±0.03ms        ? ?/sec    1.00      4.8±0.05ms        ? ?/sec
arrow_reader_clickbench/async_object_store/Q42    1.00      3.4±0.02ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q1                   1.00    888.8±1.49µs        ? ?/sec    1.01    897.7±4.51µs        ? ?/sec
arrow_reader_clickbench/sync/Q10                  1.00      5.1±0.01ms        ? ?/sec    1.00      5.1±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q11                  1.00      6.0±0.02ms        ? ?/sec    1.01      6.1±0.08ms        ? ?/sec
arrow_reader_clickbench/sync/Q12                  1.00     21.5±0.06ms        ? ?/sec    1.00     21.6±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q13                  1.17     28.3±0.18ms        ? ?/sec    1.00     24.2±0.06ms        ? ?/sec
arrow_reader_clickbench/sync/Q14                  1.01     23.0±0.12ms        ? ?/sec    1.00     22.7±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q19                  1.03      2.7±0.03ms        ? ?/sec    1.00      2.6±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q20                  1.03    126.6±0.27ms        ? ?/sec    1.00    122.3±0.28ms        ? ?/sec
arrow_reader_clickbench/sync/Q21                  1.04    100.5±0.54ms        ? ?/sec    1.00     96.8±0.17ms        ? ?/sec
arrow_reader_clickbench/sync/Q22                  1.05    148.9±0.41ms        ? ?/sec    1.00    142.0±0.29ms        ? ?/sec
arrow_reader_clickbench/sync/Q23                  1.03    308.9±8.43ms        ? ?/sec    1.00   298.8±10.61ms        ? ?/sec
arrow_reader_clickbench/sync/Q24                  1.03     26.8±0.13ms        ? ?/sec    1.00     26.1±0.10ms        ? ?/sec
arrow_reader_clickbench/sync/Q27                  1.03    110.4±0.34ms        ? ?/sec    1.00    107.2±0.21ms        ? ?/sec
arrow_reader_clickbench/sync/Q28                  1.04    108.4±0.27ms        ? ?/sec    1.00    104.3±0.25ms        ? ?/sec
arrow_reader_clickbench/sync/Q30                  1.03     18.6±0.10ms        ? ?/sec    1.00     18.2±0.07ms        ? ?/sec
arrow_reader_clickbench/sync/Q36                  1.01     22.0±0.09ms        ? ?/sec    1.00     21.7±0.09ms        ? ?/sec
arrow_reader_clickbench/sync/Q37                  1.00      6.8±0.01ms        ? ?/sec    1.00      6.7±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q38                  1.01     11.3±0.05ms        ? ?/sec    1.00     11.2±0.05ms        ? ?/sec
arrow_reader_clickbench/sync/Q39                  1.01     20.6±0.12ms        ? ?/sec    1.00     20.4±0.16ms        ? ?/sec
arrow_reader_clickbench/sync/Q40                  1.01      5.2±0.02ms        ? ?/sec    1.00      5.1±0.02ms        ? ?/sec
arrow_reader_clickbench/sync/Q41                  1.00      5.6±0.02ms        ? ?/sec    1.00      5.6±0.03ms        ? ?/sec
arrow_reader_clickbench/sync/Q42                  1.00      4.2±0.02ms        ? ?/sec    1.00      4.2±0.03ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 785.2s
Peak memory 286.2 MiB
Avg memory 154.2 MiB
CPU user 709.4s
CPU sys 73.5s
Peak spill 0 B

branch

Metric Value
Wall time 790.2s
Peak memory 286.3 MiB
Avg memory 132.2 MiB
CPU user 696.4s
CPU sys 89.4s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Will try and review this one more carefully today

@haohuaijin

haohuaijin commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

FYI, today I ran arrow_reader_clickbench 3 times in #10217, which is a no-op PR (one-char README change), so it's basically main vs main. The run-to-run noise is still large:

  • sync/Q13 shows the branch ~14–24% "slower" in all 3 runs.
  • Run 2 was much noisier: async/Q21 was +34%, while the other runs had it within ±2%.

@sdf-jkl

sdf-jkl commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

I had similar issues with arrow_reader_clickbench in #9659

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

Labels

api-change Changes to the arrow API parquet Changes to the parquet crate performance

Projects

None yet

4 participants