Skip to content

feat(parquet): selective null padding for list child readers #9848

Merged
alamb merged 3 commits into
apache:mainfrom
HippoBaro:unpadded_child_mode
Jul 2, 2026
Merged

feat(parquet): selective null padding for list child readers #9848
alamb merged 3 commits into
apache:mainfrom
HippoBaro:unpadded_child_mode

Conversation

@HippoBaro

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

Parquet list decoding currently materializes padding for null or empty parent lists and then copies the child array to filter that padding back out. This is expensive for nested list columns, especially sparse lists and fixed-width children, where memory can scale with decoded levels instead of actual emitted child values.

What changes are included in this PR?

This PR makes list child readers emit compact child arrays directly by pushing selective null padding into the leaf RecordReader. It also builds definition-level validity bitmaps word-at-a-time, sizes child buffers after levels are decoded, and adds list runtime and peak-memory benchmarks across element types and null densities.

Are these changes tested?

Extensive test coverage for the new logic through existing list reader tests, which now exercise the production PrimitiveArrayReader path with in-memory Parquet pages (see #9846), and BooleanBufferBuilder::append_word has targeted unit coverage.

Benchmarks results:

  Name                                           Before       After        Delta
  ListArray/StringList/no NULLs                 7.3395 ms    5.8001 ms    (-21.0%)
  ListArray/StringList/half NULLs               4.1255 ms    3.4274 ms    (-16.9%)
  ListArray/Int32List/90pct NULLs               1.0366 ms    975.63 us     (-5.9%)
  ListArray/Fixed32List/no NULLs                4.9298 ms    3.3137 ms    (-32.8%)
  ListArray/Fixed32List/half NULLs              2.8998 ms    2.7258 ms     (-6.0%)
  ListArray/Fixed32List/90pct NULLs             1.0556 ms    995.82 us     (-5.7%)
  ListArray/Fixed32List/99pct NULLs             508.65 us    467.16 us     (-8.2%)

  Name                                           Before       After        Delta
  ListArray_peak_memory/Int32List/no NULLs      836.51 KiB   574.79 KiB   (-31.3%)
  ListArray_peak_memory/Int32List/half NULLs    482.01 KiB   336.29 KiB   (-30.2%)
  ListArray_peak_memory/Int32List/90pct NULLs   271.95 KiB   175.32 KiB   (-35.5%)
  ListArray_peak_memory/Int32List/99pct NULLs   217.96 KiB   120.04 KiB   (-44.9%)
  ListArray_peak_memory/DoubleList/no NULLs     1.2399 MiB   715.31 KiB   (-43.7%)
  ListArray_peak_memory/DoubleList/half NULLs   753.66 KiB   400.39 KiB   (-46.9%)
  ListArray_peak_memory/DoubleList/90pct NULLs  380.62 KiB   190.89 KiB   (-49.8%)
  ListArray_peak_memory/DoubleList/99pct NULLs  315.21 KiB   121.61 KiB   (-61.4%)
  ListArray_peak_memory/Fixed32List/no NULLs    3.8031 MiB   1.5760 MiB   (-58.6%)
  ListArray_peak_memory/Fixed32List/half NULLs  2.1710 MiB   849.94 KiB   (-61.8%)
  ListArray_peak_memory/Fixed32List/90pct NULLs 1.0017 MiB   277.35 KiB   (-73.0%)
  ListArray_peak_memory/Fixed32List/99pct NULLs 898.69 KiB   130.93 KiB   (-85.4%)
  ListArray_peak_memory/StringList/no NULLs     3.7925 MiB   2.4715 MiB   (-34.8%)
  ListArray_peak_memory/StringList/half NULLs   1.2541 MiB   772.94 KiB   (-39.8%)
  ListArray_peak_memory/StringList/90pct NULLs  296.63 KiB   188.96 KiB   (-36.3%)
  ListArray_peak_memory/StringList/99pct NULLs  226.75 KiB   120.37 KiB   (-46.9%)

  Name                                               Before      After       Delta
  ListArray_allocated_bytes/Int32List/no NULLs      10.458 MiB  6.8018 MiB  (-35.0%)
  ListArray_allocated_bytes/Int32List/half NULLs    5.9797 MiB  4.0127 MiB  (-32.9%)
  ListArray_allocated_bytes/Int32List/90pct NULLs   2.9985 MiB  1.8210 MiB  (-39.3%)
  ListArray_allocated_bytes/Int32List/99pct NULLs   2.5579 MiB  1.3733 MiB  (-46.3%)
  ListArray_allocated_bytes/DoubleList/no NULLs     16.083 MiB  8.6546 MiB  (-46.2%)
  ListArray_allocated_bytes/DoubleList/half NULLs   8.9134 MiB  4.8497 MiB  (-45.6%)
  ListArray_allocated_bytes/DoubleList/90pct NULLs  4.3656 MiB  2.0179 MiB  (-53.8%)
  ListArray_allocated_bytes/DoubleList/99pct NULLs  3.7482 MiB  1.3903 MiB  (-62.9%)
  ListArray_allocated_bytes/Fixed32List/no NULLs    49.441 MiB  19.505 MiB  (-60.5%)
  ListArray_allocated_bytes/Fixed32List/half NULLs  26.846 MiB  10.459 MiB  (-61.0%)
  ListArray_allocated_bytes/Fixed32List/90pct NULLs 12.483 MiB  3.1127 MiB  (-75.1%)
  ListArray_allocated_bytes/Fixed32List/99pct NULLs 10.895 MiB  1.4980 MiB  (-86.3%)
  ListArray_allocated_bytes/StringList/no NULLs     47.519 MiB  21.743 MiB  (-54.2%)
  ListArray_allocated_bytes/StringList/half NULLs   19.097 MiB  10.478 MiB  (-45.1%)
  ListArray_allocated_bytes/StringList/90pct NULLs  3.4203 MiB  2.1165 MiB  (-38.1%)
  ListArray_allocated_bytes/StringList/99pct NULLs  2.6424 MiB  1.3777 MiB  (-47.9%)

Are there any user-facing changes?

None.

@github-actions github-actions Bot added parquet Changes to the parquet crate arrow Changes to the arrow crate labels Apr 29, 2026
@HippoBaro HippoBaro force-pushed the unpadded_child_mode branch 2 times, most recently from 54b90c7 to 0879144 Compare April 29, 2026 02:52
@HippoBaro

Copy link
Copy Markdown
Contributor Author

Although the code is ready for review, this is a draft PR because it depends on #9847 and #9848. The contents of both dependencies are included here as well so reviewers can better understand the direction of these changes, which may be hard to appreciate in isolation. I'll rebase and undraft once those have been merged 🙇

Feedback is appreciated!

alamb pushed a commit that referenced this pull request May 5, 2026
…er` in tests (#9847)

# Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax.
-->

- Contributes to #9731
- Dependency of #9848

# Rationale for this change

<!--
Why are you proposing this change? If this is already explained clearly
in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand
your changes and offer better suggestions for fixes.
-->

`InMemoryArrayReader` couples a column's in-memory representation (an
Arrow array) with its storage representation (def/rep levels) and
assumes a 1:1 mapping between array elements and levels. This holds when
list readers consume fully-padded child arrays — one element per level,
nulls included.

Upcoming work (see #9848) pushes null filtering from `ListArrayReader`
down into the child reader at the storage level, breaking that 1:1
assumption: the child returns fewer array elements than levels, and the
mapping between them depends on the filtering logic itself. Keeping the
mock would mean reimplementing that logic: testing filtered output
against a second, hand-rolled filter.

# What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here but it
is sometimes worth providing a summary of the individual changes in this
PR.
-->

Replace `InMemoryArrayReader` with real `PrimitiveArrayReader` instances
backed by in-memory Parquet pages. Tests now accept raw non-null values
and levels (matching what Parquet actually stores) and exercise the
production `RecordReader` path.

# Are these changes tested?

<!--
We typically require tests for all PRs in order to:
1. Prevent the code from being accidentally broken by subsequent changes
2. Serve as another way to document the expected behavior of the code

If tests are not included in your PR, please explain why (for example,
are they covered by existing tests)?
-->

This is a net positive in test coverage. The existing tests now exercise
real readers instead of in-memory and already-dense representations.

# Are there any user-facing changes?

<!--
If there are user-facing changes then we may require documentation to be
updated before approving the PR.

If there are any breaking changes to public APIs, please call them out.
-->

None.

Signed-off-by: Hippolyte Barraud <hippolyte.barraud@datadoghq.com>
alamb added a commit that referenced this pull request May 7, 2026
#9846)

# Which issue does this PR close?

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax.
-->

- Contributes to #9731
- Dependency of #9848

# Rationale for this change

See #9848

Existing benchmarks have some gaps in the types of columns they
exercise. Additionally, I would like to improve the memory efficiency of
the read/decode path in terms of RSS requirements, especially for sparse
inputs and we currently do not have any infrastructure to measure that.

# What changes are included in this PR?

Extend the existing `arrow_reader` runtime benchmarks with `Int32` and
`FixedBinary32` list columns alongside the existing `StringList`, with
parameterized null density (0%, 50%, 90%, 99%). The prior benchmarks
only covered string lists, which didn't surface costs specific to
fixed-width and primitive element types.

Add a new `arrow_reader_peak_memory` benchmark that measures peak heap
usage during `ListArrayReader::consume_batch` using a thread-local
tracking allocator. It captures how RSS-efficient we are when
materializing a column into its final Arrow in-memory representation.

# Are these changes tested?

All tests passing.

# Are there any user-facing changes?

None.

Signed-off-by: Hippolyte Barraud <hippolyte.barraud@datadoghq.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
@jhorstmann

Copy link
Copy Markdown
Contributor

I plan to review this once I find time. I had my own ideas about optimizing list decoding, and the core algorithm using compress looks very similar.

@alamb

alamb commented May 8, 2026

Copy link
Copy Markdown
Contributor

Maybe we can rebase this PR now to make its review easier

@HippoBaro HippoBaro force-pushed the unpadded_child_mode branch from 0879144 to 809f71f Compare May 10, 2026 07:03
@HippoBaro HippoBaro marked this pull request as ready for review May 10, 2026 07:28
@HippoBaro

Copy link
Copy Markdown
Contributor Author

@jhorstmann @alamb Thank you both for offering to review! Now that both the test and benchmark PRs are merged, I have rebased the branch. It’s ready for your 👀.

The branch now has three commits. The first implements the main change by pushing selective null padding down into the leaf decoder path, avoiding dense child materialization where possible. The next two are follow-ups that optimize supporting paths that are now performance-critical: definition-level bitmap construction and child buffer sizing.

@alamb

This comment has been minimized.

@adriangbot

This comment has been minimized.

@HippoBaro

Copy link
Copy Markdown
Contributor Author

@alamb The benchmark runner never posted its results. Maybe let's give it another try?

@alamb

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@HippoBaro

HippoBaro commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

Sorry @alamb, arrow_reader_peak_memory is also a benchmark target we should run on this one, since most of the gains are concentrated around lower RSS when decoding.

For CPU benchmarks, the results are roughly as expected (arrow_array_reader/ListArray/StringList/... look nice!), except for arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string, which shows a worrying 20% regression. I’ll see if I can measure that locally as well.

@alamb

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@alamb

alamb commented May 22, 2026

Copy link
Copy Markdown
Contributor

wow -- checking this one out

@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 @HippoBaro -- thhe basic idea of this PR looks really nice to me

Ileft some high level comments -- let me know what you think

Comment thread parquet/src/arrow/array_reader/builder.rs
Comment thread parquet/src/arrow/array_reader/builder.rs Outdated
Comment thread parquet/src/arrow/array_reader/builder.rs Outdated
Comment thread parquet/src/arrow/array_reader/byte_view_array.rs
Comment thread parquet/src/arrow/array_reader/list_array.rs Outdated
Comment thread parquet/src/arrow/record_reader/definition_levels.rs Outdated
Comment thread parquet/src/util/bit_util.rs Outdated
@alamb

alamb commented May 27, 2026

Copy link
Copy Markdown
Contributor

Marking as draft as I think this PR is no longer waiting on feedback and I am trying to make it easier to find PRs in need of review. Please mark it as ready for review when it is ready for another look

@adriangbot

This comment has been minimized.

@alamb

alamb commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

run benchmark arrow_writer

env:
BENCH_FILTER: ListArray

@adriangbot

This comment has been minimized.

@alamb

This comment has been minimized.

@alamb

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@HippoBaro

Copy link
Copy Markdown
Contributor Author

@alamb I’m not sure why the benchmarks are failing there. Is there a way to see the full output?

@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.

I think this one looks ready to go from my perspective. Thank you so much @HippoBaro and @jhorstmann

I hav gone over it again, and had codex do the same. We found some additional test coverage that might help but I'll add that in a follow on PR.

Once I have confirmed with perfomance tests, I'll merge this one in

@alamb

alamb commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

@alamb I’m not sure why the benchmarks are failing there. Is there a way to see the full output?

I think it has to do with how I was trying to apply a filter. I'll run the full suite intsead

@alamb

This comment was marked as outdated.

@alamb

This comment has been minimized.

@alamb

alamb commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Actually the problem looks like I was running the writer tests (not the reader tests 🤦 )

@alamb

alamb commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

run benchmark arrow_reader

env:
   BENCH_FILTER: ListArray

@adriangbot

Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4860230393-785-xx7vl 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 unpadded_child_mode (6598016) to 9b190c9 (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-c4860228574-784-pb5b5 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 unpadded_child_mode (6598016) to 9b190c9 (merge-base) diff
BENCH_NAME=arrow_writer
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_writer
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-c4860243125-786-jw858 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 unpadded_child_mode (6598016) to 9b190c9 (merge-base) diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader
BENCH_FILTER=ListArray
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                                                   main                                   unpadded_child_mode
-----                                                   ----                                   -------------------
arrow_array_reader/ListArray/Fixed32List/90pct NULLs    1.13   1046.6±4.70µs        ? ?/sec    1.00    923.9±4.39µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/99pct NULLs    1.07    483.9±1.44µs        ? ?/sec    1.00   451.2±17.88µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/half NULLs     1.13      2.7±0.01ms        ? ?/sec    1.00      2.4±0.10ms        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/no NULLs       1.39      4.4±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/90pct NULLs      1.06    968.3±2.68µs        ? ?/sec    1.00    913.4±3.89µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/99pct NULLs      1.00    441.8±1.43µs        ? ?/sec    1.03   454.0±18.08µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/half NULLs       1.08      2.2±0.01ms        ? ?/sec    1.00      2.1±0.01ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/no NULLs         1.06      2.9±0.02ms        ? ?/sec    1.00      2.8±0.01ms        ? ?/sec
arrow_array_reader/ListArray/StringList/90pct NULLs     1.18   1142.6±3.88µs        ? ?/sec    1.00    972.4±4.29µs        ? ?/sec
arrow_array_reader/ListArray/StringList/99pct NULLs     1.00    460.6±1.17µs        ? ?/sec    1.00   458.9±18.09µs        ? ?/sec
arrow_array_reader/ListArray/StringList/half NULLs      1.25      4.0±0.01ms        ? ?/sec    1.00      3.2±0.11ms        ? ?/sec
arrow_array_reader/ListArray/StringList/no NULLs        1.40      7.2±0.06ms        ? ?/sec    1.00      5.2±0.18ms        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 130.0s
Peak memory 71.3 MiB
Avg memory 62.4 MiB
CPU user 125.7s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 135.0s
Peak memory 65.3 MiB
Avg memory 49.6 MiB
CPU user 131.2s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

I also have a small follow on PR with some additonal tests

@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                                              main                                   unpadded_child_mode
-----                                              ----                                   -------------------
bool/bloom_filter                                  1.03     13.2±0.07ms    18.9 MB/sec    1.00     12.9±0.04ms    19.4 MB/sec
bool/cdc                                           1.04     16.1±0.09ms    15.5 MB/sec    1.00     15.5±0.04ms    16.1 MB/sec
bool/default                                       1.03     11.1±0.07ms    22.5 MB/sec    1.00     10.8±0.04ms    23.1 MB/sec
bool/parquet_2                                     1.02     14.9±0.09ms    16.8 MB/sec    1.00     14.6±0.05ms    17.1 MB/sec
bool/zstd                                          1.02     11.6±0.07ms    21.6 MB/sec    1.00     11.4±0.05ms    22.0 MB/sec
bool/zstd_parquet_2                                1.02     15.3±0.08ms    16.4 MB/sec    1.00     15.0±0.06ms    16.7 MB/sec
bool_non_null/bloom_filter                         1.02      7.1±0.03ms    17.7 MB/sec    1.00      6.9±0.03ms    18.0 MB/sec
bool_non_null/cdc                                  1.02      6.8±0.02ms    18.3 MB/sec    1.00      6.7±0.03ms    18.6 MB/sec
bool_non_null/default                              1.03      4.3±0.03ms    28.9 MB/sec    1.00      4.2±0.02ms    29.9 MB/sec
bool_non_null/parquet_2                            1.01      9.1±0.04ms    13.8 MB/sec    1.00      9.0±0.03ms    14.0 MB/sec
bool_non_null/zstd                                 1.03      4.7±0.02ms    26.8 MB/sec    1.00      4.5±0.02ms    27.6 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.5±0.04ms    13.2 MB/sec    1.00      9.4±0.03ms    13.3 MB/sec
bool_ree/bloom_filter                              1.01     30.7±0.13ms     6.9 MB/sec    1.00     30.4±0.05ms     7.0 MB/sec
bool_ree/cdc                                       1.01     32.1±0.14ms     6.6 MB/sec    1.00     31.7±0.09ms     6.7 MB/sec
bool_ree/default                                   1.01     28.0±0.14ms     7.6 MB/sec    1.00     27.7±0.05ms     7.7 MB/sec
bool_ree/parquet_2                                 1.01     29.6±0.11ms     7.2 MB/sec    1.00     29.4±0.06ms     7.3 MB/sec
bool_ree/zstd                                      1.01     28.7±0.14ms     7.4 MB/sec    1.00     28.3±0.05ms     7.5 MB/sec
bool_ree/zstd_parquet_2                            1.01     29.9±0.13ms     7.1 MB/sec    1.00     29.6±0.07ms     7.2 MB/sec
fixed_size_binary_ree/bloom_filter                 1.00     68.9±0.29ms    14.6 MB/sec    1.01     69.8±0.18ms    14.4 MB/sec
fixed_size_binary_ree/cdc                          1.00     72.9±0.24ms    13.8 MB/sec    1.01     73.3±0.16ms    13.7 MB/sec
fixed_size_binary_ree/default                      1.00     62.1±0.29ms    16.2 MB/sec    1.01     63.0±0.13ms    16.0 MB/sec
fixed_size_binary_ree/parquet_2                    1.00     78.0±0.27ms    12.9 MB/sec    1.01     78.8±0.18ms    12.8 MB/sec
fixed_size_binary_ree/zstd                         1.00     67.3±0.25ms    15.0 MB/sec    1.01     68.2±0.19ms    14.8 MB/sec
fixed_size_binary_ree/zstd_parquet_2               1.00     78.8±0.31ms    12.8 MB/sec    1.01     79.7±0.31ms    12.6 MB/sec
float_with_nans/bloom_filter                       1.00     92.6±0.33ms   151.1 MB/sec    1.00     93.0±0.32ms   150.5 MB/sec
float_with_nans/cdc                                1.00     80.9±0.15ms   173.1 MB/sec    1.01     81.8±0.30ms   171.1 MB/sec
float_with_nans/default                            1.00     74.2±0.22ms   188.6 MB/sec    1.00     73.9±0.15ms   189.5 MB/sec
float_with_nans/parquet_2                          1.00     94.2±0.26ms   148.6 MB/sec    1.00     94.2±0.31ms   148.7 MB/sec
float_with_nans/zstd                               1.00    111.7±0.30ms   125.4 MB/sec    1.00    111.7±0.20ms   125.3 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.3±0.30ms   106.7 MB/sec    1.00    131.6±0.44ms   106.3 MB/sec
int32_ree/bloom_filter                             1.00     39.8±0.06ms    10.2 MB/sec    1.01     40.1±0.08ms    10.1 MB/sec
int32_ree/cdc                                      1.00     40.2±0.08ms    10.1 MB/sec    1.00     40.3±0.08ms    10.1 MB/sec
int32_ree/default                                  1.00     36.0±0.04ms    11.3 MB/sec    1.01     36.3±0.08ms    11.2 MB/sec
int32_ree/parquet_2                                1.00     36.0±0.04ms    11.3 MB/sec    1.01     36.3±0.04ms    11.2 MB/sec
int32_ree/zstd                                     1.00     36.7±0.04ms    11.1 MB/sec    1.01     36.9±0.12ms    11.0 MB/sec
int32_ree/zstd_parquet_2                           1.00     36.6±0.07ms    11.1 MB/sec    1.01     36.8±0.05ms    11.1 MB/sec
int32_ree_95pct_null/bloom_filter                  1.00     21.8±0.07ms    18.7 MB/sec    1.01     21.9±0.08ms    18.6 MB/sec
int32_ree_95pct_null/cdc                           1.00     24.2±0.05ms    16.8 MB/sec    1.00     24.3±0.03ms    16.7 MB/sec
int32_ree_95pct_null/default                       1.00     21.4±0.03ms    19.0 MB/sec    1.00     21.5±0.01ms    18.9 MB/sec
int32_ree_95pct_null/parquet_2                     1.00     21.4±0.03ms    19.0 MB/sec    1.00     21.5±0.04ms    18.9 MB/sec
int32_ree_95pct_null/zstd                          1.00     21.7±0.02ms    18.8 MB/sec    1.00     21.8±0.02ms    18.7 MB/sec
int32_ree_95pct_null/zstd_parquet_2                1.00     21.6±0.03ms    18.8 MB/sec    1.00     21.7±0.02ms    18.8 MB/sec
large_string_non_null/bloom_filter                 1.00     72.2±0.12ms     3.5 GB/sec    1.00     72.4±0.18ms     3.5 GB/sec
large_string_non_null/cdc                          1.00    244.7±0.95ms  1046.4 MB/sec    1.00    244.1±0.89ms  1048.9 MB/sec
large_string_non_null/default                      1.00     54.2±0.08ms     4.6 GB/sec    1.00     54.4±0.08ms     4.6 GB/sec
large_string_non_null/parquet_2                    1.00     54.2±0.08ms     4.6 GB/sec    1.00     54.5±0.09ms     4.6 GB/sec
large_string_non_null/zstd                         1.00     54.3±0.10ms     4.6 GB/sec    1.00     54.4±0.08ms     4.6 GB/sec
large_string_non_null/zstd_parquet_2               1.00     54.2±0.08ms     4.6 GB/sec    1.01     54.5±0.09ms     4.6 GB/sec
list_nested/bloom_filter                           1.01    159.1±0.24ms   181.4 MB/sec    1.00    157.4±0.25ms   183.3 MB/sec
list_nested/cdc                                    1.00    175.2±0.24ms   164.7 MB/sec    1.00    174.8±0.41ms   165.1 MB/sec
list_nested/default                                1.00    144.0±0.27ms   200.4 MB/sec    1.00    143.3±0.25ms   201.3 MB/sec
list_nested/parquet_2                              1.00    157.1±0.38ms   183.7 MB/sec    1.00    157.0±0.91ms   183.8 MB/sec
list_nested/zstd                                   1.00    153.1±0.32ms   188.5 MB/sec    1.00    152.5±0.31ms   189.3 MB/sec
list_nested/zstd_parquet_2                         1.00    170.5±0.22ms   169.3 MB/sec    1.00    170.1±0.57ms   169.7 MB/sec
list_primitive/bloom_filter                        1.01    306.7±2.08ms  1778.3 MB/sec    1.00    303.1±6.58ms  1799.5 MB/sec
list_primitive/cdc                                 1.00    329.0±5.49ms  1657.4 MB/sec    1.00    329.9±5.59ms  1653.2 MB/sec
list_primitive/default                             1.03    229.6±1.79ms     2.3 GB/sec    1.00    223.2±3.56ms     2.4 GB/sec
list_primitive/parquet_2                           1.06    251.9±2.39ms     2.1 GB/sec    1.00    236.7±0.85ms     2.3 GB/sec
list_primitive/zstd                                1.00    464.7±1.76ms  1173.6 MB/sec    1.00    464.2±1.00ms  1174.9 MB/sec
list_primitive/zstd_parquet_2                      1.00    459.9±0.41ms  1185.8 MB/sec    1.00    460.3±0.48ms  1184.7 MB/sec
list_primitive_non_null/bloom_filter               1.01   411.5±10.30ms  1322.6 MB/sec    1.00   407.0±10.76ms  1337.2 MB/sec
list_primitive_non_null/cdc                        1.00    416.1±8.10ms  1307.8 MB/sec    1.00    417.0±9.77ms  1305.2 MB/sec
list_primitive_non_null/default                    1.00    278.7±6.34ms  1952.7 MB/sec    1.00    277.6±8.64ms  1960.8 MB/sec
list_primitive_non_null/parquet_2                  1.07    321.2±2.56ms  1694.2 MB/sec    1.00    299.9±0.68ms  1814.9 MB/sec
list_primitive_non_null/zstd                       1.01   702.7±13.55ms   774.5 MB/sec    1.00   693.2±11.34ms   785.1 MB/sec
list_primitive_non_null/zstd_parquet_2             1.02   686.9±13.22ms   792.3 MB/sec    1.00    676.6±0.60ms   804.4 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.01     12.4±0.05ms     2.9 GB/sec    1.00     12.3±0.03ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.02     24.1±0.16ms  1549.6 MB/sec    1.00     23.7±0.05ms  1578.3 MB/sec
list_primitive_sparse_99pct_null/default           1.00     12.1±0.04ms     3.0 GB/sec    1.00     12.0±0.04ms     3.0 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.01     12.1±0.07ms     3.0 GB/sec    1.00     12.0±0.05ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.9±0.08ms     2.6 GB/sec    1.00     13.9±0.08ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.02     12.4±0.11ms     3.0 GB/sec    1.00     12.1±0.07ms     3.0 GB/sec
list_struct_with_list/bloom_filter                 1.02    316.3±0.88ms   144.1 MB/sec    1.00    311.6±0.69ms   146.3 MB/sec
list_struct_with_list/cdc                          1.00    351.2±0.61ms   129.8 MB/sec    1.00    351.4±0.68ms   129.8 MB/sec
list_struct_with_list/default                      1.00    286.7±1.12ms   159.0 MB/sec    1.00    286.0±0.64ms   159.4 MB/sec
list_struct_with_list/parquet_2                    1.00    303.8±0.76ms   150.1 MB/sec    1.00    303.3±0.65ms   150.3 MB/sec
list_struct_with_list/zstd                         1.00    308.2±0.81ms   148.0 MB/sec    1.00    307.7±0.63ms   148.2 MB/sec
list_struct_with_list/zstd_parquet_2               1.00    327.2±0.79ms   139.3 MB/sec    1.00    327.2±0.62ms   139.4 MB/sec
primitive/bloom_filter                             1.03    152.6±0.57ms   294.2 MB/sec    1.00    148.8±0.36ms   301.6 MB/sec
primitive/cdc                                      1.02    161.5±0.82ms   277.9 MB/sec    1.00    158.9±0.53ms   282.4 MB/sec
primitive/default                                  1.01    119.2±0.42ms   376.5 MB/sec    1.00    117.5±0.36ms   381.9 MB/sec
primitive/parquet_2                                1.02    134.6±0.45ms   333.3 MB/sec    1.00    132.3±0.29ms   339.2 MB/sec
primitive/zstd                                     1.01    148.9±0.51ms   301.3 MB/sec    1.00    147.2±0.55ms   304.9 MB/sec
primitive/zstd_parquet_2                           1.01    167.5±0.45ms   267.9 MB/sec    1.00    165.9±0.75ms   270.6 MB/sec
primitive_all_null/bloom_filter                    1.02    944.4±2.02µs    46.4 GB/sec    1.00    925.6±1.59µs    47.3 GB/sec
primitive_all_null/cdc                             1.01     19.0±0.46ms     2.3 GB/sec    1.00     18.9±0.26ms     2.3 GB/sec
primitive_all_null/default                         1.00    310.1±1.60µs   141.3 GB/sec    1.01    313.1±1.63µs   140.0 GB/sec
primitive_all_null/parquet_2                       1.01    316.0±1.18µs   138.7 GB/sec    1.00    314.3±1.46µs   139.4 GB/sec
primitive_all_null/zstd                            1.00    433.1±1.84µs   101.2 GB/sec    1.00    433.0±1.80µs   101.2 GB/sec
primitive_all_null/zstd_parquet_2                  1.01    401.6±1.52µs   109.1 GB/sec    1.00    396.7±1.04µs   110.5 GB/sec
primitive_non_null/bloom_filter                    1.04    110.5±0.54ms   398.3 MB/sec    1.00    105.8±0.47ms   415.8 MB/sec
primitive_non_null/cdc                             1.01     90.4±0.24ms   486.8 MB/sec    1.00     89.8±0.29ms   489.8 MB/sec
primitive_non_null/default                         1.01     67.9±0.15ms   648.1 MB/sec    1.00     67.1±0.18ms   655.8 MB/sec
primitive_non_null/parquet_2                       1.01     90.3±0.39ms   487.5 MB/sec    1.00     89.0±0.34ms   494.2 MB/sec
primitive_non_null/zstd                            1.01     98.8±0.35ms   445.2 MB/sec    1.00     97.7±0.21ms   450.4 MB/sec
primitive_non_null/zstd_parquet_2                  1.01    123.6±0.43ms   355.9 MB/sec    1.00    122.5±0.28ms   359.3 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     12.2±0.08ms     3.6 GB/sec    1.00     12.1±0.11ms     3.6 GB/sec
primitive_sparse_99pct_null/cdc                    1.03     31.8±0.38ms  1410.7 MB/sec    1.00     31.0±0.34ms  1449.1 MB/sec
primitive_sparse_99pct_null/default                1.00     10.7±0.04ms     4.1 GB/sec    1.00     10.7±0.07ms     4.1 GB/sec
primitive_sparse_99pct_null/parquet_2              1.01     10.7±0.05ms     4.1 GB/sec    1.00     10.6±0.03ms     4.1 GB/sec
primitive_sparse_99pct_null/zstd                   1.01     14.1±0.09ms     3.1 GB/sec    1.00     14.0±0.06ms     3.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.7±0.09ms     3.5 GB/sec    1.00     12.6±0.11ms     3.5 GB/sec
short_string_non_null/bloom_filter                 1.06     28.8±0.06ms   417.4 MB/sec    1.00     27.2±0.10ms   440.7 MB/sec
short_string_non_null/cdc                          1.01     19.8±0.06ms   605.5 MB/sec    1.00     19.7±0.04ms   608.8 MB/sec
short_string_non_null/default                      1.01     15.8±0.04ms   761.4 MB/sec    1.00     15.6±0.04ms   767.7 MB/sec
short_string_non_null/parquet_2                    1.00     26.6±0.06ms   451.1 MB/sec    1.00     26.5±0.13ms   453.2 MB/sec
short_string_non_null/zstd                         1.00     35.5±0.11ms   338.0 MB/sec    1.00     35.3±0.12ms   339.5 MB/sec
short_string_non_null/zstd_parquet_2               1.01     29.5±0.11ms   406.7 MB/sec    1.00     29.2±0.06ms   411.5 MB/sec
string/bloom_filter                                1.01   220.5±19.33ms     2.3 GB/sec    1.00   218.0±11.15ms     2.3 GB/sec
string/cdc                                         1.00    220.3±5.67ms     2.3 GB/sec    1.02    223.9±9.34ms     2.3 GB/sec
string/default                                     1.02   136.5±20.71ms     3.8 GB/sec    1.00   134.0±19.51ms     3.8 GB/sec
string/parquet_2                                   1.02    130.0±0.74ms     3.9 GB/sec    1.00    127.9±0.34ms     4.0 GB/sec
string/zstd                                        1.10   463.6±22.51ms  1130.9 MB/sec    1.00    421.2±2.67ms  1244.6 MB/sec
string/zstd_parquet_2                              1.02    405.2±9.16ms  1293.7 MB/sec    1.00    398.1±0.32ms  1316.8 MB/sec
string_and_binary_view/bloom_filter                1.01     65.9±0.29ms   489.3 MB/sec    1.00     65.3±0.29ms   493.8 MB/sec
string_and_binary_view/cdc                         1.00     59.9±0.23ms   538.5 MB/sec    1.00     59.8±0.23ms   539.4 MB/sec
string_and_binary_view/default                     1.00     49.2±0.19ms   656.0 MB/sec    1.01     49.4±0.15ms   652.5 MB/sec
string_and_binary_view/parquet_2                   1.00     61.3±0.24ms   525.9 MB/sec    1.00     61.2±0.24ms   526.7 MB/sec
string_and_binary_view/zstd                        1.00     86.0±0.30ms   375.0 MB/sec    1.00     86.2±0.15ms   374.1 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     74.9±0.24ms   430.4 MB/sec    1.00     75.0±0.17ms   429.9 MB/sec
string_dictionary/bloom_filter                     1.00     91.5±0.48ms     2.8 GB/sec    1.00     91.5±0.80ms     2.8 GB/sec
string_dictionary/cdc                              1.00     53.9±0.45ms     4.8 GB/sec    1.44     77.7±2.99ms     3.3 GB/sec
string_dictionary/default                          1.00     49.2±1.01ms     5.2 GB/sec    1.00     49.4±0.80ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     54.4±0.26ms     4.7 GB/sec    1.46     79.7±0.33ms     3.2 GB/sec
string_dictionary/zstd                             1.00    209.5±0.99ms  1260.9 MB/sec    1.10    231.2±1.30ms  1142.5 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.9±0.61ms  1321.0 MB/sec    1.07    213.2±0.27ms  1238.7 MB/sec
string_non_null/bloom_filter                       1.00   246.4±14.72ms     2.1 GB/sec    1.05   257.6±27.17ms  2034.0 MB/sec
string_non_null/cdc                                1.00    269.9±7.37ms  1941.7 MB/sec    1.01    271.2±9.95ms  1932.0 MB/sec
string_non_null/default                            1.00   123.6±11.29ms     4.1 GB/sec    1.09   134.4±20.96ms     3.8 GB/sec
string_non_null/parquet_2                          1.07   143.7±11.73ms     3.6 GB/sec    1.00   134.1±10.18ms     3.8 GB/sec
string_non_null/zstd                               1.02    558.1±6.93ms   938.9 MB/sec    1.00    548.6±3.47ms   955.1 MB/sec
string_non_null/zstd_parquet_2                     1.01    509.8±5.11ms  1027.8 MB/sec    1.00    506.5±1.17ms  1034.5 MB/sec
string_ree/bloom_filter                            1.00    153.6±1.82ms   106.8 MB/sec    1.03    158.9±1.69ms   103.3 MB/sec
string_ree/cdc                                     1.00    225.3±0.69ms    72.8 MB/sec    1.01    228.5±1.13ms    71.8 MB/sec
string_ree/default                                 1.00    127.1±1.69ms   129.1 MB/sec    1.03    131.4±1.88ms   124.8 MB/sec
string_ree/parquet_2                               1.00    175.1±0.71ms    93.7 MB/sec    1.03    180.0±0.43ms    91.2 MB/sec
string_ree/zstd                                    1.00    175.8±1.16ms    93.3 MB/sec    1.01    178.3±1.11ms    92.0 MB/sec
string_ree/zstd_parquet_2                          1.00    189.0±0.48ms    86.8 MB/sec    1.03    195.0±0.35ms    84.1 MB/sec
string_ree_95pct_null/bloom_filter                 1.00     26.1±0.19ms    54.0 MB/sec    1.00     26.2±0.21ms    53.7 MB/sec
string_ree_95pct_null/cdc                          1.00     32.1±0.11ms    43.8 MB/sec    1.01     32.4±0.07ms    43.4 MB/sec
string_ree_95pct_null/default                      1.00     24.5±0.04ms    57.4 MB/sec    1.00     24.6±0.04ms    57.1 MB/sec
string_ree_95pct_null/parquet_2                    1.00     24.6±0.14ms    57.1 MB/sec    1.01     24.9±0.12ms    56.5 MB/sec
string_ree_95pct_null/zstd                         1.00     25.4±0.09ms    55.4 MB/sec    1.00     25.4±0.06ms    55.3 MB/sec
string_ree_95pct_null/zstd_parquet_2               1.00     25.4±0.10ms    55.3 MB/sec    1.00     25.4±0.06ms    55.4 MB/sec
struct_all_null/bloom_filter                       1.01    394.3±1.40µs    39.9 GB/sec    1.00    388.7±1.10µs    40.5 GB/sec
struct_all_null/cdc                                1.00      7.7±0.11ms     2.1 GB/sec    1.00      7.6±0.10ms     2.1 GB/sec
struct_all_null/default                            1.00    132.2±0.68µs   119.1 GB/sec    1.03    135.6±0.54µs   116.2 GB/sec
struct_all_null/parquet_2                          1.01    136.2±0.60µs   115.7 GB/sec    1.00    134.4±0.57µs   117.2 GB/sec
struct_all_null/zstd                               1.00    185.0±0.71µs    85.1 GB/sec    1.00    185.8±0.60µs    84.7 GB/sec
struct_all_null/zstd_parquet_2                     1.01    172.9±0.62µs    91.1 GB/sec    1.00    170.6±0.44µs    92.3 GB/sec
struct_non_null/bloom_filter                       1.04     47.3±0.13ms   338.1 MB/sec    1.00     45.7±0.22ms   350.5 MB/sec
struct_non_null/cdc                                1.02     46.0±0.17ms   347.5 MB/sec    1.00     45.2±0.21ms   353.7 MB/sec
struct_non_null/default                            1.02     32.5±0.10ms   491.9 MB/sec    1.00     32.0±0.20ms   500.0 MB/sec
struct_non_null/parquet_2                          1.02     41.3±0.16ms   387.4 MB/sec    1.00     40.5±0.13ms   394.8 MB/sec
struct_non_null/zstd                               1.01     41.1±0.10ms   389.7 MB/sec    1.00     40.6±0.16ms   393.6 MB/sec
struct_non_null/zstd_parquet_2                     1.01     55.3±0.14ms   289.3 MB/sec    1.00     54.6±0.16ms   292.8 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      6.5±0.02ms     2.4 GB/sec    1.04      6.8±0.03ms     2.3 GB/sec
struct_sparse_99pct_null/cdc                       1.00     14.5±0.10ms  1108.5 MB/sec    1.01     14.7±0.10ms  1095.3 MB/sec
struct_sparse_99pct_null/default                   1.00      5.9±0.01ms     2.6 GB/sec    1.05      6.2±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.0±0.01ms     2.6 GB/sec    1.04      6.2±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/zstd                      1.00      7.3±0.01ms     2.1 GB/sec    1.04      7.6±0.02ms     2.1 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      6.8±0.04ms     2.3 GB/sec    1.03      7.0±0.02ms     2.3 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2865.6s
Peak memory 2.8 GiB
Avg memory 2.6 GiB
CPU user 2761.7s
CPU sys 101.4s
Peak spill 0 B

branch

Metric Value
Wall time 2855.6s
Peak memory 2.7 GiB
Avg memory 2.6 GiB
CPU user 2748.3s
CPU sys 104.0s
Peak spill 0 B

File an issue against this benchmark runner

@HippoBaro

Copy link
Copy Markdown
Contributor Author

🤖 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                                              main                                   unpadded_child_mode
-----                                              ----                                   -------------------
bool/bloom_filter                                  1.03     13.2±0.07ms    18.9 MB/sec    1.00     12.9±0.04ms    19.4 MB/sec
bool/cdc                                           1.04     16.1±0.09ms    15.5 MB/sec    1.00     15.5±0.04ms    16.1 MB/sec
bool/default                                       1.03     11.1±0.07ms    22.5 MB/sec    1.00     10.8±0.04ms    23.1 MB/sec
bool/parquet_2                                     1.02     14.9±0.09ms    16.8 MB/sec    1.00     14.6±0.05ms    17.1 MB/sec
bool/zstd                                          1.02     11.6±0.07ms    21.6 MB/sec    1.00     11.4±0.05ms    22.0 MB/sec
bool/zstd_parquet_2                                1.02     15.3±0.08ms    16.4 MB/sec    1.00     15.0±0.06ms    16.7 MB/sec
bool_non_null/bloom_filter                         1.02      7.1±0.03ms    17.7 MB/sec    1.00      6.9±0.03ms    18.0 MB/sec
bool_non_null/cdc                                  1.02      6.8±0.02ms    18.3 MB/sec    1.00      6.7±0.03ms    18.6 MB/sec
bool_non_null/default                              1.03      4.3±0.03ms    28.9 MB/sec    1.00      4.2±0.02ms    29.9 MB/sec
bool_non_null/parquet_2                            1.01      9.1±0.04ms    13.8 MB/sec    1.00      9.0±0.03ms    14.0 MB/sec
bool_non_null/zstd                                 1.03      4.7±0.02ms    26.8 MB/sec    1.00      4.5±0.02ms    27.6 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.5±0.04ms    13.2 MB/sec    1.00      9.4±0.03ms    13.3 MB/sec
bool_ree/bloom_filter                              1.01     30.7±0.13ms     6.9 MB/sec    1.00     30.4±0.05ms     7.0 MB/sec
bool_ree/cdc                                       1.01     32.1±0.14ms     6.6 MB/sec    1.00     31.7±0.09ms     6.7 MB/sec
bool_ree/default                                   1.01     28.0±0.14ms     7.6 MB/sec    1.00     27.7±0.05ms     7.7 MB/sec
bool_ree/parquet_2                                 1.01     29.6±0.11ms     7.2 MB/sec    1.00     29.4±0.06ms     7.3 MB/sec
bool_ree/zstd                                      1.01     28.7±0.14ms     7.4 MB/sec    1.00     28.3±0.05ms     7.5 MB/sec
bool_ree/zstd_parquet_2                            1.01     29.9±0.13ms     7.1 MB/sec    1.00     29.6±0.07ms     7.2 MB/sec
fixed_size_binary_ree/bloom_filter                 1.00     68.9±0.29ms    14.6 MB/sec    1.01     69.8±0.18ms    14.4 MB/sec
fixed_size_binary_ree/cdc                          1.00     72.9±0.24ms    13.8 MB/sec    1.01     73.3±0.16ms    13.7 MB/sec
fixed_size_binary_ree/default                      1.00     62.1±0.29ms    16.2 MB/sec    1.01     63.0±0.13ms    16.0 MB/sec
fixed_size_binary_ree/parquet_2                    1.00     78.0±0.27ms    12.9 MB/sec    1.01     78.8±0.18ms    12.8 MB/sec
fixed_size_binary_ree/zstd                         1.00     67.3±0.25ms    15.0 MB/sec    1.01     68.2±0.19ms    14.8 MB/sec
fixed_size_binary_ree/zstd_parquet_2               1.00     78.8±0.31ms    12.8 MB/sec    1.01     79.7±0.31ms    12.6 MB/sec
float_with_nans/bloom_filter                       1.00     92.6±0.33ms   151.1 MB/sec    1.00     93.0±0.32ms   150.5 MB/sec
float_with_nans/cdc                                1.00     80.9±0.15ms   173.1 MB/sec    1.01     81.8±0.30ms   171.1 MB/sec
float_with_nans/default                            1.00     74.2±0.22ms   188.6 MB/sec    1.00     73.9±0.15ms   189.5 MB/sec
float_with_nans/parquet_2                          1.00     94.2±0.26ms   148.6 MB/sec    1.00     94.2±0.31ms   148.7 MB/sec
float_with_nans/zstd                               1.00    111.7±0.30ms   125.4 MB/sec    1.00    111.7±0.20ms   125.3 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.3±0.30ms   106.7 MB/sec    1.00    131.6±0.44ms   106.3 MB/sec
int32_ree/bloom_filter                             1.00     39.8±0.06ms    10.2 MB/sec    1.01     40.1±0.08ms    10.1 MB/sec
int32_ree/cdc                                      1.00     40.2±0.08ms    10.1 MB/sec    1.00     40.3±0.08ms    10.1 MB/sec
int32_ree/default                                  1.00     36.0±0.04ms    11.3 MB/sec    1.01     36.3±0.08ms    11.2 MB/sec
int32_ree/parquet_2                                1.00     36.0±0.04ms    11.3 MB/sec    1.01     36.3±0.04ms    11.2 MB/sec
int32_ree/zstd                                     1.00     36.7±0.04ms    11.1 MB/sec    1.01     36.9±0.12ms    11.0 MB/sec
int32_ree/zstd_parquet_2                           1.00     36.6±0.07ms    11.1 MB/sec    1.01     36.8±0.05ms    11.1 MB/sec
int32_ree_95pct_null/bloom_filter                  1.00     21.8±0.07ms    18.7 MB/sec    1.01     21.9±0.08ms    18.6 MB/sec
int32_ree_95pct_null/cdc                           1.00     24.2±0.05ms    16.8 MB/sec    1.00     24.3±0.03ms    16.7 MB/sec
int32_ree_95pct_null/default                       1.00     21.4±0.03ms    19.0 MB/sec    1.00     21.5±0.01ms    18.9 MB/sec
int32_ree_95pct_null/parquet_2                     1.00     21.4±0.03ms    19.0 MB/sec    1.00     21.5±0.04ms    18.9 MB/sec
int32_ree_95pct_null/zstd                          1.00     21.7±0.02ms    18.8 MB/sec    1.00     21.8±0.02ms    18.7 MB/sec
int32_ree_95pct_null/zstd_parquet_2                1.00     21.6±0.03ms    18.8 MB/sec    1.00     21.7±0.02ms    18.8 MB/sec
large_string_non_null/bloom_filter                 1.00     72.2±0.12ms     3.5 GB/sec    1.00     72.4±0.18ms     3.5 GB/sec
large_string_non_null/cdc                          1.00    244.7±0.95ms  1046.4 MB/sec    1.00    244.1±0.89ms  1048.9 MB/sec
large_string_non_null/default                      1.00     54.2±0.08ms     4.6 GB/sec    1.00     54.4±0.08ms     4.6 GB/sec
large_string_non_null/parquet_2                    1.00     54.2±0.08ms     4.6 GB/sec    1.00     54.5±0.09ms     4.6 GB/sec
large_string_non_null/zstd                         1.00     54.3±0.10ms     4.6 GB/sec    1.00     54.4±0.08ms     4.6 GB/sec
large_string_non_null/zstd_parquet_2               1.00     54.2±0.08ms     4.6 GB/sec    1.01     54.5±0.09ms     4.6 GB/sec
list_nested/bloom_filter                           1.01    159.1±0.24ms   181.4 MB/sec    1.00    157.4±0.25ms   183.3 MB/sec
list_nested/cdc                                    1.00    175.2±0.24ms   164.7 MB/sec    1.00    174.8±0.41ms   165.1 MB/sec
list_nested/default                                1.00    144.0±0.27ms   200.4 MB/sec    1.00    143.3±0.25ms   201.3 MB/sec
list_nested/parquet_2                              1.00    157.1±0.38ms   183.7 MB/sec    1.00    157.0±0.91ms   183.8 MB/sec
list_nested/zstd                                   1.00    153.1±0.32ms   188.5 MB/sec    1.00    152.5±0.31ms   189.3 MB/sec
list_nested/zstd_parquet_2                         1.00    170.5±0.22ms   169.3 MB/sec    1.00    170.1±0.57ms   169.7 MB/sec
list_primitive/bloom_filter                        1.01    306.7±2.08ms  1778.3 MB/sec    1.00    303.1±6.58ms  1799.5 MB/sec
list_primitive/cdc                                 1.00    329.0±5.49ms  1657.4 MB/sec    1.00    329.9±5.59ms  1653.2 MB/sec
list_primitive/default                             1.03    229.6±1.79ms     2.3 GB/sec    1.00    223.2±3.56ms     2.4 GB/sec
list_primitive/parquet_2                           1.06    251.9±2.39ms     2.1 GB/sec    1.00    236.7±0.85ms     2.3 GB/sec
list_primitive/zstd                                1.00    464.7±1.76ms  1173.6 MB/sec    1.00    464.2±1.00ms  1174.9 MB/sec
list_primitive/zstd_parquet_2                      1.00    459.9±0.41ms  1185.8 MB/sec    1.00    460.3±0.48ms  1184.7 MB/sec
list_primitive_non_null/bloom_filter               1.01   411.5±10.30ms  1322.6 MB/sec    1.00   407.0±10.76ms  1337.2 MB/sec
list_primitive_non_null/cdc                        1.00    416.1±8.10ms  1307.8 MB/sec    1.00    417.0±9.77ms  1305.2 MB/sec
list_primitive_non_null/default                    1.00    278.7±6.34ms  1952.7 MB/sec    1.00    277.6±8.64ms  1960.8 MB/sec
list_primitive_non_null/parquet_2                  1.07    321.2±2.56ms  1694.2 MB/sec    1.00    299.9±0.68ms  1814.9 MB/sec
list_primitive_non_null/zstd                       1.01   702.7±13.55ms   774.5 MB/sec    1.00   693.2±11.34ms   785.1 MB/sec
list_primitive_non_null/zstd_parquet_2             1.02   686.9±13.22ms   792.3 MB/sec    1.00    676.6±0.60ms   804.4 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.01     12.4±0.05ms     2.9 GB/sec    1.00     12.3±0.03ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.02     24.1±0.16ms  1549.6 MB/sec    1.00     23.7±0.05ms  1578.3 MB/sec
list_primitive_sparse_99pct_null/default           1.00     12.1±0.04ms     3.0 GB/sec    1.00     12.0±0.04ms     3.0 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.01     12.1±0.07ms     3.0 GB/sec    1.00     12.0±0.05ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.9±0.08ms     2.6 GB/sec    1.00     13.9±0.08ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.02     12.4±0.11ms     3.0 GB/sec    1.00     12.1±0.07ms     3.0 GB/sec
list_struct_with_list/bloom_filter                 1.02    316.3±0.88ms   144.1 MB/sec    1.00    311.6±0.69ms   146.3 MB/sec
list_struct_with_list/cdc                          1.00    351.2±0.61ms   129.8 MB/sec    1.00    351.4±0.68ms   129.8 MB/sec
list_struct_with_list/default                      1.00    286.7±1.12ms   159.0 MB/sec    1.00    286.0±0.64ms   159.4 MB/sec
list_struct_with_list/parquet_2                    1.00    303.8±0.76ms   150.1 MB/sec    1.00    303.3±0.65ms   150.3 MB/sec
list_struct_with_list/zstd                         1.00    308.2±0.81ms   148.0 MB/sec    1.00    307.7±0.63ms   148.2 MB/sec
list_struct_with_list/zstd_parquet_2               1.00    327.2±0.79ms   139.3 MB/sec    1.00    327.2±0.62ms   139.4 MB/sec
primitive/bloom_filter                             1.03    152.6±0.57ms   294.2 MB/sec    1.00    148.8±0.36ms   301.6 MB/sec
primitive/cdc                                      1.02    161.5±0.82ms   277.9 MB/sec    1.00    158.9±0.53ms   282.4 MB/sec
primitive/default                                  1.01    119.2±0.42ms   376.5 MB/sec    1.00    117.5±0.36ms   381.9 MB/sec
primitive/parquet_2                                1.02    134.6±0.45ms   333.3 MB/sec    1.00    132.3±0.29ms   339.2 MB/sec
primitive/zstd                                     1.01    148.9±0.51ms   301.3 MB/sec    1.00    147.2±0.55ms   304.9 MB/sec
primitive/zstd_parquet_2                           1.01    167.5±0.45ms   267.9 MB/sec    1.00    165.9±0.75ms   270.6 MB/sec
primitive_all_null/bloom_filter                    1.02    944.4±2.02µs    46.4 GB/sec    1.00    925.6±1.59µs    47.3 GB/sec
primitive_all_null/cdc                             1.01     19.0±0.46ms     2.3 GB/sec    1.00     18.9±0.26ms     2.3 GB/sec
primitive_all_null/default                         1.00    310.1±1.60µs   141.3 GB/sec    1.01    313.1±1.63µs   140.0 GB/sec
primitive_all_null/parquet_2                       1.01    316.0±1.18µs   138.7 GB/sec    1.00    314.3±1.46µs   139.4 GB/sec
primitive_all_null/zstd                            1.00    433.1±1.84µs   101.2 GB/sec    1.00    433.0±1.80µs   101.2 GB/sec
primitive_all_null/zstd_parquet_2                  1.01    401.6±1.52µs   109.1 GB/sec    1.00    396.7±1.04µs   110.5 GB/sec
primitive_non_null/bloom_filter                    1.04    110.5±0.54ms   398.3 MB/sec    1.00    105.8±0.47ms   415.8 MB/sec
primitive_non_null/cdc                             1.01     90.4±0.24ms   486.8 MB/sec    1.00     89.8±0.29ms   489.8 MB/sec
primitive_non_null/default                         1.01     67.9±0.15ms   648.1 MB/sec    1.00     67.1±0.18ms   655.8 MB/sec
primitive_non_null/parquet_2                       1.01     90.3±0.39ms   487.5 MB/sec    1.00     89.0±0.34ms   494.2 MB/sec
primitive_non_null/zstd                            1.01     98.8±0.35ms   445.2 MB/sec    1.00     97.7±0.21ms   450.4 MB/sec
primitive_non_null/zstd_parquet_2                  1.01    123.6±0.43ms   355.9 MB/sec    1.00    122.5±0.28ms   359.3 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     12.2±0.08ms     3.6 GB/sec    1.00     12.1±0.11ms     3.6 GB/sec
primitive_sparse_99pct_null/cdc                    1.03     31.8±0.38ms  1410.7 MB/sec    1.00     31.0±0.34ms  1449.1 MB/sec
primitive_sparse_99pct_null/default                1.00     10.7±0.04ms     4.1 GB/sec    1.00     10.7±0.07ms     4.1 GB/sec
primitive_sparse_99pct_null/parquet_2              1.01     10.7±0.05ms     4.1 GB/sec    1.00     10.6±0.03ms     4.1 GB/sec
primitive_sparse_99pct_null/zstd                   1.01     14.1±0.09ms     3.1 GB/sec    1.00     14.0±0.06ms     3.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.7±0.09ms     3.5 GB/sec    1.00     12.6±0.11ms     3.5 GB/sec
short_string_non_null/bloom_filter                 1.06     28.8±0.06ms   417.4 MB/sec    1.00     27.2±0.10ms   440.7 MB/sec
short_string_non_null/cdc                          1.01     19.8±0.06ms   605.5 MB/sec    1.00     19.7±0.04ms   608.8 MB/sec
short_string_non_null/default                      1.01     15.8±0.04ms   761.4 MB/sec    1.00     15.6±0.04ms   767.7 MB/sec
short_string_non_null/parquet_2                    1.00     26.6±0.06ms   451.1 MB/sec    1.00     26.5±0.13ms   453.2 MB/sec
short_string_non_null/zstd                         1.00     35.5±0.11ms   338.0 MB/sec    1.00     35.3±0.12ms   339.5 MB/sec
short_string_non_null/zstd_parquet_2               1.01     29.5±0.11ms   406.7 MB/sec    1.00     29.2±0.06ms   411.5 MB/sec
string/bloom_filter                                1.01   220.5±19.33ms     2.3 GB/sec    1.00   218.0±11.15ms     2.3 GB/sec
string/cdc                                         1.00    220.3±5.67ms     2.3 GB/sec    1.02    223.9±9.34ms     2.3 GB/sec
string/default                                     1.02   136.5±20.71ms     3.8 GB/sec    1.00   134.0±19.51ms     3.8 GB/sec
string/parquet_2                                   1.02    130.0±0.74ms     3.9 GB/sec    1.00    127.9±0.34ms     4.0 GB/sec
string/zstd                                        1.10   463.6±22.51ms  1130.9 MB/sec    1.00    421.2±2.67ms  1244.6 MB/sec
string/zstd_parquet_2                              1.02    405.2±9.16ms  1293.7 MB/sec    1.00    398.1±0.32ms  1316.8 MB/sec
string_and_binary_view/bloom_filter                1.01     65.9±0.29ms   489.3 MB/sec    1.00     65.3±0.29ms   493.8 MB/sec
string_and_binary_view/cdc                         1.00     59.9±0.23ms   538.5 MB/sec    1.00     59.8±0.23ms   539.4 MB/sec
string_and_binary_view/default                     1.00     49.2±0.19ms   656.0 MB/sec    1.01     49.4±0.15ms   652.5 MB/sec
string_and_binary_view/parquet_2                   1.00     61.3±0.24ms   525.9 MB/sec    1.00     61.2±0.24ms   526.7 MB/sec
string_and_binary_view/zstd                        1.00     86.0±0.30ms   375.0 MB/sec    1.00     86.2±0.15ms   374.1 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     74.9±0.24ms   430.4 MB/sec    1.00     75.0±0.17ms   429.9 MB/sec
string_dictionary/bloom_filter                     1.00     91.5±0.48ms     2.8 GB/sec    1.00     91.5±0.80ms     2.8 GB/sec
string_dictionary/cdc                              1.00     53.9±0.45ms     4.8 GB/sec    1.44     77.7±2.99ms     3.3 GB/sec
string_dictionary/default                          1.00     49.2±1.01ms     5.2 GB/sec    1.00     49.4±0.80ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     54.4±0.26ms     4.7 GB/sec    1.46     79.7±0.33ms     3.2 GB/sec
string_dictionary/zstd                             1.00    209.5±0.99ms  1260.9 MB/sec    1.10    231.2±1.30ms  1142.5 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.9±0.61ms  1321.0 MB/sec    1.07    213.2±0.27ms  1238.7 MB/sec
string_non_null/bloom_filter                       1.00   246.4±14.72ms     2.1 GB/sec    1.05   257.6±27.17ms  2034.0 MB/sec
string_non_null/cdc                                1.00    269.9±7.37ms  1941.7 MB/sec    1.01    271.2±9.95ms  1932.0 MB/sec
string_non_null/default                            1.00   123.6±11.29ms     4.1 GB/sec    1.09   134.4±20.96ms     3.8 GB/sec
string_non_null/parquet_2                          1.07   143.7±11.73ms     3.6 GB/sec    1.00   134.1±10.18ms     3.8 GB/sec
string_non_null/zstd                               1.02    558.1±6.93ms   938.9 MB/sec    1.00    548.6±3.47ms   955.1 MB/sec
string_non_null/zstd_parquet_2                     1.01    509.8±5.11ms  1027.8 MB/sec    1.00    506.5±1.17ms  1034.5 MB/sec
string_ree/bloom_filter                            1.00    153.6±1.82ms   106.8 MB/sec    1.03    158.9±1.69ms   103.3 MB/sec
string_ree/cdc                                     1.00    225.3±0.69ms    72.8 MB/sec    1.01    228.5±1.13ms    71.8 MB/sec
string_ree/default                                 1.00    127.1±1.69ms   129.1 MB/sec    1.03    131.4±1.88ms   124.8 MB/sec
string_ree/parquet_2                               1.00    175.1±0.71ms    93.7 MB/sec    1.03    180.0±0.43ms    91.2 MB/sec
string_ree/zstd                                    1.00    175.8±1.16ms    93.3 MB/sec    1.01    178.3±1.11ms    92.0 MB/sec
string_ree/zstd_parquet_2                          1.00    189.0±0.48ms    86.8 MB/sec    1.03    195.0±0.35ms    84.1 MB/sec
string_ree_95pct_null/bloom_filter                 1.00     26.1±0.19ms    54.0 MB/sec    1.00     26.2±0.21ms    53.7 MB/sec
string_ree_95pct_null/cdc                          1.00     32.1±0.11ms    43.8 MB/sec    1.01     32.4±0.07ms    43.4 MB/sec
string_ree_95pct_null/default                      1.00     24.5±0.04ms    57.4 MB/sec    1.00     24.6±0.04ms    57.1 MB/sec
string_ree_95pct_null/parquet_2                    1.00     24.6±0.14ms    57.1 MB/sec    1.01     24.9±0.12ms    56.5 MB/sec
string_ree_95pct_null/zstd                         1.00     25.4±0.09ms    55.4 MB/sec    1.00     25.4±0.06ms    55.3 MB/sec
string_ree_95pct_null/zstd_parquet_2               1.00     25.4±0.10ms    55.3 MB/sec    1.00     25.4±0.06ms    55.4 MB/sec
struct_all_null/bloom_filter                       1.01    394.3±1.40µs    39.9 GB/sec    1.00    388.7±1.10µs    40.5 GB/sec
struct_all_null/cdc                                1.00      7.7±0.11ms     2.1 GB/sec    1.00      7.6±0.10ms     2.1 GB/sec
struct_all_null/default                            1.00    132.2±0.68µs   119.1 GB/sec    1.03    135.6±0.54µs   116.2 GB/sec
struct_all_null/parquet_2                          1.01    136.2±0.60µs   115.7 GB/sec    1.00    134.4±0.57µs   117.2 GB/sec
struct_all_null/zstd                               1.00    185.0±0.71µs    85.1 GB/sec    1.00    185.8±0.60µs    84.7 GB/sec
struct_all_null/zstd_parquet_2                     1.01    172.9±0.62µs    91.1 GB/sec    1.00    170.6±0.44µs    92.3 GB/sec
struct_non_null/bloom_filter                       1.04     47.3±0.13ms   338.1 MB/sec    1.00     45.7±0.22ms   350.5 MB/sec
struct_non_null/cdc                                1.02     46.0±0.17ms   347.5 MB/sec    1.00     45.2±0.21ms   353.7 MB/sec
struct_non_null/default                            1.02     32.5±0.10ms   491.9 MB/sec    1.00     32.0±0.20ms   500.0 MB/sec
struct_non_null/parquet_2                          1.02     41.3±0.16ms   387.4 MB/sec    1.00     40.5±0.13ms   394.8 MB/sec
struct_non_null/zstd                               1.01     41.1±0.10ms   389.7 MB/sec    1.00     40.6±0.16ms   393.6 MB/sec
struct_non_null/zstd_parquet_2                     1.01     55.3±0.14ms   289.3 MB/sec    1.00     54.6±0.16ms   292.8 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      6.5±0.02ms     2.4 GB/sec    1.04      6.8±0.03ms     2.3 GB/sec
struct_sparse_99pct_null/cdc                       1.00     14.5±0.10ms  1108.5 MB/sec    1.01     14.7±0.10ms  1095.3 MB/sec
struct_sparse_99pct_null/default                   1.00      5.9±0.01ms     2.6 GB/sec    1.05      6.2±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.0±0.01ms     2.6 GB/sec    1.04      6.2±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/zstd                      1.00      7.3±0.01ms     2.1 GB/sec    1.04      7.6±0.02ms     2.1 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      6.8±0.04ms     2.3 GB/sec    1.03      7.0±0.02ms     2.3 GB/sec

Resource Usage
base (merge-base)

Metric Value
Wall time 2865.6s
Peak memory 2.8 GiB
Avg memory 2.6 GiB
CPU user 2761.7s
CPU sys 101.4s
Peak spill 0 B
branch

Metric Value
Wall time 2855.6s
Peak memory 2.7 GiB
Avg memory 2.6 GiB
CPU user 2748.3s
CPU sys 104.0s
Peak spill 0 B
File an issue against this benchmark runner

These benchmarks are quite unreliable. This code doesn't touch any writer side code and yet string_dictionary/parquet_2 shows a 46%(!!) regression. @alamb maybe let's run the writer benchmarks again just for good measure?

@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                                              main                                   unpadded_child_mode
-----                                              ----                                   -------------------
bool/bloom_filter                                  1.00     13.0±0.05ms    19.2 MB/sec    1.00     13.1±0.05ms    19.1 MB/sec
bool/cdc                                           1.02     16.0±0.05ms    15.6 MB/sec    1.00     15.8±0.05ms    15.9 MB/sec
bool/default                                       1.00     10.9±0.05ms    22.9 MB/sec    1.00     10.9±0.04ms    22.9 MB/sec
bool/parquet_2                                     1.00     14.8±0.06ms    16.9 MB/sec    1.00     14.8±0.04ms    16.9 MB/sec
bool/zstd                                          1.00     11.5±0.05ms    21.8 MB/sec    1.00     11.4±0.04ms    21.9 MB/sec
bool/zstd_parquet_2                                1.00     15.2±0.06ms    16.5 MB/sec    1.00     15.1±0.05ms    16.5 MB/sec
bool_non_null/bloom_filter                         1.01      7.1±0.03ms    17.7 MB/sec    1.00      7.0±0.03ms    17.9 MB/sec
bool_non_null/cdc                                  1.02      7.0±0.03ms    18.0 MB/sec    1.00      6.8±0.03ms    18.4 MB/sec
bool_non_null/default                              1.03      4.3±0.02ms    28.9 MB/sec    1.00      4.2±0.02ms    29.8 MB/sec
bool_non_null/parquet_2                            1.02      9.1±0.04ms    13.7 MB/sec    1.00      9.0±0.03ms    13.9 MB/sec
bool_non_null/zstd                                 1.03      4.7±0.02ms    26.7 MB/sec    1.00      4.6±0.03ms    27.4 MB/sec
bool_non_null/zstd_parquet_2                       1.02      9.6±0.04ms    13.1 MB/sec    1.00      9.4±0.03ms    13.3 MB/sec
bool_ree/bloom_filter                              1.00     30.4±0.05ms     7.0 MB/sec    1.01     30.6±0.05ms     7.0 MB/sec
bool_ree/cdc                                       1.00     31.8±0.08ms     6.7 MB/sec    1.00     31.8±0.05ms     6.7 MB/sec
bool_ree/default                                   1.00     27.7±0.06ms     7.7 MB/sec    1.00     27.8±0.05ms     7.7 MB/sec
bool_ree/parquet_2                                 1.00     29.3±0.10ms     7.3 MB/sec    1.00     29.4±0.05ms     7.2 MB/sec
bool_ree/zstd                                      1.00     28.3±0.07ms     7.5 MB/sec    1.00     28.4±0.05ms     7.5 MB/sec
bool_ree/zstd_parquet_2                            1.00     29.6±0.06ms     7.2 MB/sec    1.00     29.7±0.06ms     7.2 MB/sec
fixed_size_binary_ree/bloom_filter                 1.00     69.5±0.32ms    14.5 MB/sec    1.01     70.2±0.23ms    14.3 MB/sec
fixed_size_binary_ree/cdc                          1.00     72.7±0.12ms    13.9 MB/sec    1.01     73.4±0.18ms    13.7 MB/sec
fixed_size_binary_ree/default                      1.00     62.2±0.16ms    16.2 MB/sec    1.01     62.9±0.17ms    16.0 MB/sec
fixed_size_binary_ree/parquet_2                    1.00     79.3±0.34ms    12.7 MB/sec    1.01     80.0±0.35ms    12.6 MB/sec
fixed_size_binary_ree/zstd                         1.00     67.2±0.19ms    15.0 MB/sec    1.01     67.9±0.15ms    14.8 MB/sec
fixed_size_binary_ree/zstd_parquet_2               1.00     80.2±0.35ms    12.6 MB/sec    1.01     80.7±0.35ms    12.5 MB/sec
float_with_nans/bloom_filter                       1.00     93.3±0.23ms   150.1 MB/sec    1.00     93.6±0.34ms   149.6 MB/sec
float_with_nans/cdc                                1.00     81.5±0.18ms   171.7 MB/sec    1.01     82.1±0.18ms   170.5 MB/sec
float_with_nans/default                            1.00     74.5±0.25ms   188.0 MB/sec    1.00     74.7±0.18ms   187.5 MB/sec
float_with_nans/parquet_2                          1.00     94.9±0.22ms   147.6 MB/sec    1.00     95.0±0.22ms   147.4 MB/sec
float_with_nans/zstd                               1.00    112.2±0.21ms   124.8 MB/sec    1.00    112.5±0.17ms   124.4 MB/sec
float_with_nans/zstd_parquet_2                     1.00    132.1±0.21ms   106.0 MB/sec    1.00    132.3±0.24ms   105.8 MB/sec
int32_ree/bloom_filter                             1.00     40.9±1.01ms     9.9 MB/sec    1.01     41.4±0.19ms     9.8 MB/sec
int32_ree/cdc                                      1.00     40.4±0.07ms    10.1 MB/sec    1.01     40.7±0.07ms    10.0 MB/sec
int32_ree/default                                  1.00     36.2±0.10ms    11.2 MB/sec    1.02     36.9±0.11ms    11.0 MB/sec
int32_ree/parquet_2                                1.00     36.3±0.15ms    11.2 MB/sec    1.01     36.8±0.11ms    11.0 MB/sec
int32_ree/zstd                                     1.00     36.9±0.08ms    11.0 MB/sec    1.01     37.4±0.11ms    10.9 MB/sec
int32_ree/zstd_parquet_2                           1.00     36.9±0.07ms    11.0 MB/sec    1.01     37.4±0.11ms    10.9 MB/sec
int32_ree_95pct_null/bloom_filter                  1.00     22.1±0.03ms    18.4 MB/sec    1.00     22.1±0.03ms    18.4 MB/sec
int32_ree_95pct_null/cdc                           1.00     24.4±0.07ms    16.6 MB/sec    1.00     24.5±0.07ms    16.6 MB/sec
int32_ree_95pct_null/default                       1.00     21.5±0.02ms    18.9 MB/sec    1.00     21.6±0.02ms    18.8 MB/sec
int32_ree_95pct_null/parquet_2                     1.00     21.6±0.02ms    18.8 MB/sec    1.00     21.7±0.02ms    18.8 MB/sec
int32_ree_95pct_null/zstd                          1.00     21.8±0.02ms    18.6 MB/sec    1.01     21.9±0.03ms    18.6 MB/sec
int32_ree_95pct_null/zstd_parquet_2                1.00     21.7±0.02ms    18.7 MB/sec    1.00     21.8±0.02ms    18.6 MB/sec
large_string_non_null/bloom_filter                 1.05     77.0±0.30ms     3.2 GB/sec    1.00     73.2±0.12ms     3.4 GB/sec
large_string_non_null/cdc                          1.00    243.7±0.94ms  1050.6 MB/sec    1.01    245.7±1.38ms  1041.8 MB/sec
large_string_non_null/default                      1.07     59.3±0.41ms     4.2 GB/sec    1.00     55.4±0.10ms     4.5 GB/sec
large_string_non_null/parquet_2                    1.07     59.3±0.27ms     4.2 GB/sec    1.00     55.3±0.11ms     4.5 GB/sec
large_string_non_null/zstd                         1.06     59.0±0.35ms     4.2 GB/sec    1.00     55.5±0.12ms     4.5 GB/sec
large_string_non_null/zstd_parquet_2               1.07     59.1±0.49ms     4.2 GB/sec    1.00     55.3±0.11ms     4.5 GB/sec
list_nested/bloom_filter                           1.00    159.9±0.26ms   180.4 MB/sec    1.05    167.2±0.24ms   172.5 MB/sec
list_nested/cdc                                    1.00    176.6±0.23ms   163.4 MB/sec    1.04    183.0±0.36ms   157.7 MB/sec
list_nested/default                                1.00    144.7±0.24ms   199.4 MB/sec    1.05    151.7±0.28ms   190.3 MB/sec
list_nested/parquet_2                              1.00    158.1±0.28ms   182.5 MB/sec    1.04    164.9±0.27ms   175.0 MB/sec
list_nested/zstd                                   1.00    154.1±0.22ms   187.2 MB/sec    1.04    160.6±0.26ms   179.6 MB/sec
list_nested/zstd_parquet_2                         1.00    170.9±0.26ms   168.9 MB/sec    1.04    177.9±0.29ms   162.2 MB/sec
list_primitive/bloom_filter                        1.04    309.4±1.14ms  1762.8 MB/sec    1.00    296.8±0.91ms  1837.4 MB/sec
list_primitive/cdc                                 1.02   340.7±13.30ms  1600.7 MB/sec    1.00    334.5±8.64ms  1630.5 MB/sec
list_primitive/default                             1.06    230.5±1.44ms     2.3 GB/sec    1.00    217.5±1.15ms     2.4 GB/sec
list_primitive/parquet_2                           1.05    250.0±5.00ms     2.1 GB/sec    1.00    237.5±0.34ms     2.2 GB/sec
list_primitive/zstd                                1.00    470.2±1.85ms  1159.9 MB/sec    1.00    468.6±1.58ms  1163.7 MB/sec
list_primitive/zstd_parquet_2                      1.00    463.1±1.34ms  1177.7 MB/sec    1.00    461.4±0.38ms  1182.0 MB/sec
list_primitive_non_null/bloom_filter               1.02    433.5±8.94ms  1255.5 MB/sec    1.00    426.6±6.02ms  1275.8 MB/sec
list_primitive_non_null/cdc                        1.00    416.5±6.14ms  1306.8 MB/sec    1.00    417.5±9.00ms  1303.7 MB/sec
list_primitive_non_null/default                    1.05    301.5±4.14ms  1805.4 MB/sec    1.00    286.8±5.26ms  1897.6 MB/sec
list_primitive_non_null/parquet_2                  1.00    325.1±0.74ms  1674.0 MB/sec    1.00    324.0±0.63ms  1679.9 MB/sec
list_primitive_non_null/zstd                       1.02   726.2±12.74ms   749.4 MB/sec    1.00   708.7±16.17ms   768.0 MB/sec
list_primitive_non_null/zstd_parquet_2             1.03    704.2±1.67ms   772.8 MB/sec    1.00    683.7±7.51ms   796.0 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     12.8±0.04ms     2.9 GB/sec    1.00     12.8±0.04ms     2.9 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     24.4±0.04ms  1533.0 MB/sec    1.00     24.3±0.07ms  1539.6 MB/sec
list_primitive_sparse_99pct_null/default           1.00     12.4±0.04ms     3.0 GB/sec    1.00     12.4±0.04ms     2.9 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     12.4±0.04ms     3.0 GB/sec    1.00     12.4±0.04ms     2.9 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     14.2±0.04ms     2.6 GB/sec    1.00     14.3±0.03ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     12.5±0.04ms     2.9 GB/sec    1.00     12.5±0.04ms     2.9 GB/sec
list_struct_with_list/bloom_filter                 1.00    315.2±1.27ms   144.6 MB/sec    1.06    335.3±0.74ms   136.0 MB/sec
list_struct_with_list/cdc                          1.00    353.1±0.63ms   129.1 MB/sec    1.05    372.0±0.66ms   122.6 MB/sec
list_struct_with_list/default                      1.00    287.5±0.63ms   158.6 MB/sec    1.07    307.1±0.81ms   148.5 MB/sec
list_struct_with_list/parquet_2                    1.00    304.9±0.57ms   149.6 MB/sec    1.06    324.2±0.87ms   140.6 MB/sec
list_struct_with_list/zstd                         1.00    309.6±0.64ms   147.3 MB/sec    1.06    328.9±0.65ms   138.6 MB/sec
list_struct_with_list/zstd_parquet_2               1.00    328.8±0.64ms   138.7 MB/sec    1.06    348.0±0.69ms   131.0 MB/sec
primitive/bloom_filter                             1.00    150.9±0.66ms   297.3 MB/sec    1.00    150.6±0.42ms   297.9 MB/sec
primitive/cdc                                      1.00    160.9±0.59ms   278.9 MB/sec    1.00    161.0±0.53ms   278.8 MB/sec
primitive/default                                  1.00    119.1±0.50ms   376.8 MB/sec    1.00    119.4±0.30ms   375.9 MB/sec
primitive/parquet_2                                1.00    134.0±0.48ms   334.9 MB/sec    1.00    134.4±0.29ms   334.0 MB/sec
primitive/zstd                                     1.00    148.5±0.41ms   302.1 MB/sec    1.00    148.9±0.31ms   301.4 MB/sec
primitive/zstd_parquet_2                           1.00    167.2±0.46ms   268.4 MB/sec    1.00    167.7±0.34ms   267.6 MB/sec
primitive_all_null/bloom_filter                    1.00    935.5±3.46µs    46.8 GB/sec    1.00    932.9±3.42µs    47.0 GB/sec
primitive_all_null/cdc                             1.00     18.9±0.49ms     2.3 GB/sec    1.01     19.2±0.34ms     2.3 GB/sec
primitive_all_null/default                         1.00    311.7±1.46µs   140.6 GB/sec    1.00    311.3±1.08µs   140.8 GB/sec
primitive_all_null/parquet_2                       1.02    315.9±1.17µs   138.7 GB/sec    1.00    310.7±1.14µs   141.1 GB/sec
primitive_all_null/zstd                            1.00    433.1±1.60µs   101.2 GB/sec    1.00    432.3±1.44µs   101.4 GB/sec
primitive_all_null/zstd_parquet_2                  1.01    398.7±1.48µs   109.9 GB/sec    1.00    396.3±1.19µs   110.6 GB/sec
primitive_non_null/bloom_filter                    1.01    109.4±0.47ms   402.1 MB/sec    1.00    107.9±0.36ms   407.8 MB/sec
primitive_non_null/cdc                             1.00     91.3±0.28ms   481.9 MB/sec    1.00     90.9±0.28ms   484.2 MB/sec
primitive_non_null/default                         1.01     68.8±0.22ms   639.3 MB/sec    1.00     68.2±0.20ms   645.3 MB/sec
primitive_non_null/parquet_2                       1.01     90.6±0.19ms   485.8 MB/sec    1.00     89.9±0.13ms   489.2 MB/sec
primitive_non_null/zstd                            1.01     99.6±0.17ms   441.6 MB/sec    1.00     98.9±0.15ms   445.0 MB/sec
primitive_non_null/zstd_parquet_2                  1.01    124.4±0.26ms   353.7 MB/sec    1.00    123.5±0.14ms   356.4 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.02     12.9±0.07ms     3.4 GB/sec    1.00     12.7±0.07ms     3.5 GB/sec
primitive_sparse_99pct_null/cdc                    1.02     32.4±0.34ms  1387.0 MB/sec    1.00     31.6±0.25ms  1418.9 MB/sec
primitive_sparse_99pct_null/default                1.01     11.0±0.05ms     4.0 GB/sec    1.00     10.9±0.05ms     4.0 GB/sec
primitive_sparse_99pct_null/parquet_2              1.01     11.1±0.05ms     4.0 GB/sec    1.00     10.9±0.04ms     4.0 GB/sec
primitive_sparse_99pct_null/zstd                   1.01     14.5±0.04ms     3.0 GB/sec    1.00     14.4±0.04ms     3.0 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.01     13.0±0.05ms     3.4 GB/sec    1.00     12.9±0.05ms     3.4 GB/sec
short_string_non_null/bloom_filter                 1.00     27.6±0.06ms   434.4 MB/sec    1.02     28.1±0.07ms   427.0 MB/sec
short_string_non_null/cdc                          1.00     20.1±0.05ms   597.0 MB/sec    1.01     20.2±0.05ms   593.5 MB/sec
short_string_non_null/default                      1.00     16.0±0.05ms   748.0 MB/sec    1.00     16.1±0.04ms   745.4 MB/sec
short_string_non_null/parquet_2                    1.01     27.0±0.09ms   444.8 MB/sec    1.00     26.7±0.05ms   448.8 MB/sec
short_string_non_null/zstd                         1.00     35.6±0.14ms   336.9 MB/sec    1.00     35.6±0.08ms   337.1 MB/sec
short_string_non_null/zstd_parquet_2               1.00     29.6±0.07ms   405.2 MB/sec    1.00     29.5±0.05ms   406.7 MB/sec
string/bloom_filter                                1.03   225.5±19.16ms     2.3 GB/sec    1.00    218.7±2.78ms     2.3 GB/sec
string/cdc                                         1.00    223.1±7.07ms     2.3 GB/sec    1.01    225.1±7.38ms     2.3 GB/sec
string/default                                     1.11   136.6±20.04ms     3.7 GB/sec    1.00    123.3±2.11ms     4.2 GB/sec
string/parquet_2                                   1.00    131.2±1.65ms     3.9 GB/sec    1.01    132.3±0.94ms     3.9 GB/sec
string/zstd                                        1.08   463.6±24.02ms  1130.8 MB/sec    1.00    430.5±4.27ms  1217.7 MB/sec
string/zstd_parquet_2                              1.01    406.2±8.03ms  1290.5 MB/sec    1.00    403.4±1.24ms  1299.5 MB/sec
string_and_binary_view/bloom_filter                1.00     66.5±0.58ms   485.3 MB/sec    1.01     67.3±0.24ms   479.2 MB/sec
string_and_binary_view/cdc                         1.00     59.6±0.30ms   540.7 MB/sec    1.02     61.0±0.14ms   528.5 MB/sec
string_and_binary_view/default                     1.00     48.8±0.19ms   660.5 MB/sec    1.03     50.3±0.14ms   640.9 MB/sec
string_and_binary_view/parquet_2                   1.00     60.6±0.31ms   532.0 MB/sec    1.02     62.1±0.14ms   519.5 MB/sec
string_and_binary_view/zstd                        1.00     85.8±0.31ms   375.8 MB/sec    1.01     87.1±0.17ms   370.4 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     74.5±0.29ms   432.8 MB/sec    1.02     76.0±0.15ms   424.4 MB/sec
string_dictionary/bloom_filter                     1.00     94.2±1.49ms     2.7 GB/sec    1.02     96.4±1.26ms     2.7 GB/sec
string_dictionary/cdc                              1.00     53.2±1.29ms     4.9 GB/sec    1.07     57.1±0.60ms     4.5 GB/sec
string_dictionary/default                          1.00     49.1±1.64ms     5.3 GB/sec    1.01     49.5±1.51ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     55.1±0.20ms     4.7 GB/sec    1.01     55.6±0.18ms     4.6 GB/sec
string_dictionary/zstd                             1.00    209.9±1.79ms  1258.1 MB/sec    1.02    214.3±0.91ms  1232.3 MB/sec
string_dictionary/zstd_parquet_2                   1.00    200.4±0.38ms  1317.7 MB/sec    1.00    201.3±0.33ms  1312.1 MB/sec
string_non_null/bloom_filter                       1.00   266.2±21.74ms  1968.8 MB/sec    1.00   265.7±17.29ms  1972.2 MB/sec
string_non_null/cdc                                1.00    269.9±5.98ms  1941.4 MB/sec    1.03   276.7±10.30ms  1893.9 MB/sec
string_non_null/default                            1.00   139.1±20.83ms     3.7 GB/sec    1.02   142.0±13.11ms     3.6 GB/sec
string_non_null/parquet_2                          1.34   182.9±32.82ms     2.8 GB/sec    1.00    136.7±8.59ms     3.7 GB/sec
string_non_null/zstd                               1.06   577.9±17.62ms   906.7 MB/sec    1.00    543.0±2.41ms   965.1 MB/sec
string_non_null/zstd_parquet_2                     1.00    508.3±0.61ms  1030.9 MB/sec    1.01    511.6±0.79ms  1024.2 MB/sec
string_ree/bloom_filter                            1.00    155.2±1.91ms   105.7 MB/sec    1.02    158.3±1.84ms   103.7 MB/sec
string_ree/cdc                                     1.24    227.2±1.50ms    72.2 MB/sec    1.00    183.5±1.40ms    89.4 MB/sec
string_ree/default                                 1.00    128.0±1.69ms   128.2 MB/sec    1.01    129.5±1.78ms   126.7 MB/sec
string_ree/parquet_2                               1.00    175.3±0.42ms    93.6 MB/sec    1.03    179.7±0.70ms    91.3 MB/sec
string_ree/zstd                                    1.00    176.5±1.25ms    92.9 MB/sec    1.02    179.3±1.87ms    91.5 MB/sec
string_ree/zstd_parquet_2                          1.24    190.7±0.42ms    86.0 MB/sec    1.00   153.5±13.82ms   106.9 MB/sec
string_ree_95pct_null/bloom_filter                 1.00     26.6±0.04ms    52.9 MB/sec    1.00     26.7±0.05ms    52.7 MB/sec
string_ree_95pct_null/cdc                          1.00     32.6±0.07ms    43.1 MB/sec    1.01     33.0±0.07ms    42.6 MB/sec
string_ree_95pct_null/default                      1.00     24.9±0.03ms    56.4 MB/sec    1.01     25.1±0.04ms    56.1 MB/sec
string_ree_95pct_null/parquet_2                    1.00     25.0±0.04ms    56.4 MB/sec    1.01     25.1±0.07ms    56.0 MB/sec
string_ree_95pct_null/zstd                         1.00     25.8±0.04ms    54.5 MB/sec    1.01     26.0±0.04ms    54.0 MB/sec
string_ree_95pct_null/zstd_parquet_2               1.00     25.7±0.04ms    54.7 MB/sec    1.00     25.8±0.04ms    54.5 MB/sec
struct_all_null/bloom_filter                       1.00    388.1±1.47µs    40.6 GB/sec    1.00    389.1±2.31µs    40.5 GB/sec
struct_all_null/cdc                                1.00      7.7±0.12ms     2.1 GB/sec    1.00      7.7±0.07ms     2.1 GB/sec
struct_all_null/default                            1.00    132.3±0.59µs   119.0 GB/sec    1.02    135.0±0.53µs   116.7 GB/sec
struct_all_null/parquet_2                          1.01    135.7±0.51µs   116.0 GB/sec    1.00    135.0±0.57µs   116.7 GB/sec
struct_all_null/zstd                               1.00    183.9±0.68µs    85.6 GB/sec    1.01    186.0±0.45µs    84.7 GB/sec
struct_all_null/zstd_parquet_2                     1.00    171.3±0.52µs    91.9 GB/sec    1.00    170.6±0.61µs    92.3 GB/sec
struct_non_null/bloom_filter                       1.00     46.5±0.13ms   343.9 MB/sec    1.02     47.7±0.25ms   335.8 MB/sec
struct_non_null/cdc                                1.01     46.0±0.15ms   347.5 MB/sec    1.00     45.6±0.16ms   350.7 MB/sec
struct_non_null/default                            1.00     32.2±0.11ms   497.5 MB/sec    1.01     32.3±0.09ms   495.1 MB/sec
struct_non_null/parquet_2                          1.00     40.8±0.08ms   391.9 MB/sec    1.00     41.0±0.12ms   390.5 MB/sec
struct_non_null/zstd                               1.00     40.9±0.10ms   390.9 MB/sec    1.00     41.0±0.09ms   389.8 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.9±0.12ms   291.3 MB/sec    1.00     55.0±0.11ms   291.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      6.7±0.05ms     2.4 GB/sec    1.05      7.0±0.04ms     2.3 GB/sec
struct_sparse_99pct_null/cdc                       1.00     15.0±0.11ms  1077.8 MB/sec    1.01     15.1±0.07ms  1070.2 MB/sec
struct_sparse_99pct_null/default                   1.00      6.1±0.03ms     2.6 GB/sec    1.05      6.4±0.03ms     2.5 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.1±0.03ms     2.6 GB/sec    1.06      6.4±0.03ms     2.5 GB/sec
struct_sparse_99pct_null/zstd                      1.00      7.5±0.03ms     2.1 GB/sec    1.04      7.8±0.03ms     2.0 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      6.9±0.03ms     2.3 GB/sec    1.04      7.2±0.03ms     2.2 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2885.6s
Peak memory 2.8 GiB
Avg memory 2.5 GiB
CPU user 2768.9s
CPU sys 112.1s
Peak spill 0 B

branch

Metric Value
Wall time 2865.6s
Peak memory 2.8 GiB
Avg memory 2.5 GiB
CPU user 2764.2s
CPU sys 98.3s
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                                                                                                      main                                   unpadded_child_mode
-----                                                                                                      ----                                   -------------------
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.02   847.3±16.03µs        ? ?/sec    1.00    833.0±9.56µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00    950.9±7.73µs        ? ?/sec    1.00    947.4±4.18µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.00   852.5±16.01µs        ? ?/sec    1.00   852.4±15.41µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00    276.8±0.18µs        ? ?/sec    1.03    284.0±0.16µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00    387.0±1.89µs        ? ?/sec    1.01    392.7±0.67µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    269.0±0.21µs        ? ?/sec    1.07    287.6±0.56µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.03    413.9±3.79µs        ? ?/sec    1.00    402.0±4.41µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00    463.4±3.03µs        ? ?/sec    1.01    467.2±2.50µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.02    412.5±6.49µs        ? ?/sec    1.00    406.4±5.01µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.01     80.8±0.05µs        ? ?/sec    1.00     80.2±0.05µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.00    111.7±0.12µs        ? ?/sec    1.00    111.5±0.14µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.01     84.9±0.06µs        ? ?/sec    1.00     84.0±0.09µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00    146.3±0.69µs        ? ?/sec    1.00    146.8±0.71µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.07    150.9±2.17µs        ? ?/sec    1.00    141.5±0.47µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    148.6±0.67µs        ? ?/sec    1.00    148.8±0.46µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    151.5±0.28µs        ? ?/sec    1.00    151.9±0.56µs        ? ?/sec
arrow_array_reader/BooleanArray/plain encoded, mandatory, no NULLs                                         1.03    241.1±0.33µs        ? ?/sec    1.00    235.1±1.07µs        ? ?/sec
arrow_array_reader/BooleanArray/plain encoded, optional, half NULLs                                        1.03    254.7±1.78µs        ? ?/sec    1.00    247.8±1.32µs        ? ?/sec
arrow_array_reader/BooleanArray/plain encoded, optional, no NULLs                                          1.03    245.1±0.41µs        ? ?/sec    1.00    238.4±1.45µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.13  1089.3±13.38µs        ? ?/sec    1.00    960.6±0.78µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.01    672.4±0.49µs        ? ?/sec    1.00    665.3±0.72µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.00    967.6±0.68µs        ? ?/sec    1.00    964.5±0.73µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.03    188.5±0.20µs        ? ?/sec    1.00    182.7±0.29µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.02    294.5±0.59µs        ? ?/sec    1.00    288.3±0.44µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.03    193.4±0.30µs        ? ?/sec    1.00    188.5±0.32µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.00    129.7±0.30µs        ? ?/sec    1.00    130.3±0.22µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.01    184.4±1.31µs        ? ?/sec    1.00    182.9±0.14µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.00    131.6±0.33µs        ? ?/sec    1.02    134.1±1.30µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.03     61.1±0.09µs        ? ?/sec    1.00     59.2±0.05µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.01    148.2±0.16µs        ? ?/sec    1.00    146.0±0.08µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.01     63.9±0.12µs        ? ?/sec    1.00     63.0±0.06µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.00    800.6±0.75µs        ? ?/sec    1.00    801.3±0.47µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.01    510.9±0.50µs        ? ?/sec    1.00    507.9±0.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.00    803.3±0.50µs        ? ?/sec    1.00    806.5±2.44µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.00     23.2±0.09µs        ? ?/sec    1.04     24.1±0.06µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.02    132.0±0.12µs        ? ?/sec    1.00    130.1±0.17µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     27.4±0.03µs        ? ?/sec    1.02     28.0±0.08µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.00     74.2±0.20µs        ? ?/sec    1.00     74.4±0.25µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00    128.9±0.26µs        ? ?/sec    1.00    129.1±0.16µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.00     76.9±0.26µs        ? ?/sec    1.04     80.1±0.27µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.00      5.3±0.01µs        ? ?/sec    1.02      5.4±0.04µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.02     94.1±0.05µs        ? ?/sec    1.00     92.6±0.14µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.00      8.9±0.01µs        ? ?/sec    1.01      9.0±0.04µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.00    147.6±0.39µs        ? ?/sec    1.02    150.5±0.35µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00    197.3±0.22µs        ? ?/sec    1.01    199.8±0.19µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.00    147.9±0.54µs        ? ?/sec    1.02    151.4±1.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.00      7.4±0.01µs        ? ?/sec    1.03      7.6±0.05µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00    127.4±0.08µs        ? ?/sec    1.00    126.9±0.12µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.00     10.9±0.01µs        ? ?/sec    1.02     11.1±0.04µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.00    298.6±0.93µs        ? ?/sec    1.00    299.9±0.98µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.00    268.8±0.52µs        ? ?/sec    1.00    269.8±0.33µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.00    303.4±0.80µs        ? ?/sec    1.02    309.2±0.71µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     12.0±0.02µs        ? ?/sec    1.01     12.1±0.05µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.02    125.3±0.11µs        ? ?/sec    1.00    123.1±0.14µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.00     15.6±0.01µs        ? ?/sec    1.01     15.8±0.05µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed increasing value                                    1.01     87.4±0.60µs        ? ?/sec    1.00     86.9±0.45µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed single value                                        1.01     79.4±0.56µs        ? ?/sec    1.00     78.9±0.44µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip increasing value                               1.00     50.6±0.27µs        ? ?/sec    1.00     50.6±0.16µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip single value                                   1.00     46.4±0.32µs        ? ?/sec    1.00     46.4±0.22µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip stepped increasing value                       1.00     74.1±0.20µs        ? ?/sec    1.01     75.1±0.60µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00     88.8±0.25µs        ? ?/sec    1.00     88.5±0.24µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00     90.0±0.23µs        ? ?/sec    1.00     89.7±0.11µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00     90.8±0.25µs        ? ?/sec    1.00     90.4±0.22µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed stepped increasing value                            1.00    106.9±0.11µs        ? ?/sec    1.01    107.5±0.66µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    124.8±0.59µs        ? ?/sec    1.01    125.5±0.22µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    148.0±0.34µs        ? ?/sec    1.00    147.9±0.17µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.00    128.6±0.58µs        ? ?/sec    1.00    128.9±0.37µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     54.0±0.26µs        ? ?/sec    1.00     54.0±0.05µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    110.8±0.14µs        ? ?/sec    1.01    111.6±0.11µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     57.9±0.08µs        ? ?/sec    1.00     57.7±0.04µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.01     85.0±0.08µs        ? ?/sec    1.00     84.3±0.05µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    128.7±0.14µs        ? ?/sec    1.00    128.9±0.09µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.01     88.7±0.06µs        ? ?/sec    1.00     87.9±0.06µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     48.7±0.10µs        ? ?/sec    1.00     48.8±0.04µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.00    107.4±0.12µs        ? ?/sec    1.01    108.4±0.10µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.00     50.7±0.07µs        ? ?/sec    1.01     51.3±0.20µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed increasing value                                    1.00     78.5±0.17µs        ? ?/sec    1.00     78.5±0.16µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed single value                                        1.00     74.8±0.09µs        ? ?/sec    1.00     74.8±0.24µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip increasing value                               1.01     43.8±0.10µs        ? ?/sec    1.00     43.6±0.09µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip single value                                   1.00     41.7±0.07µs        ? ?/sec    1.01     41.9±0.08µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip stepped increasing value                       1.00     67.6±0.12µs        ? ?/sec    1.00     67.7±0.08µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00     79.5±0.10µs        ? ?/sec    1.00     79.5±0.09µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00     86.0±0.06µs        ? ?/sec    1.01     86.6±0.08µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00     81.7±0.12µs        ? ?/sec    1.00     81.8±0.07µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed stepped increasing value                            1.00    100.0±0.14µs        ? ?/sec    1.00    100.2±0.83µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    115.0±0.31µs        ? ?/sec    1.00    114.5±0.15µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.00    143.7±0.12µs        ? ?/sec    1.01    144.6±0.12µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.01    119.2±0.17µs        ? ?/sec    1.00    118.0±0.12µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     83.0±0.08µs        ? ?/sec    1.00     83.0±0.07µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    127.7±0.23µs        ? ?/sec    1.01    128.4±0.31µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.01     87.9±0.08µs        ? ?/sec    1.00     87.3±0.21µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.01     87.1±0.11µs        ? ?/sec    1.00     86.5±0.07µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    131.0±0.13µs        ? ?/sec    1.01    132.1±0.20µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.01     91.3±0.08µs        ? ?/sec    1.00     90.7±0.10µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     54.0±0.12µs        ? ?/sec    1.01     54.4±0.05µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.00    112.8±0.09µs        ? ?/sec    1.00    113.0±0.14µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.01     58.6±0.07µs        ? ?/sec    1.00     58.0±0.08µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed increasing value                                               1.00     53.7±0.53µs        ? ?/sec    1.01     54.3±0.51µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed single value                                                   1.00     45.2±0.38µs        ? ?/sec    1.00     45.4±0.40µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip increasing value                                          1.00     33.5±0.29µs        ? ?/sec    1.00     33.5±0.20µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip single value                                              1.00     28.8±0.20µs        ? ?/sec    1.00     28.9±0.24µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip stepped increasing value                                  1.00     56.8±0.06µs        ? ?/sec    1.01     57.1±0.03µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.00     71.0±0.26µs        ? ?/sec    1.01     71.4±0.06µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00     72.4±0.21µs        ? ?/sec    1.00     72.5±0.06µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     73.0±0.25µs        ? ?/sec    1.01     73.5±0.07µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed stepped increasing value                                       1.00     73.4±0.10µs        ? ?/sec    1.00     73.5±0.13µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.00     90.6±0.58µs        ? ?/sec    1.01     91.7±0.37µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.00    113.0±0.35µs        ? ?/sec    1.01    114.0±0.19µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.00     94.1±0.64µs        ? ?/sec    1.01     95.3±0.35µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     21.1±0.05µs        ? ?/sec    1.00     21.0±0.03µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.00     77.4±0.09µs        ? ?/sec    1.01     78.0±0.08µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.00     24.7±0.03µs        ? ?/sec    1.01     25.0±0.04µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.00     51.6±0.06µs        ? ?/sec    1.00     51.6±0.05µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.00     95.3±0.07µs        ? ?/sec    1.01     96.1±0.13µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.00     55.3±0.04µs        ? ?/sec    1.00     55.3±0.03µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     13.9±0.03µs        ? ?/sec    1.00     13.9±0.04µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.00     74.1±0.10µs        ? ?/sec    1.02     75.4±0.09µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.01     17.8±0.03µs        ? ?/sec    1.00     17.7±0.03µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed increasing value                                               1.00     50.4±0.71µs        ? ?/sec    1.00     50.3±0.63µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed single value                                                   1.01     42.1±0.74µs        ? ?/sec    1.00     41.8±0.43µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip increasing value                                          1.00     31.8±0.30µs        ? ?/sec    1.01     31.9±0.19µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip single value                                              1.01     27.3±0.41µs        ? ?/sec    1.00     27.0±0.23µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip stepped increasing value                                  1.00     55.0±0.05µs        ? ?/sec    1.00     55.1±0.05µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     69.7±0.27µs        ? ?/sec    1.00     69.6±0.21µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00     71.3±0.19µs        ? ?/sec    1.01     71.9±0.12µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     71.9±0.26µs        ? ?/sec    1.00     71.8±0.12µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed stepped increasing value                                       1.00     70.1±0.17µs        ? ?/sec    1.00     69.9±0.12µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00     87.4±0.62µs        ? ?/sec    1.01     88.6±0.39µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    111.2±0.31µs        ? ?/sec    1.01    111.9±0.27µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00     91.7±0.61µs        ? ?/sec    1.01     92.4±0.39µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     17.5±0.04µs        ? ?/sec    1.00     17.4±0.01µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00     75.1±0.10µs        ? ?/sec    1.00     75.2±0.17µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     21.1±0.02µs        ? ?/sec    1.00     21.1±0.04µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.01     47.9±0.04µs        ? ?/sec    1.00     47.6±0.03µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.00     92.2±0.08µs        ? ?/sec    1.01     93.1±0.18µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.01     52.0±0.08µs        ? ?/sec    1.00     51.6±0.03µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     10.0±0.02µs        ? ?/sec    1.01     10.1±0.02µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.01     71.9±0.09µs        ? ?/sec    1.00     71.4±0.07µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     13.8±0.02µs        ? ?/sec    1.00     13.7±0.04µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed increasing value                                               1.00     41.6±0.11µs        ? ?/sec    1.00     41.5±0.13µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed single value                                                   1.01     38.0±0.08µs        ? ?/sec    1.00     37.7±0.07µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip increasing value                                          1.00     24.7±0.08µs        ? ?/sec    1.00     24.7±0.09µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip single value                                              1.00     23.0±0.08µs        ? ?/sec    1.00     23.1±0.07µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip stepped increasing value                                  1.00     48.4±0.07µs        ? ?/sec    1.00     48.5±0.13µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     60.6±0.08µs        ? ?/sec    1.00     60.7±0.08µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.00     66.9±0.11µs        ? ?/sec    1.01     67.3±0.05µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.00     62.7±0.08µs        ? ?/sec    1.00     62.6±0.08µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed stepped increasing value                                       1.00     62.6±0.14µs        ? ?/sec    1.00     62.7±0.17µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00     77.3±0.16µs        ? ?/sec    1.00     77.6±0.15µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    106.4±0.14µs        ? ?/sec    1.01    107.9±0.13µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00     81.5±0.11µs        ? ?/sec    1.00     81.7±0.10µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     45.8±0.04µs        ? ?/sec    1.01     46.5±0.04µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00     90.4±0.19µs        ? ?/sec    1.01     91.7±0.11µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00     49.9±0.05µs        ? ?/sec    1.02     50.8±0.09µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     50.2±0.11µs        ? ?/sec    1.00     50.3±0.16µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00     93.8±0.07µs        ? ?/sec    1.01     94.5±0.10µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.01     54.2±0.08µs        ? ?/sec    1.00     53.6±0.08µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.00     16.4±0.03µs        ? ?/sec    1.01     16.6±0.04µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00     75.9±0.12µs        ? ?/sec    1.02     77.2±0.12µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.00     20.0±0.02µs        ? ?/sec    1.01     20.2±0.03µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed increasing value                                                1.00     53.8±0.58µs        ? ?/sec    1.00     53.7±0.48µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed single value                                                    1.00     45.6±0.53µs        ? ?/sec    1.00     45.6±0.56µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip increasing value                                           1.00     33.4±0.22µs        ? ?/sec    1.00     33.5±0.18µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip single value                                               1.00     29.0±0.29µs        ? ?/sec    1.00     29.0±0.35µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip stepped increasing value                                   1.00     56.7±0.07µs        ? ?/sec    1.00     56.9±0.03µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.00     70.6±0.26µs        ? ?/sec    1.01     71.1±0.14µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.00     72.1±0.15µs        ? ?/sec    1.00     72.2±0.06µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     72.8±0.25µs        ? ?/sec    1.00     72.8±0.11µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed stepped increasing value                                        1.00     73.5±0.11µs        ? ?/sec    1.00     73.2±0.14µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.00     90.0±0.55µs        ? ?/sec    1.02     91.6±0.08µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    113.0±0.32µs        ? ?/sec    1.00    113.6±0.10µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.00     93.4±0.53µs        ? ?/sec    1.02     95.1±0.12µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     20.8±0.03µs        ? ?/sec    1.00     20.9±0.04µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.00     77.7±0.11µs        ? ?/sec    1.00     78.0±0.09µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     24.5±0.03µs        ? ?/sec    1.00     24.6±0.02µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.00     51.3±0.05µs        ? ?/sec    1.00     51.3±0.06µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.00     95.4±0.14µs        ? ?/sec    1.00     95.1±0.09µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.00     55.1±0.08µs        ? ?/sec    1.00     55.1±0.03µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     13.8±0.03µs        ? ?/sec    1.00     13.8±0.04µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.00     74.1±0.09µs        ? ?/sec    1.01     75.1±0.11µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.00     17.7±0.03µs        ? ?/sec    1.01     17.9±0.02µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/90pct NULLs                                                       1.14   1052.3±5.11µs        ? ?/sec    1.00    920.5±4.44µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/99pct NULLs                                                       1.09    490.6±2.36µs        ? ?/sec    1.00   451.5±17.68µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/half NULLs                                                        1.19      2.7±0.01ms        ? ?/sec    1.00      2.3±0.03ms        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/no NULLs                                                          1.40      4.3±0.02ms        ? ?/sec    1.00      3.1±0.06ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/90pct NULLs                                                         1.08    988.8±2.49µs        ? ?/sec    1.00    912.1±3.96µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/99pct NULLs                                                         1.00    444.7±1.17µs        ? ?/sec    1.01   451.3±17.78µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/half NULLs                                                          1.09      2.2±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/no NULLs                                                            1.07      3.0±0.02ms        ? ?/sec    1.00      2.8±0.01ms        ? ?/sec
arrow_array_reader/ListArray/StringList/90pct NULLs                                                        1.16   1131.8±2.59µs        ? ?/sec    1.00    973.7±3.96µs        ? ?/sec
arrow_array_reader/ListArray/StringList/99pct NULLs                                                        1.00    456.8±1.84µs        ? ?/sec    1.00   455.3±18.04µs        ? ?/sec
arrow_array_reader/ListArray/StringList/half NULLs                                                         1.29      4.0±0.01ms        ? ?/sec    1.00      3.1±0.04ms        ? ?/sec
arrow_array_reader/ListArray/StringList/no NULLs                                                           1.43      7.1±0.03ms        ? ?/sec    1.00      5.0±0.07ms        ? ?/sec
arrow_array_reader/StringArray/const delta byte array encoded, mandatory, no NULLs                         1.02    538.8±4.87µs        ? ?/sec    1.00    528.3±1.94µs        ? ?/sec
arrow_array_reader/StringArray/const delta length byte array encoded, mandatory, no NULLs                  1.00    213.9±3.46µs        ? ?/sec    1.01    216.3±0.84µs        ? ?/sec
arrow_array_reader/StringArray/const prefix delta byte array encoded, mandatory, no NULLs                  1.00   751.2±47.59µs        ? ?/sec    1.03   776.0±42.23µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00    276.1±0.17µs        ? ?/sec    1.00    275.9±0.17µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00    386.4±0.68µs        ? ?/sec    1.00    386.3±0.70µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00    279.8±0.17µs        ? ?/sec    1.03    286.8±0.35µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.00    454.0±5.44µs        ? ?/sec    1.00    453.3±4.32µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00    490.0±3.52µs        ? ?/sec    1.00    491.1±2.67µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.00    458.1±7.37µs        ? ?/sec    1.00    456.4±5.72µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.07    266.3±0.64µs        ? ?/sec    1.00    248.2±0.52µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.05    278.7±0.39µs        ? ?/sec    1.00    265.5±0.68µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.07    269.7±0.31µs        ? ?/sec    1.00    252.1±0.51µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.01     81.0±0.07µs        ? ?/sec    1.00     80.4±0.12µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.00    112.1±0.28µs        ? ?/sec    1.00    112.1±0.14µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.01     85.0±0.21µs        ? ?/sec    1.00     84.0±0.05µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.00    218.8±0.36µs        ? ?/sec    1.00    219.3±0.62µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.00    185.8±0.25µs        ? ?/sec    1.00    186.5±0.36µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.00    227.9±0.36µs        ? ?/sec    1.00    227.3±0.47µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed increasing value                                              1.00     53.7±0.61µs        ? ?/sec    1.00     53.9±0.58µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed single value                                                  1.01     45.7±0.56µs        ? ?/sec    1.00     45.4±0.38µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip increasing value                                         1.00     33.4±0.21µs        ? ?/sec    1.00     33.5±0.20µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip single value                                             1.01     29.1±0.26µs        ? ?/sec    1.00     28.8±0.23µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip stepped increasing value                                 1.00     57.1±0.06µs        ? ?/sec    1.00     56.8±0.05µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     74.0±0.10µs        ? ?/sec    1.01     74.9±0.07µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.00     74.4±0.15µs        ? ?/sec    1.00     74.7±0.05µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.00     76.3±0.12µs        ? ?/sec    1.01     76.7±0.10µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed stepped increasing value                                      1.00     73.7±0.11µs        ? ?/sec    1.00     73.6±0.12µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00     93.5±0.23µs        ? ?/sec    1.04     97.4±0.13µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    115.6±0.17µs        ? ?/sec    1.02    118.0±0.12µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00     97.3±0.19µs        ? ?/sec    1.04    101.0±0.14µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     21.0±0.03µs        ? ?/sec    1.00     21.0±0.03µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00     77.5±0.12µs        ? ?/sec    1.01     78.0±0.09µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.00     24.6±0.03µs        ? ?/sec    1.01     24.8±0.02µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.01     51.8±0.10µs        ? ?/sec    1.00     51.4±0.05µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.00     95.5±0.13µs        ? ?/sec    1.00     96.0±0.10µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.00     55.4±0.06µs        ? ?/sec    1.00     55.2±0.06µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     13.7±0.03µs        ? ?/sec    1.02     14.0±0.05µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.00     74.5±0.13µs        ? ?/sec    1.01     75.1±0.16µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     17.8±0.03µs        ? ?/sec    1.00     17.8±0.06µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed increasing value                                              1.00     50.3±0.42µs        ? ?/sec    1.00     50.5±0.57µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed single value                                                  1.00     42.4±0.38µs        ? ?/sec    1.00     42.3±0.40µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip increasing value                                         1.00     31.6±0.20µs        ? ?/sec    1.01     32.1±0.20µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip single value                                             1.01     27.3±0.22µs        ? ?/sec    1.00     27.1±0.24µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip stepped increasing value                                 1.00     55.1±0.04µs        ? ?/sec    1.00     55.1±0.05µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     69.9±0.26µs        ? ?/sec    1.00     69.9±0.08µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00     71.0±0.15µs        ? ?/sec    1.01     71.5±0.07µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     72.0±0.27µs        ? ?/sec    1.00     71.7±0.10µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed stepped increasing value                                      1.00     70.0±0.10µs        ? ?/sec    1.00     70.2±0.14µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00     87.7±0.66µs        ? ?/sec    1.01     88.6±0.40µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    111.1±0.42µs        ? ?/sec    1.01    112.2±0.16µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00     92.0±0.64µs        ? ?/sec    1.00     92.5±0.39µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     17.7±0.04µs        ? ?/sec    1.00     17.6±0.02µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.00     74.5±0.14µs        ? ?/sec    1.01     74.9±0.08µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.01     21.2±0.04µs        ? ?/sec    1.00     21.0±0.02µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.00     48.2±0.04µs        ? ?/sec    1.00     48.0±0.07µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.00     91.8±0.10µs        ? ?/sec    1.01     92.4±0.11µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.01     52.0±0.05µs        ? ?/sec    1.00     51.6±0.06µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.00     10.3±0.05µs        ? ?/sec    1.00     10.3±0.03µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.00     71.5±0.08µs        ? ?/sec    1.01     72.5±0.08µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.00     13.9±0.07µs        ? ?/sec    1.01     14.0±0.03µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed increasing value                                              1.00     41.8±0.13µs        ? ?/sec    1.00     41.7±0.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed single value                                                  1.00     38.2±0.06µs        ? ?/sec    1.00     38.1±0.06µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip increasing value                                         1.00     25.0±0.07µs        ? ?/sec    1.00     25.1±0.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip single value                                             1.00     23.1±0.08µs        ? ?/sec    1.00     23.2±0.05µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip stepped increasing value                                 1.00     48.6±0.06µs        ? ?/sec    1.00     48.6±0.07µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.00     60.4±0.09µs        ? ?/sec    1.00     60.6±0.06µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.00     67.1±0.06µs        ? ?/sec    1.01     67.6±0.05µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.00     62.6±0.09µs        ? ?/sec    1.00     62.6±0.07µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed stepped increasing value                                      1.00     62.9±0.14µs        ? ?/sec    1.00     62.9±0.19µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.00     77.5±0.17µs        ? ?/sec    1.00     77.5±0.17µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    106.8±0.14µs        ? ?/sec    1.01    107.6±0.22µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00     81.5±0.12µs        ? ?/sec    1.00     81.4±0.17µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     45.6±0.06µs        ? ?/sec    1.02     46.4±0.03µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00     90.3±0.12µs        ? ?/sec    1.01     91.0±0.09µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00     49.8±0.03µs        ? ?/sec    1.02     50.7±0.03µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     50.2±0.04µs        ? ?/sec    1.00     50.1±0.02µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00     93.4±0.10µs        ? ?/sec    1.01     94.5±0.13µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     53.9±0.04µs        ? ?/sec    1.00     53.6±0.04µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.00     16.6±0.03µs        ? ?/sec    1.00     16.5±0.05µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.00     76.4±0.10µs        ? ?/sec    1.00     76.6±0.16µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.00     20.2±0.03µs        ? ?/sec    1.01     20.3±0.09µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed increasing value                                               1.00     53.7±0.57µs        ? ?/sec    1.00     53.7±0.54µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed single value                                                   1.00     45.5±0.70µs        ? ?/sec    1.00     45.6±0.58µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip increasing value                                          1.00     33.5±0.22µs        ? ?/sec    1.00     33.4±0.18µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip single value                                              1.00     28.9±0.36µs        ? ?/sec    1.00     29.0±0.35µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip stepped increasing value                                  1.00     56.7±0.06µs        ? ?/sec    1.00     56.8±0.05µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     73.3±0.20µs        ? ?/sec    1.01     74.3±0.11µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00     73.9±0.14µs        ? ?/sec    1.01     75.0±0.15µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.00     75.7±0.18µs        ? ?/sec    1.01     76.5±0.08µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed stepped increasing value                                       1.00     73.3±0.07µs        ? ?/sec    1.00     73.2±0.13µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00     92.8±0.43µs        ? ?/sec    1.04     96.6±0.12µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    115.1±0.20µs        ? ?/sec    1.02    117.1±0.17µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00     96.7±0.38µs        ? ?/sec    1.04    100.4±0.13µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     20.7±0.03µs        ? ?/sec    1.01     20.8±0.04µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.00     78.0±0.14µs        ? ?/sec    1.00     78.0±0.16µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.00     24.7±0.02µs        ? ?/sec    1.00     24.5±0.03µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.00     51.2±0.04µs        ? ?/sec    1.00     51.1±0.05µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.00     95.2±0.14µs        ? ?/sec    1.00     95.5±0.16µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.00     55.2±0.04µs        ? ?/sec    1.00     55.0±0.06µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.00     13.7±0.03µs        ? ?/sec    1.01     13.8±0.04µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.00     74.6±0.13µs        ? ?/sec    1.01     75.5±0.07µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     17.6±0.03µs        ? ?/sec    1.01     17.8±0.03µs        ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, mandatory struct, optional data, half NULLs            1.00     71.9±0.06µs        ? ?/sec    1.00     71.8±0.07µs        ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, mandatory struct, optional data, no NULLs              1.00     13.8±0.02µs        ? ?/sec    1.01     13.9±0.02µs        ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, optional struct, optional data, half NULLs             1.01    134.0±0.33µs        ? ?/sec    1.00    132.6±0.18µs        ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, optional struct, optional data, no NULLs               1.00     65.1±0.05µs        ? ?/sec    1.00     65.3±0.05µs        ? ?/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2950.6s
Peak memory 71.1 MiB
Avg memory 23.4 MiB
CPU user 2947.7s
CPU sys 0.6s
Peak spill 0 B

branch

Metric Value
Wall time 2940.6s
Peak memory 65.2 MiB
Avg memory 20.6 MiB
CPU user 2938.0s
CPU sys 0.6s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Performance looks good to me!

I agree that the performance benchmarks are not as consistent as I would like 😢

group                                                                                                      main                                   unpadded_child_mode
-----                                                                                                      ----                                   -------------------
arrow_array_reader/ListArray/Fixed32List/90pct NULLs                                                       1.14   1052.3±5.11µs        ? ?/sec    1.00    920.5±4.44µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/99pct NULLs                                                       1.09    490.6±2.36µs        ? ?/sec    1.00   451.5±17.68µs        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/half NULLs                                                        1.19      2.7±0.01ms        ? ?/sec    1.00      2.3±0.03ms        ? ?/sec
arrow_array_reader/ListArray/Fixed32List/no NULLs                                                          1.40      4.3±0.02ms        ? ?/sec    1.00      3.1±0.06ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/90pct NULLs                                                         1.08    988.8±2.49µs        ? ?/sec    1.00    912.1±3.96µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/99pct NULLs                                                         1.00    444.7±1.17µs        ? ?/sec    1.01   451.3±17.78µs        ? ?/sec
arrow_array_reader/ListArray/Int32List/half NULLs                                                          1.09      2.2±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
arrow_array_reader/ListArray/Int32List/no NULLs                                                            1.07      3.0±0.02ms        ? ?/sec    1.00      2.8±0.01ms        ? ?/sec
arrow_array_reader/ListArray/StringList/90pct NULLs                                                        1.16   1131.8±2.59µs        ? ?/sec    1.00    973.7±3.96µs        ? ?/sec
arrow_array_reader/ListArray/StringList/99pct NULLs                                                        1.00    456.8±1.84µs        ? ?/sec    1.00   455.3±18.04µs        ? ?/sec
arrow_array_reader/ListArray/StringList/half NULLs                                                         1.29      4.0±0.01ms        ? ?/sec    1.00      3.1±0.04ms        ? ?/sec
arrow_array_reader/ListArray/StringList/no NULLs                                                           1.43      7.1±0.03ms        ? ?/sec    1.00      5.0±0.07ms        ? ?/sec
ar

@alamb alamb merged commit a2bb4c9 into apache:main Jul 2, 2026
32 checks passed
@alamb

alamb commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Thanks again @HippoBaro

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

Labels

arrow Changes to the arrow crate parquet Changes to the parquet crate performance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants