Skip to content

[Parquet] perf: Create Utf8/BinaryViewArray directly rather than via ArrayData - #9121

Merged
alamb merged 7 commits into
apache:mainfrom
alamb:alamb/less_parquet_view_allocations
Jan 17, 2026
Merged

alamb merged 7 commits into
apache:mainfrom
alamb:alamb/less_parquet_view_allocations

Conversation

@alamb

@alamb alamb commented Jan 9, 2026 •

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

Creating Arrays via ArrayData / make_array has overhead (at least 2 Vec allocations) compared to simply creating the arrays directly

ViewArrays also have an extra Vec allocation (to hold their buffers)

What changes are included in this PR?

Update the parquet reader to create ViewArrays directly

Are these changes tested?

By CI

Are there any user-facing changes?

@github-actions github-actions Bot added the parquet Changes to the parquet crate label Jan 9, 2026
pub fn into_array(self, null_buffer: Option<Buffer>, data_type: &ArrowType) -> ArrayRef {
let len = self.views.len();
let views = Buffer::from_vec(self.views);
let views = ScalarBuffer::from(self.views);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The new formulation is simpler too, which is a nice side effect

@alamb

This comment was marked as outdated.

@alamb
alamb marked this pull request as ready for review January 9, 2026 15:19
@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb
alamb marked this pull request as draft January 10, 2026 12:11
@alamb

alamb commented Jan 10, 2026

Copy link
Copy Markdown
Contributor Author

run benchmark arrow_reader

@alamb

alamb commented Jan 10, 2026

Copy link
Copy Markdown
Contributor Author

This appears to show reading StringView getting slower. I will try and reproduce

@alamb-ghbot

Copy link
Copy Markdown

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (2ed62c2) to 96637fc diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot

This comment was marked as outdated.

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

LGTM!

@alamb
alamb marked this pull request as ready for review January 13, 2026 12:17
@alamb

alamb commented Jan 13, 2026

Copy link
Copy Markdown
Contributor Author

🤔 looks like this maybe made things slower -- will investigate

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----

arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    247.2±3.07µs        ? ?/sec    1.05    259.0±3.79µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.08    248.4±3.81µs        ? ?/sec    1.00    229.5±2.43µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    256.8±5.74µs        ? ?/sec    1.00    256.0±3.58µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.27    370.5±3.94µs        ? ?/sec    1.00    292.5±1.63µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.13    345.4±3.14µs        ? ?/sec    1.00    305.8±1.22µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.20    319.2±7.52µs        ? ?/sec    1.00    265.4±1.64µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.25    378.6±4.48µs        ? ?/sec    1.00    301.7±5.25µs        ? ?/sec

...

arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    252.8±3.56µs        ? ?/sec    1.03    261.6±5.36µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.09    251.1±2.55µs        ? ?/sec    1.00    229.8±1.92µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    256.7±3.02µs        ? ?/sec    1.00    256.1±2.58µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.13    500.0±7.89µs        ? ?/sec    1.00    444.1±2.78µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.15   386.8±22.22µs        ? ?/sec    1.00    337.2±3.66µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.12    508.2±8.79µs        ? ?/sec    1.00   453.9±10.55µs        ? ?/sec

@alamb
alamb marked this pull request as draft January 13, 2026 12:21
@alamb

alamb commented Jan 13, 2026

Copy link
Copy Markdown
Contributor Author

I could not reproduce the benchmark results locally

     Running benches/arrow_reader.rs (target/release/deps/arrow_reader-0c5ec49ee5cbea6a)
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string
                        time:   [160.36 µs 160.64 µs 161.02 µs]
                        change: [−0.4158% −0.0942% +0.2111%] (p = 0.56 > 0.05)
                        No change in performance detected.
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs
                        time:   [147.70 µs 148.37 µs 149.07 µs]
                        change: [+0.7348% +1.2863% +1.8236%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 25 outliers among 100 measurements (25.00%)
  19 (19.00%) low mild
  4 (4.00%) high mild
  2 (2.00%) high severe
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs
                        time:   [147.02 µs 147.41 µs 147.88 µs]
                        change: [−1.3623% −0.8303% −0.2939%] (p = 0.00 < 0.05)
                        Change within noise threshold.
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs
                        time:   [142.34 µs 142.93 µs 143.58 µs]
                        change: [−1.6259% −0.8845% −0.2890%] (p = 0.01 < 0.05)
                        Change within noise threshold.
Found 24 outliers among 100 measurements (24.00%)
  9 (9.00%) low severe
  2 (2.00%) low mild
  6 (6.00%) high mild
  7 (7.00%) high severe

However, note the number of outliers found

I will see if the benchmark needs adjusting (perhaps with more rows, etc)

@alamb

This comment was marked as outdated.

1 similar comment
@alamb

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb
alamb marked this pull request as ready for review January 15, 2026 12:17
@alamb-ghbot

This comment was marked as outdated.

let views = ScalarBuffer::from(self.views);
let nulls = null_buffer
.map(|b| NullBuffer::new(BooleanBuffer::new(b, 0, len)))
.filter(|n| n.null_count() != 0);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@alamb-ghbot

Copy link
Copy Markdown

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.00   1007.2±6.04µs        ? ?/sec    1.00   1007.4±5.46µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00   1241.8±5.22µs        ? ?/sec    1.02  1261.2±11.51µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.00  1014.6±14.09µs        ? ?/sec    1.00  1017.6±19.81µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00   502.1±29.06µs        ? ?/sec    1.01    509.2±3.22µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00   661.4±17.65µs        ? ?/sec    1.06    699.8±6.51µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    488.9±8.17µs        ? ?/sec    1.06    518.9±3.66µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.00    549.0±3.28µs        ? ?/sec    1.01    553.7±6.72µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00    723.1±6.29µs        ? ?/sec    1.04   749.7±20.46µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.01   563.1±28.07µs        ? ?/sec    1.00    558.0±4.11µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    280.1±2.11µs        ? ?/sec    1.00    277.4±3.74µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.10    262.1±5.11µs        ? ?/sec    1.00    239.2±3.27µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    276.9±2.46µs        ? ?/sec    1.03   286.4±26.14µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00    350.1±1.87µs        ? ?/sec    1.07    374.6±6.98µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    344.7±4.78µs        ? ?/sec    1.01    348.5±2.09µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.05    313.8±3.08µs        ? ?/sec    1.00    299.5±3.04µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    358.1±3.96µs        ? ?/sec    1.06    380.8±2.87µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.06   972.6±13.08µs        ? ?/sec    1.00    917.6±8.06µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.09    824.5±3.74µs        ? ?/sec    1.00    759.0±8.68µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.06    978.1±7.28µs        ? ?/sec    1.00    926.8±9.95µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.00    295.1±2.98µs        ? ?/sec    1.02    300.0±8.43µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.07    487.6±3.97µs        ? ?/sec    1.00    455.7±2.79µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.00    304.2±8.06µs        ? ?/sec    1.01    307.2±7.12µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.04    202.6±1.49µs        ? ?/sec    1.00    195.4±3.97µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    319.4±1.42µs        ? ?/sec    1.06    337.6±1.52µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.04    208.4±1.39µs        ? ?/sec    1.00    200.3±1.11µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00    118.2±0.40µs        ? ?/sec    1.00    117.7±2.54µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    275.9±1.37µs        ? ?/sec    1.09    299.5±5.86µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.01    124.7±0.98µs        ? ?/sec    1.00    123.1±2.46µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    736.7±4.04µs        ? ?/sec    1.00    690.9±7.79µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.10    585.7±4.13µs        ? ?/sec    1.00    531.9±4.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07    748.5±8.82µs        ? ?/sec    1.00    701.7±6.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.00     65.8±3.08µs        ? ?/sec    1.05     68.9±5.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.16    254.6±4.80µs        ? ?/sec    1.00    219.0±2.13µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     71.9±0.76µs        ? ?/sec    1.06     76.5±5.68µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.09     94.4±1.24µs        ? ?/sec    1.00     86.7±0.62µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00    209.3±2.57µs        ? ?/sec    1.09    228.6±5.56µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.5±0.51µs        ? ?/sec    1.00     92.0±0.48µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.00      9.1±0.18µs        ? ?/sec    1.00      9.2±0.15µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.8±0.60µs        ? ?/sec    1.14    187.7±2.29µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.01     14.5±0.33µs        ? ?/sec    1.00     14.3±0.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.08    184.1±2.92µs        ? ?/sec    1.00    170.7±4.02µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00   330.5±17.01µs        ? ?/sec    1.01    335.1±4.44µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    191.1±9.14µs        ? ?/sec    1.00    176.2±1.54µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.03     14.1±0.43µs        ? ?/sec    1.00     13.6±0.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00    243.6±0.88µs        ? ?/sec    1.06    257.9±3.38µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.00     19.7±0.58µs        ? ?/sec    1.01     20.0±0.25µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.07    366.1±9.89µs        ? ?/sec    1.00    340.9±3.48µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.14    390.6±2.03µs        ? ?/sec    1.00    344.0±1.87µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.07    372.3±5.90µs        ? ?/sec    1.00    348.2±4.45µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     25.6±0.34µs        ? ?/sec    1.06     27.0±0.37µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.17    219.5±0.93µs        ? ?/sec    1.00    187.3±0.82µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.00     32.9±0.42µs        ? ?/sec    1.02     33.7±0.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.1±2.29µs        ? ?/sec    1.02    111.3±1.00µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    128.5±0.75µs        ? ?/sec    1.01    129.8±0.94µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    112.2±1.20µs        ? ?/sec    1.02    114.4±1.26µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    160.5±4.69µs        ? ?/sec    1.00    160.3±1.19µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    221.4±7.44µs        ? ?/sec    1.00    220.6±1.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.00    164.5±0.64µs        ? ?/sec    1.01    166.2±1.57µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     74.0±0.66µs        ? ?/sec    1.02     75.2±0.30µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    176.1±2.49µs        ? ?/sec    1.00    176.6±1.19µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     79.4±0.85µs        ? ?/sec    1.00     79.5±1.44µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.01    142.4±0.32µs        ? ?/sec    1.00   140.4±18.65µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.01    213.3±2.12µs        ? ?/sec    1.00    210.5±0.99µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.04    148.5±1.87µs        ? ?/sec    1.00    142.5±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.03     72.4±0.78µs        ? ?/sec    1.00     70.3±1.75µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.03    177.5±5.72µs        ? ?/sec    1.00    172.4±1.12µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.04     78.7±1.18µs        ? ?/sec    1.00     75.7±0.72µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.02    110.3±1.91µs        ? ?/sec    1.00    108.2±1.19µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    130.9±0.76µs        ? ?/sec    1.03    134.9±0.98µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    111.8±0.55µs        ? ?/sec    1.01    113.1±1.23µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.01    163.6±1.12µs        ? ?/sec    1.00    161.8±0.99µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.00    233.7±2.60µs        ? ?/sec    1.00    233.2±4.58µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.01    169.2±1.74µs        ? ?/sec    1.00    167.6±1.39µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.4±0.61µs        ? ?/sec    1.01    202.8±1.62µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    248.9±4.58µs        ? ?/sec    1.00    249.0±0.97µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    207.9±2.25µs        ? ?/sec    1.00    208.6±1.75µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    142.7±0.92µs        ? ?/sec    1.08    153.7±1.02µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    216.2±0.93µs        ? ?/sec    1.06    229.3±1.38µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    146.7±0.81µs        ? ?/sec    1.08    159.1±1.21µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.05    102.3±1.30µs        ? ?/sec    1.00     97.8±0.64µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.02    197.6±1.88µs        ? ?/sec    1.00    193.4±1.51µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.03    109.2±1.62µs        ? ?/sec    1.00    106.0±0.82µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.00     77.3±2.35µs        ? ?/sec    1.00     77.4±0.75µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.7±0.21µs        ? ?/sec    1.00    101.8±1.10µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     79.8±1.32µs        ? ?/sec    1.00     80.1±0.45µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.00    106.4±0.42µs        ? ?/sec    1.01    108.0±2.63µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.01    173.2±6.18µs        ? ?/sec    1.00    171.4±1.80µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.00    110.8±0.62µs        ? ?/sec    1.01    111.7±0.82µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     42.8±0.24µs        ? ?/sec    1.00     42.4±0.21µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.02    139.7±0.91µs        ? ?/sec    1.00    136.7±1.03µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.01     47.0±0.60µs        ? ?/sec    1.00     46.7±0.35µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.09    110.2±2.05µs        ? ?/sec    1.00    101.3±1.00µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.02    176.0±1.46µs        ? ?/sec    1.00    172.5±1.01µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.08    115.0±2.24µs        ? ?/sec    1.00    106.7±1.02µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.7±0.15µs        ? ?/sec    1.00     36.8±0.47µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.01    136.8±1.25µs        ? ?/sec    1.00    135.2±2.04µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.2±0.13µs        ? ?/sec    1.00     41.3±0.47µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.6±0.86µs        ? ?/sec    1.02     84.4±1.87µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.1±0.91µs        ? ?/sec    1.01    100.7±0.44µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.3±0.72µs        ? ?/sec    1.02     86.8±0.51µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    107.1±1.91µs        ? ?/sec    1.02    109.0±3.11µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    163.6±5.81µs        ? ?/sec    1.01    165.2±9.61µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    111.5±2.18µs        ? ?/sec    1.03    114.7±7.15µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.4±0.20µs        ? ?/sec    1.00     23.5±0.25µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    118.3±2.39µs        ? ?/sec    1.00    118.4±1.82µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.7±0.44µs        ? ?/sec    1.00     27.6±0.24µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.11     91.5±0.54µs        ? ?/sec    1.00     82.5±0.56µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.00    156.7±2.60µs        ? ?/sec    1.01   157.9±23.24µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.10     96.5±2.02µs        ? ?/sec    1.00     88.0±1.37µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.2±0.43µs        ? ?/sec    1.01     15.5±0.53µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.01    116.7±3.89µs        ? ?/sec    1.00    116.0±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.3±0.65µs        ? ?/sec    1.00     21.2±0.20µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     80.7±1.36µs        ? ?/sec    1.00     80.6±0.37µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.00    101.2±0.56µs        ? ?/sec    1.01    102.0±1.43µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.00     83.1±0.53µs        ? ?/sec    1.00     83.1±0.61µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.7±2.01µs        ? ?/sec    1.01    108.5±1.17µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    164.6±2.04µs        ? ?/sec    1.05    173.0±0.94µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.1±1.92µs        ? ?/sec    1.02    112.3±1.86µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    146.2±1.73µs        ? ?/sec    1.00    146.0±0.62µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    188.8±1.29µs        ? ?/sec    1.01    190.4±0.96µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    150.8±0.93µs        ? ?/sec    1.00    150.9±1.13µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.8±3.26µs        ? ?/sec    1.09     97.0±0.58µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    157.8±2.93µs        ? ?/sec    1.04    163.9±1.60µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     92.6±0.41µs        ? ?/sec    1.11    102.8±1.14µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.08     43.9±1.30µs        ? ?/sec    1.00     40.8±0.90µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    131.7±1.78µs        ? ?/sec    1.02    133.9±2.04µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.09     50.6±1.06µs        ? ?/sec    1.00     46.6±2.27µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.00     81.3±2.81µs        ? ?/sec    1.01     81.8±0.36µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.00    102.9±1.94µs        ? ?/sec    1.00    102.9±2.49µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     83.9±0.60µs        ? ?/sec    1.01     84.7±0.33µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.00    108.1±1.76µs        ? ?/sec    1.01    109.5±1.49µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    169.1±1.83µs        ? ?/sec    1.01    170.0±2.79µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.00    112.7±0.64µs        ? ?/sec    1.02    114.6±1.39µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     35.0±0.81µs        ? ?/sec    1.00     34.9±0.16µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.00    130.3±2.43µs        ? ?/sec    1.00    129.9±5.94µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     38.9±0.30µs        ? ?/sec    1.00     39.0±0.39µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.10    102.8±1.06µs        ? ?/sec    1.00     93.8±0.76µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.02    168.9±1.63µs        ? ?/sec    1.00    166.2±5.23µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.08    107.5±0.88µs        ? ?/sec    1.00     99.6±1.73µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.6±0.18µs        ? ?/sec    1.00     28.6±0.29µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.4±1.34µs        ? ?/sec    1.00    127.3±1.43µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.00     33.3±0.14µs        ? ?/sec    1.00     33.4±0.52µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.03      7.5±0.15ms        ? ?/sec    1.00      7.3±0.10ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.02     13.5±0.46ms        ? ?/sec    1.00     13.2±0.24ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00    489.7±2.93µs        ? ?/sec    1.05    514.1±6.09µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00    663.2±5.61µs        ? ?/sec    1.06    700.1±4.16µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00    497.8±5.95µs        ? ?/sec    1.04    519.7±5.37µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.02   672.1±41.97µs        ? ?/sec    1.00   659.2±13.17µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00   778.5±26.81µs        ? ?/sec    1.02    795.4±6.25µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.00    675.1±8.29µs        ? ?/sec    1.01    680.4±9.25µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.00    335.0±4.32µs        ? ?/sec    1.00    334.9±2.43µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.09    411.1±2.72µs        ? ?/sec    1.00    378.1±4.92µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.00    339.7±2.96µs        ? ?/sec    1.00    340.6±5.03µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    274.8±3.32µs        ? ?/sec    1.00    273.5±2.32µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.16    270.3±5.97µs        ? ?/sec    1.00    232.8±1.59µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.03    287.8±1.96µs        ? ?/sec    1.00    279.1±2.46µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.00   494.0±21.43µs        ? ?/sec    1.02    504.5±4.08µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.05    379.7±6.70µs        ? ?/sec    1.00    361.8±2.36µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.00   501.5±35.47µs        ? ?/sec    1.03   515.5±14.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     92.8±0.39µs        ? ?/sec    1.01     93.6±0.47µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.01    111.1±1.61µs        ? ?/sec    1.00    110.4±0.55µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.01     96.8±4.97µs        ? ?/sec    1.00     96.0±0.38µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    126.9±1.28µs        ? ?/sec    1.01    127.9±2.72µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    184.9±1.17µs        ? ?/sec    1.00    184.6±6.87µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    131.2±0.81µs        ? ?/sec    1.01    132.2±0.52µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     43.0±0.27µs        ? ?/sec    1.00     42.6±0.13µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    138.2±0.83µs        ? ?/sec    1.00    137.6±1.14µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.2±0.47µs        ? ?/sec    1.00     46.7±0.42µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.08    110.1±0.50µs        ? ?/sec    1.00    101.7±0.70µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.03    177.8±6.29µs        ? ?/sec    1.00    172.3±0.85µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.08    115.3±3.22µs        ? ?/sec    1.00    107.1±1.75µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.31µs        ? ?/sec    1.01     36.6±0.31µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.01    136.1±4.84µs        ? ?/sec    1.00    134.8±0.91µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.2±0.20µs        ? ?/sec    1.00     41.3±0.23µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     82.5±1.50µs        ? ?/sec    1.02     84.3±1.01µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.5±2.08µs        ? ?/sec    1.01    101.5±3.51µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.4±0.69µs        ? ?/sec    1.02     87.3±1.30µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    107.1±4.34µs        ? ?/sec    1.02    108.9±1.92µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.2±0.92µs        ? ?/sec    1.00    163.7±1.79µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    111.3±4.61µs        ? ?/sec    1.02    113.3±0.84µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     24.0±0.18µs        ? ?/sec    1.00     24.1±0.22µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.01    118.8±1.85µs        ? ?/sec    1.00    117.8±0.58µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.01     28.4±0.33µs        ? ?/sec    1.00     28.2±0.17µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.6±0.74µs        ? ?/sec    1.00     83.1±0.80µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.02    157.7±1.86µs        ? ?/sec    1.00    154.2±2.92µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.10     97.3±4.70µs        ? ?/sec    1.00     88.5±1.29µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.05     19.2±0.28µs        ? ?/sec    1.00     18.3±0.55µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.01    117.1±2.37µs        ? ?/sec    1.00    116.1±2.04µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.06     23.8±0.47µs        ? ?/sec    1.00     22.4±0.20µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.01     81.7±1.03µs        ? ?/sec    1.00     81.1±1.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.00    101.3±1.49µs        ? ?/sec    1.01    101.9±0.44µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.00     83.5±0.66µs        ? ?/sec    1.00     83.1±0.89µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.00    107.7±1.43µs        ? ?/sec    1.00    108.0±1.13µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    165.0±2.46µs        ? ?/sec    1.06    174.2±2.55µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    110.6±2.20µs        ? ?/sec    1.02    112.5±0.62µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    146.7±1.22µs        ? ?/sec    1.00    146.8±0.94µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.4±1.70µs        ? ?/sec    1.01    190.3±0.81µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    151.4±0.63µs        ? ?/sec    1.01    152.3±2.00µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     88.0±0.85µs        ? ?/sec    1.12     98.5±1.80µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    157.9±3.51µs        ? ?/sec    1.04    164.0±0.89µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     93.0±2.26µs        ? ?/sec    1.11    103.2±0.82µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.06     43.5±1.04µs        ? ?/sec    1.00     40.9±1.42µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.00    131.8±0.93µs        ? ?/sec    1.02    134.3±2.49µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.02     49.3±1.41µs        ? ?/sec    1.00     48.3±1.92µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.5±2.23µs        ? ?/sec    1.02     90.6±2.95µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.6±1.04µs        ? ?/sec    1.02    107.2±3.51µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.00     91.2±2.81µs        ? ?/sec    1.02     93.0±1.29µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.1±1.83µs        ? ?/sec    1.02    120.2±0.73µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.6±2.08µs        ? ?/sec    1.00    175.4±1.99µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    123.0±4.06µs        ? ?/sec    1.02    126.1±7.05µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.9±0.44µs        ? ?/sec    1.00     34.5±0.14µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.01    130.2±1.52µs        ? ?/sec    1.00    129.5±0.50µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.00     39.0±0.11µs        ? ?/sec    1.00     38.8±0.16µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.10    102.8±0.86µs        ? ?/sec    1.00     93.7±1.21µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.02    168.7±0.89µs        ? ?/sec    1.00    165.2±5.35µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.6±2.68µs        ? ?/sec    1.00     99.7±2.81µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.01     28.8±0.29µs        ? ?/sec    1.00     28.6±0.11µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.00    127.7±1.11µs        ? ?/sec    1.00    127.6±3.60µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.4±0.22µs        ? ?/sec    1.00     33.5±0.22µs        ? ?/sec

@alamb-ghbot

Copy link
Copy Markdown

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (9e4bbb8) to d81d6c3 diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot

Copy link
Copy Markdown

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.06   1070.2±6.02µs        ? ?/sec    1.00   1005.8±4.72µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00   1180.5±3.78µs        ? ?/sec    1.07  1264.1±13.94µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.06   1077.0±4.94µs        ? ?/sec    1.00   1017.3±7.77µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00   485.0±11.00µs        ? ?/sec    1.04    502.7±5.71µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00    666.4±8.20µs        ? ?/sec    1.05    697.3±4.76µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    498.1±4.19µs        ? ?/sec    1.04    515.8±4.64µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.01   552.4±13.37µs        ? ?/sec    1.00    545.3±7.70µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00   729.9±11.78µs        ? ?/sec    1.03    751.8±6.84µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.00    558.0±6.34µs        ? ?/sec    1.00    557.6±4.20µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    270.3±4.43µs        ? ?/sec    1.04    280.3±4.12µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.04    240.2±2.87µs        ? ?/sec    1.00    231.5±3.62µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    274.9±4.35µs        ? ?/sec    1.01    278.2±3.97µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00   352.1±10.76µs        ? ?/sec    1.07    376.8±5.89µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    324.5±3.75µs        ? ?/sec    1.08    350.0±3.34µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    290.8±3.70µs        ? ?/sec    1.03    298.8±2.92µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    360.0±3.41µs        ? ?/sec    1.06    382.9±1.37µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.09   1013.0±5.81µs        ? ?/sec    1.00    929.1±2.90µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.14    875.9±7.31µs        ? ?/sec    1.00   768.5±10.64µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.09  1024.6±18.13µs        ? ?/sec    1.00   938.9±10.14µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.09    339.9±2.81µs        ? ?/sec    1.00    312.4±4.76µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.14    524.4±2.56µs        ? ?/sec    1.00    459.8±5.66µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.10    345.9±3.94µs        ? ?/sec    1.00    314.6±7.73µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.00    160.6±0.97µs        ? ?/sec    1.21    195.0±1.61µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    276.8±3.77µs        ? ?/sec    1.22    336.5±2.26µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.00    165.8±1.07µs        ? ?/sec    1.20    199.7±0.62µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00     76.8±0.69µs        ? ?/sec    1.54    117.9±1.18µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    233.8±3.28µs        ? ?/sec    1.27    298.0±4.98µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.00     82.6±1.28µs        ? ?/sec    1.50    123.5±2.53µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    738.4±9.80µs        ? ?/sec    1.00    689.4±1.77µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.13   593.4±10.86µs        ? ?/sec    1.00    525.0±3.46µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07    744.6±9.58µs        ? ?/sec    1.00    696.6±3.72µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.00     61.1±2.87µs        ? ?/sec    1.13     69.3±2.22µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.17    258.1±4.77µs        ? ?/sec    1.00    220.7±0.77µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     73.5±5.26µs        ? ?/sec    1.08     79.4±3.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.11     95.4±5.40µs        ? ?/sec    1.00     86.0±0.35µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00   210.2±14.75µs        ? ?/sec    1.08    226.4±1.05µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.5±0.73µs        ? ?/sec    1.00     92.0±0.54µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.02      9.2±0.15µs        ? ?/sec    1.00      9.1±0.53µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.7±0.66µs        ? ?/sec    1.15   189.6±17.02µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.02     14.3±0.15µs        ? ?/sec    1.00     14.1±0.19µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.09    184.7±4.49µs        ? ?/sec    1.00    169.5±0.64µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00    329.1±1.12µs        ? ?/sec    1.01    333.7±3.61µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    189.9±2.78µs        ? ?/sec    1.00    175.8±0.60µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.00     12.7±0.20µs        ? ?/sec    1.09     13.9±0.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00    245.1±5.54µs        ? ?/sec    1.05    256.3±3.84µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.00     19.5±0.31µs        ? ?/sec    1.00     19.5±0.25µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.08    367.7±5.31µs        ? ?/sec    1.00    340.8±1.65µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.13    388.3±1.50µs        ? ?/sec    1.00    344.1±5.26µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.08    373.5±2.21µs        ? ?/sec    1.00    346.2±1.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     23.6±1.05µs        ? ?/sec    1.21     28.6±0.49µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.17    218.0±0.94µs        ? ?/sec    1.00    185.6±2.81µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.00     31.8±0.35µs        ? ?/sec    1.04     33.2±0.49µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.5±2.12µs        ? ?/sec    1.02    111.3±2.03µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    129.7±2.19µs        ? ?/sec    1.01    131.2±5.74µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    112.7±2.95µs        ? ?/sec    1.02    114.4±2.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    159.6±4.65µs        ? ?/sec    1.01    162.0±1.51µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    222.0±2.45µs        ? ?/sec    1.00    220.9±1.71µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.00    164.3±2.01µs        ? ?/sec    1.02    167.2±3.06µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00     73.8±0.78µs        ? ?/sec    1.04     76.4±1.95µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.01    175.9±1.87µs        ? ?/sec    1.00    174.4±1.51µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     80.8±0.21µs        ? ?/sec    1.00     80.9±1.37µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.07    145.0±2.56µs        ? ?/sec    1.00    135.2±1.08µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.03    216.7±1.51µs        ? ?/sec    1.00    210.0±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.06    149.8±0.48µs        ? ?/sec    1.00    140.8±0.49µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     72.4±1.18µs        ? ?/sec    1.02     73.8±0.88µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.01    175.1±4.52µs        ? ?/sec    1.00    173.6±2.35µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.00     77.1±1.33µs        ? ?/sec    1.03     79.3±0.44µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    108.2±0.54µs        ? ?/sec    1.01    109.6±0.59µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    130.9±0.60µs        ? ?/sec    1.02    133.5±0.58µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    110.9±0.56µs        ? ?/sec    1.01    112.4±2.23µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.01    163.3±2.16µs        ? ?/sec    1.00    161.6±0.90µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.00    231.6±1.51µs        ? ?/sec    1.00    231.2±2.97µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.01    167.9±2.38µs        ? ?/sec    1.00    166.7±2.10µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.1±3.90µs        ? ?/sec    1.00    200.6±1.22µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    248.7±1.45µs        ? ?/sec    1.00    248.4±4.45µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    205.3±0.66µs        ? ?/sec    1.01    207.0±0.98µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    141.5±2.79µs        ? ?/sec    1.07    150.9±0.51µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    218.8±1.29µs        ? ?/sec    1.01    221.3±3.21µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    147.1±1.00µs        ? ?/sec    1.07    157.3±2.09µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.03    106.3±0.60µs        ? ?/sec    1.00    103.1±1.13µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.00    195.0±1.21µs        ? ?/sec    1.00    194.9±1.15µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.00    114.6±2.44µs        ? ?/sec    1.01    115.2±2.24µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.00     77.2±1.50µs        ? ?/sec    1.00     77.4±1.30µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.6±0.78µs        ? ?/sec    1.00    101.8±0.55µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     79.6±0.46µs        ? ?/sec    1.01     80.0±0.89µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.00    106.3±1.13µs        ? ?/sec    1.01    107.4±1.12µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.00    171.3±0.97µs        ? ?/sec    1.00    171.8±0.51µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.00    110.7±1.97µs        ? ?/sec    1.01    111.6±0.79µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.05     42.9±0.77µs        ? ?/sec    1.00     40.8±0.24µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.00    138.5±1.73µs        ? ?/sec    1.00    137.8±0.89µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.03     46.7±0.34µs        ? ?/sec    1.00     45.2±0.17µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.08    109.7±0.30µs        ? ?/sec    1.00    101.8±2.25µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.03    177.8±2.03µs        ? ?/sec    1.00    172.8±1.35µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.07    114.4±0.64µs        ? ?/sec    1.00    106.7±0.34µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.7±0.15µs        ? ?/sec    1.00     36.7±0.13µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.00    135.5±1.87µs        ? ?/sec    1.00    135.8±2.73µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.0±0.29µs        ? ?/sec    1.00     41.1±0.20µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.3±1.04µs        ? ?/sec    1.02     84.0±0.28µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.1±1.06µs        ? ?/sec    1.01    100.9±1.14µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.1±1.54µs        ? ?/sec    1.02     87.0±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    106.4±2.51µs        ? ?/sec    1.02    108.5±1.56µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    163.7±2.54µs        ? ?/sec    1.00    163.4±1.11µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    110.4±2.33µs        ? ?/sec    1.02    113.0±0.45µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.3±0.74µs        ? ?/sec    1.01     23.6±0.45µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    117.6±1.69µs        ? ?/sec    1.01    118.5±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.5±0.26µs        ? ?/sec    1.02     27.9±0.29µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.11     91.8±2.47µs        ? ?/sec    1.00     82.5±1.10µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.03    158.0±0.60µs        ? ?/sec    1.00    153.6±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.09     96.0±0.84µs        ? ?/sec    1.00     87.8±0.53µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.1±0.45µs        ? ?/sec    1.00     15.2±0.37µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.00    116.0±2.81µs        ? ?/sec    1.00    116.3±2.44µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.0±0.36µs        ? ?/sec    1.02     21.3±0.33µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     81.2±1.21µs        ? ?/sec    1.00     80.8±0.56µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.01    102.3±0.97µs        ? ?/sec    1.00    101.8±0.95µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.01     84.0±2.02µs        ? ?/sec    1.00     83.3±0.84µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.8±0.81µs        ? ?/sec    1.01    108.6±0.80µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    166.9±2.05µs        ? ?/sec    1.00    166.6±0.76µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.8±1.53µs        ? ?/sec    1.00    111.3±2.58µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    146.4±1.66µs        ? ?/sec    1.00    146.1±0.62µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    189.5±2.14µs        ? ?/sec    1.00    190.3±1.24µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    151.1±1.24µs        ? ?/sec    1.00    150.9±1.00µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.1±1.19µs        ? ?/sec    1.11     97.4±0.77µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    160.0±2.41µs        ? ?/sec    1.02    163.3±2.38µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     92.8±0.82µs        ? ?/sec    1.10    102.0±0.64µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.00     40.1±1.76µs        ? ?/sec    1.05     42.2±2.37µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    132.8±4.53µs        ? ?/sec    1.00    132.4±1.23µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.00     46.1±2.50µs        ? ?/sec    1.01     46.3±2.06µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.01     82.4±1.39µs        ? ?/sec    1.00     81.7±0.70µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.00    102.4±0.95µs        ? ?/sec    1.00    102.7±1.24µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     84.1±1.03µs        ? ?/sec    1.00     84.4±0.23µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.00    108.2±0.48µs        ? ?/sec    1.01    109.0±0.65µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    169.8±3.23µs        ? ?/sec    1.00    170.2±3.66µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.00    112.8±0.87µs        ? ?/sec    1.01    114.0±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     34.8±0.63µs        ? ?/sec    1.00     34.7±0.47µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.01    130.9±0.99µs        ? ?/sec    1.00    129.3±0.56µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     39.1±1.16µs        ? ?/sec    1.00     39.0±0.22µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.09    102.4±0.66µs        ? ?/sec    1.00     93.7±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.04    170.5±1.05µs        ? ?/sec    1.00    164.4±2.31µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.08    107.1±0.68µs        ? ?/sec    1.00     98.9±0.53µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.7±0.22µs        ? ?/sec    1.00     28.6±0.25µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.6±1.36µs        ? ?/sec    1.00    127.7±3.39µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.00     33.4±0.33µs        ? ?/sec    1.00     33.3±0.24µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.04      7.5±0.15ms        ? ?/sec    1.00      7.3±0.08ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.02     13.0±0.27ms        ? ?/sec    1.00     12.8±0.12ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00   488.2±15.54µs        ? ?/sec    1.06    516.0±4.71µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00   665.9±17.67µs        ? ?/sec    1.04    692.0±3.74µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00   505.6±35.64µs        ? ?/sec    1.01    508.5±7.36µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.02   649.9±12.20µs        ? ?/sec    1.00    639.2±3.94µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00    781.7±7.73µs        ? ?/sec    1.01    789.6±7.29µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.01   657.7±11.93µs        ? ?/sec    1.00   651.0±11.53µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.02    345.6±8.79µs        ? ?/sec    1.00    338.4±5.40µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.11    416.3±7.45µs        ? ?/sec    1.00    374.6±4.53µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.03   353.3±11.27µs        ? ?/sec    1.00    344.2±4.06µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    274.2±2.40µs        ? ?/sec    1.00    271.2±4.02µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.05    240.4±0.94µs        ? ?/sec    1.00    230.1±1.69µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.6±2.41µs        ? ?/sec    1.00    276.7±3.68µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.01    506.5±6.99µs        ? ?/sec    1.00    503.3±5.39µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.04    364.8±9.48µs        ? ?/sec    1.00    351.6±3.12µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.01   519.1±36.53µs        ? ?/sec    1.00   512.2±11.52µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     92.8±1.54µs        ? ?/sec    1.01     93.5±0.42µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.00    111.0±1.41µs        ? ?/sec    1.00    111.1±1.57µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.00     95.2±0.61µs        ? ?/sec    1.03     98.1±1.40µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    127.0±2.73µs        ? ?/sec    1.00    127.4±1.13µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    183.7±0.72µs        ? ?/sec    1.01    184.9±2.47µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    130.6±1.33µs        ? ?/sec    1.01    132.5±4.14µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.02     43.1±0.33µs        ? ?/sec    1.00     42.5±0.18µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    137.4±0.70µs        ? ?/sec    1.00    137.5±1.01µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.1±0.39µs        ? ?/sec    1.00     46.7±0.58µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.09    110.1±0.45µs        ? ?/sec    1.00    101.2±1.15µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.04    178.3±2.89µs        ? ?/sec    1.00    172.2±2.71µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.08    115.1±0.64µs        ? ?/sec    1.00    107.0±0.62µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.22µs        ? ?/sec    1.00     36.6±0.19µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.00    134.7±0.82µs        ? ?/sec    1.00    135.2±2.69µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.2±0.17µs        ? ?/sec    1.00     41.1±0.20µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     82.3±1.16µs        ? ?/sec    1.03     84.4±0.30µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.0±1.32µs        ? ?/sec    1.02    101.6±3.48µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.0±1.11µs        ? ?/sec    1.02     87.1±1.20µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    106.0±1.66µs        ? ?/sec    1.03    109.3±1.11µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.5±1.78µs        ? ?/sec    1.01    164.4±0.69µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    110.8±1.45µs        ? ?/sec    1.02    113.3±0.90µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     23.8±0.38µs        ? ?/sec    1.00     23.5±0.18µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.02    120.7±2.76µs        ? ?/sec    1.00    118.6±0.72µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.02     28.2±0.32µs        ? ?/sec    1.00     27.8±0.41µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.3±1.25µs        ? ?/sec    1.00     83.2±1.50µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.03    158.5±2.21µs        ? ?/sec    1.00    153.3±1.11µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.10     96.2±1.47µs        ? ?/sec    1.00     87.8±0.43µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.00     18.4±0.59µs        ? ?/sec    1.01     18.6±0.98µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.01    116.5±0.64µs        ? ?/sec    1.00    115.9±0.97µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.00     22.9±0.84µs        ? ?/sec    1.01     23.1±0.64µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.00     80.6±0.37µs        ? ?/sec    1.00     80.8±0.64µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.01    103.0±1.12µs        ? ?/sec    1.00    102.3±1.11µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.01     83.9±1.45µs        ? ?/sec    1.00     83.4±0.47µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.01    108.0±0.76µs        ? ?/sec    1.00    106.8±0.37µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    166.8±1.11µs        ? ?/sec    1.01    167.8±2.06µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    110.2±0.78µs        ? ?/sec    1.00    109.9±0.69µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    145.6±0.44µs        ? ?/sec    1.00    146.3±0.46µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.3±2.74µs        ? ?/sec    1.00    189.8±0.72µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    150.2±0.57µs        ? ?/sec    1.01    151.4±1.67µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     87.8±1.87µs        ? ?/sec    1.11     97.7±0.78µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    159.3±2.83µs        ? ?/sec    1.03    163.8±0.60µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     92.8±1.18µs        ? ?/sec    1.10    102.5±0.83µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.00     40.8±1.56µs        ? ?/sec    1.06     43.3±1.72µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.01    134.2±1.46µs        ? ?/sec    1.00    133.3±1.29µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.00     44.9±1.26µs        ? ?/sec    1.09     48.9±1.70µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.8±1.45µs        ? ?/sec    1.02     90.2±1.53µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.8±0.43µs        ? ?/sec    1.00    106.2±1.50µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.00     91.2±0.46µs        ? ?/sec    1.02     93.0±1.83µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.6±4.35µs        ? ?/sec    1.01    120.3±0.69µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.6±0.69µs        ? ?/sec    1.00    175.1±1.89µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    122.3±0.59µs        ? ?/sec    1.02    125.2±2.96µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.8±0.46µs        ? ?/sec    1.00     34.6±0.14µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.00    130.7±1.01µs        ? ?/sec    1.00    130.5±2.23µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.00     39.0±0.26µs        ? ?/sec    1.00     38.8±0.23µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.09    102.2±0.40µs        ? ?/sec    1.00     93.8±1.30µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.04    170.3±2.22µs        ? ?/sec    1.00    164.3±1.35µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.5±2.07µs        ? ?/sec    1.00     99.1±1.05µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.00     28.7±0.58µs        ? ?/sec    1.00     28.7±0.11µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.00    127.5±0.54µs        ? ?/sec    1.00    126.9±1.05µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.2±0.11µs        ? ?/sec    1.01     33.5±0.16µs        ? ?/sec

@alamb-ghbot

Copy link
Copy Markdown

🤖 ./gh_compare_arrow.sh gh_compare_arrow.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/less_parquet_view_allocations (9e4bbb8) to d81d6c3 diff
BENCH_NAME=arrow_reader
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental --bench arrow_reader
BENCH_FILTER=
BENCH_BRANCH_NAME=alamb_less_parquet_view_allocations
Results will be posted here when complete

@alamb-ghbot

Copy link
Copy Markdown

🤖: Benchmark completed

Details

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                           1.06   1069.2±7.88µs        ? ?/sec    1.00   1006.0±4.01µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                          1.00  1183.3±15.68µs        ? ?/sec    1.07   1268.5±6.88µs        ? ?/sec
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                            1.06  1077.3±11.36µs        ? ?/sec    1.00  1013.6±10.88µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, mandatory, no NULLs                                     1.00    478.6±4.31µs        ? ?/sec    1.08    515.3±4.11µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs                                    1.00    662.4±8.18µs        ? ?/sec    1.05    698.7±3.75µs        ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, no NULLs                                      1.00    494.8±5.18µs        ? ?/sec    1.03    509.8±5.10µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, mandatory, no NULLs                                          1.01   546.9±10.67µs        ? ?/sec    1.00    543.4±5.55µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs                                         1.00    733.0±5.70µs        ? ?/sec    1.02    747.2±5.61µs        ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, no NULLs                                           1.00    556.6±3.09µs        ? ?/sec    1.00    558.7±8.08µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    272.7±4.63µs        ? ?/sec    1.00    272.0±5.67µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.00    238.5±5.52µs        ? ?/sec    1.00    237.8±3.59µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.5±3.48µs        ? ?/sec    1.04   287.4±23.05µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00    348.1±3.33µs        ? ?/sec    1.08   377.5±10.42µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    322.9±1.57µs        ? ?/sec    1.08    348.2±8.59µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    289.8±1.56µs        ? ?/sec    1.00    289.4±2.06µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    357.6±4.66µs        ? ?/sec    1.07    382.9±6.66µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs     1.08  1009.7±13.57µs        ? ?/sec    1.00   935.3±50.00µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs    1.10    870.3±4.53µs        ? ?/sec    1.00   791.8±10.07µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, no NULLs      1.09  1022.8±28.48µs        ? ?/sec    1.00    935.7±7.80µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, mandatory, no NULLs                 1.08    326.4±4.36µs        ? ?/sec    1.00    301.2±5.42µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs                1.14    519.2±2.91µs        ? ?/sec    1.00    457.3±6.90µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, no NULLs                  1.08   335.0±10.95µs        ? ?/sec    1.00    310.6±4.20µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, mandatory, no NULLs        1.00    161.0±1.39µs        ? ?/sec    1.24   198.9±17.35µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs       1.00    278.0±1.47µs        ? ?/sec    1.22    338.5±5.97µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, no NULLs         1.00    167.5±0.74µs        ? ?/sec    1.21    201.8±2.65µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, mandatory, no NULLs                    1.00     75.9±0.93µs        ? ?/sec    1.57    118.8±1.92µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs                   1.00    234.1±1.32µs        ? ?/sec    1.28    298.5±3.75µs        ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, no NULLs                     1.00     82.2±0.73µs        ? ?/sec    1.51    124.0±0.55µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, mandatory, no NULLs                    1.07    737.5±9.94µs        ? ?/sec    1.00    687.4±3.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs                   1.10    588.8±5.46µs        ? ?/sec    1.00    534.3±5.57µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, no NULLs                     1.07   744.2±14.64µs        ? ?/sec    1.00    694.7±7.28µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, mandatory, no NULLs                                1.01     69.8±2.94µs        ? ?/sec    1.00     69.2±2.21µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs                               1.15    257.5±4.05µs        ? ?/sec    1.00    224.8±2.04µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, no NULLs                                 1.00     77.1±3.32µs        ? ?/sec    1.02     78.8±2.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, mandatory, no NULLs                     1.09     94.4±0.44µs        ? ?/sec    1.00     86.6±1.47µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs                    1.00    208.8±7.04µs        ? ?/sec    1.09    227.0±3.38µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, no NULLs                      1.08     99.1±0.76µs        ? ?/sec    1.00     91.7±0.76µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, mandatory, no NULLs                                 1.00      9.2±0.17µs        ? ?/sec    1.02      9.3±0.13µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs                                1.00    164.4±1.31µs        ? ?/sec    1.14    186.8±0.62µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, no NULLs                                  1.01     14.2±0.12µs        ? ?/sec    1.00     14.0±0.19µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, mandatory, no NULLs                     1.09    184.6±0.93µs        ? ?/sec    1.00    169.6±0.42µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs                    1.00    330.6±6.64µs        ? ?/sec    1.02   335.7±20.43µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, no NULLs                      1.08    190.1±3.59µs        ? ?/sec    1.00    175.5±2.06µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, mandatory, no NULLs                                 1.00     14.7±0.61µs        ? ?/sec    1.02     15.0±0.59µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs                                1.00   248.6±13.01µs        ? ?/sec    1.03    255.4±2.30µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, no NULLs                                  1.03     20.3±0.81µs        ? ?/sec    1.00     19.8±0.42µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, mandatory, no NULLs                     1.08    366.2±1.63µs        ? ?/sec    1.00    340.3±3.11µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs                    1.14    389.4±2.44µs        ? ?/sec    1.00    342.3±3.84µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, no NULLs                      1.08    373.4±7.60µs        ? ?/sec    1.00    346.2±1.59µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, mandatory, no NULLs                                 1.00     27.0±0.43µs        ? ?/sec    1.01     27.3±0.68µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs                                1.18    219.1±7.32µs        ? ?/sec    1.00    185.6±1.09µs        ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, no NULLs                                  1.01     34.1±0.63µs        ? ?/sec    1.00     33.9±0.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    109.8±1.46µs        ? ?/sec    1.01    110.9±0.97µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    129.4±0.90µs        ? ?/sec    1.00    129.6±3.01µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    114.2±7.96µs        ? ?/sec    1.00    113.9±3.05µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    160.3±2.63µs        ? ?/sec    1.00    161.0±1.25µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs                               1.00    221.8±2.92µs        ? ?/sec    1.00    221.1±1.98µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, no NULLs                                 1.01    166.9±6.98µs        ? ?/sec    1.00    166.0±0.36µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.01     76.1±0.61µs        ? ?/sec    1.00     75.0±1.07µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.01    175.8±1.57µs        ? ?/sec    1.00    174.8±1.33µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00     80.8±0.67µs        ? ?/sec    1.01     81.5±1.60µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.07    143.5±2.63µs        ? ?/sec    1.00    134.6±0.56µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs                          1.04   218.2±19.18µs        ? ?/sec    1.00    208.8±3.02µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, no NULLs                            1.06    148.8±0.88µs        ? ?/sec    1.00    140.7±1.08µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00     71.5±0.93µs        ? ?/sec    1.00     71.6±0.72µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs                               1.00    173.1±1.36µs        ? ?/sec    1.00    172.6±2.40µs        ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, no NULLs                                 1.00     76.4±1.14µs        ? ?/sec    1.03     78.5±0.92µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, mandatory, no NULLs                           1.00    108.2±0.69µs        ? ?/sec    1.01    109.8±0.36µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs                          1.00    131.0±2.13µs        ? ?/sec    1.00    131.0±1.18µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, no NULLs                            1.00    111.1±1.68µs        ? ?/sec    1.00    111.2±0.65µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, mandatory, no NULLs                                1.00    162.7±0.94µs        ? ?/sec    1.00    162.9±3.62µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs                               1.03    232.8±1.38µs        ? ?/sec    1.00    224.9±3.81µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, no NULLs                                 1.02    169.5±6.78µs        ? ?/sec    1.00    165.5±0.91µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, mandatory, no NULLs                    1.00    200.1±0.65µs        ? ?/sec    1.00    199.2±1.41µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs                   1.00    243.3±2.72µs        ? ?/sec    1.03    249.6±2.42µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, no NULLs                     1.00    206.2±0.91µs        ? ?/sec    1.00    205.5±0.83µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, mandatory, no NULLs                           1.00    140.4±0.94µs        ? ?/sec    1.08    151.3±2.70µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs                          1.00    215.7±0.68µs        ? ?/sec    1.03    222.4±3.33µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, no NULLs                            1.00    146.0±1.12µs        ? ?/sec    1.07    156.8±1.88µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, mandatory, no NULLs                                1.00    102.7±1.50µs        ? ?/sec    1.00    102.5±1.44µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs                               1.00    195.2±0.95µs        ? ?/sec    1.00    195.9±3.13µs        ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, no NULLs                                 1.00    110.1±2.51µs        ? ?/sec    1.02    112.6±0.44µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, mandatory, no NULLs                                      1.01     78.3±1.22µs        ? ?/sec    1.00     77.3±0.36µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs                                     1.00    101.5±0.63µs        ? ?/sec    1.00    101.5±0.63µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, no NULLs                                       1.00     80.0±1.11µs        ? ?/sec    1.00     79.9±0.34µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, mandatory, no NULLs                                           1.01    108.5±2.59µs        ? ?/sec    1.00    107.4±1.37µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs                                          1.00    171.6±2.83µs        ? ?/sec    1.00    171.4±1.41µs        ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, no NULLs                                            1.01    112.3±2.11µs        ? ?/sec    1.00    111.7±1.20µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, mandatory, no NULLs                               1.05     42.8±0.32µs        ? ?/sec    1.00     40.9±0.25µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs                              1.01    139.3±4.34µs        ? ?/sec    1.00    137.3±2.45µs        ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, no NULLs                                1.03     46.7±0.28µs        ? ?/sec    1.00     45.2±0.28µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, mandatory, no NULLs                                      1.08    109.9±0.58µs        ? ?/sec    1.00    101.3±1.43µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs                                     1.02    176.8±5.82µs        ? ?/sec    1.00    172.7±4.62µs        ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, no NULLs                                       1.07    114.5±1.97µs        ? ?/sec    1.00    107.0±3.66µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, mandatory, no NULLs                                           1.00     36.6±0.09µs        ? ?/sec    1.01     36.9±0.19µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs                                          1.00    135.4±0.48µs        ? ?/sec    1.00    134.8±1.57µs        ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, no NULLs                                            1.00     41.0±0.34µs        ? ?/sec    1.01     41.3±0.34µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, mandatory, no NULLs                                      1.00     82.4±1.43µs        ? ?/sec    1.02     84.3±0.65µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs                                     1.00    100.0±1.39µs        ? ?/sec    1.01    100.9±0.64µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, no NULLs                                       1.00     85.3±1.62µs        ? ?/sec    1.03     87.5±4.16µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs                                           1.00    106.4±2.38µs        ? ?/sec    1.02    108.6±0.42µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs                                          1.00    162.4±0.87µs        ? ?/sec    1.01    164.1±1.96µs        ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, no NULLs                                            1.00    110.9±2.14µs        ? ?/sec    1.02    113.4±1.88µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, mandatory, no NULLs                               1.00     23.4±0.19µs        ? ?/sec    1.00     23.5±0.95µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs                              1.00    117.8±0.50µs        ? ?/sec    1.00    118.1±1.78µs        ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, no NULLs                                1.00     27.6±0.18µs        ? ?/sec    1.02     28.1±1.03µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs                                      1.10     91.4±0.52µs        ? ?/sec    1.00     82.7±0.62µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs                                     1.02    156.1±0.77µs        ? ?/sec    1.00    153.6±1.53µs        ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs                                       1.09     96.3±1.31µs        ? ?/sec    1.00     88.1±1.87µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs                                           1.00     15.2±0.76µs        ? ?/sec    1.03     15.7±0.23µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs                                          1.00    116.0±1.48µs        ? ?/sec    1.00    116.3±0.88µs        ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, no NULLs                                            1.00     21.1±0.42µs        ? ?/sec    1.02     21.6±0.19µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, mandatory, no NULLs                                      1.00     80.9±0.59µs        ? ?/sec    1.00     80.6±0.68µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs                                     1.00    101.6±0.41µs        ? ?/sec    1.01    102.9±3.21µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, no NULLs                                       1.00     83.7±0.32µs        ? ?/sec    1.00     83.4±0.91µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs                                           1.00    107.9±1.69µs        ? ?/sec    1.02    109.6±5.21µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs                                          1.00    166.8±5.88µs        ? ?/sec    1.00    166.5±3.23µs        ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, no NULLs                                            1.00    110.9±2.58µs        ? ?/sec    1.01    111.5±1.45µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, mandatory, no NULLs                               1.00    145.8±0.65µs        ? ?/sec    1.00    146.1±1.10µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs                              1.00    188.6±0.87µs        ? ?/sec    1.01    189.8±3.90µs        ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, no NULLs                                1.00    151.1±1.22µs        ? ?/sec    1.00    151.5±1.62µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs                                      1.00     88.0±3.07µs        ? ?/sec    1.11     97.9±1.22µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs                                     1.00    156.9±1.10µs        ? ?/sec    1.05    165.1±8.49µs        ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs                                       1.00     91.8±1.38µs        ? ?/sec    1.12    102.7±0.86µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs                                           1.00     43.8±1.97µs        ? ?/sec    1.06     46.6±2.49µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs                                          1.00    132.7±1.96µs        ? ?/sec    1.00    132.9±1.46µs        ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, no NULLs                                            1.08     52.0±2.72µs        ? ?/sec    1.00     48.3±1.66µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, mandatory, no NULLs                                       1.00     82.2±1.81µs        ? ?/sec    1.00     82.0±2.28µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs                                      1.01    103.3±4.51µs        ? ?/sec    1.00    102.5±0.68µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, no NULLs                                        1.00     85.4±1.99µs        ? ?/sec    1.00     85.1±3.04µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, mandatory, no NULLs                                            1.01    110.5±3.39µs        ? ?/sec    1.00    109.1±0.59µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs                                           1.00    170.0±1.89µs        ? ?/sec    1.00    169.6±0.60µs        ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, no NULLs                                             1.01    115.1±3.24µs        ? ?/sec    1.00    114.1±1.19µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, mandatory, no NULLs                                1.00     34.8±0.23µs        ? ?/sec    1.00     34.9±0.17µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs                               1.01    130.8±0.45µs        ? ?/sec    1.00    129.4±0.49µs        ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, no NULLs                                 1.00     39.0±0.17µs        ? ?/sec    1.00     39.1±0.26µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, mandatory, no NULLs                                       1.09    102.4±0.62µs        ? ?/sec    1.00     93.7±0.44µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs                                      1.03    169.8±6.73µs        ? ?/sec    1.00    164.5±2.34µs        ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, no NULLs                                        1.09    107.6±3.39µs        ? ?/sec    1.00     99.1±1.68µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, mandatory, no NULLs                                            1.00     28.7±0.44µs        ? ?/sec    1.00     28.6±0.20µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs                                           1.01    128.7±0.60µs        ? ?/sec    1.00    127.6±2.20µs        ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, no NULLs                                             1.01     33.6±0.39µs        ? ?/sec    1.00     33.4±0.36µs        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings half NULLs                                     1.04      7.7±0.16ms        ? ?/sec    1.00      7.4±0.10ms        ? ?/sec
arrow_array_reader/ListArray/plain encoded optional strings no NULLs                                       1.05     14.7±0.27ms        ? ?/sec    1.00     14.0±0.38ms        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs                                     1.00    489.8±9.14µs        ? ?/sec    1.05   516.3±13.35µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs                                    1.00    648.7±6.00µs        ? ?/sec    1.07    696.5±6.10µs        ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs                                      1.00   485.9±18.88µs        ? ?/sec    1.05    509.9±3.60µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs                                          1.00    622.4±5.59µs        ? ?/sec    1.02    636.9±6.66µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs                                         1.00    774.1±9.27µs        ? ?/sec    1.03    797.4±6.19µs        ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, no NULLs                                           1.00    635.3±6.70µs        ? ?/sec    1.03   652.7±10.86µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs                                1.00    331.9±4.14µs        ? ?/sec    1.01    333.7±7.28µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs                               1.09    410.1±6.05µs        ? ?/sec    1.00    375.7±2.04µs        ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs                                 1.00    338.6±5.72µs        ? ?/sec    1.01    342.2±7.91µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    272.5±6.34µs        ? ?/sec    1.05    284.9±7.24µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.03    238.6±0.87µs        ? ?/sec    1.00    231.3±2.91µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    276.5±5.66µs        ? ?/sec    1.01    278.9±3.64µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.00    497.1±7.36µs        ? ?/sec    1.01    504.2±2.37µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.01    358.0±2.30µs        ? ?/sec    1.00    355.0±9.66µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.00    505.7±9.94µs        ? ?/sec    1.02    517.9±8.35µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, mandatory, no NULLs                                     1.00     93.7±1.76µs        ? ?/sec    1.00     93.5±1.03µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs                                    1.00    111.3±2.26µs        ? ?/sec    1.00    110.8±0.87µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, no NULLs                                      1.00     96.5±1.51µs        ? ?/sec    1.00     96.2±1.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, mandatory, no NULLs                                          1.00    128.2±2.52µs        ? ?/sec    1.00    127.7±1.32µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs                                         1.00    184.7±2.56µs        ? ?/sec    1.00    184.5±2.37µs        ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, no NULLs                                           1.00    133.0±2.58µs        ? ?/sec    1.00    132.5±3.41µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, mandatory, no NULLs                              1.01     43.1±0.23µs        ? ?/sec    1.00     42.7±0.35µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs                             1.00    137.4±2.59µs        ? ?/sec    1.00    137.5±1.35µs        ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, no NULLs                               1.01     47.2±0.32µs        ? ?/sec    1.00     46.8±0.61µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, mandatory, no NULLs                                     1.09    110.8±3.00µs        ? ?/sec    1.00    101.4±0.52µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs                                    1.02    176.0±1.41µs        ? ?/sec    1.00    172.3±0.79µs        ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, no NULLs                                      1.07    115.1±1.74µs        ? ?/sec    1.00    107.2±0.71µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, mandatory, no NULLs                                          1.00     36.4±0.11µs        ? ?/sec    1.01     36.8±0.26µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs                                         1.00    135.3±0.71µs        ? ?/sec    1.00    135.0±2.27µs        ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, no NULLs                                           1.00     41.3±0.23µs        ? ?/sec    1.00     41.4±0.35µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, mandatory, no NULLs                                     1.00     83.2±1.33µs        ? ?/sec    1.01     84.4±1.57µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs                                    1.00    100.8±2.66µs        ? ?/sec    1.00    101.2±0.71µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, no NULLs                                      1.00     85.9±1.34µs        ? ?/sec    1.02     87.5±0.64µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, mandatory, no NULLs                                          1.00    108.4±3.18µs        ? ?/sec    1.01    109.1±1.97µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs                                         1.00    163.4±1.43µs        ? ?/sec    1.01    164.4±0.78µs        ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, no NULLs                                           1.00    113.0±2.52µs        ? ?/sec    1.00    113.2±0.75µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, mandatory, no NULLs                              1.00     23.8±0.26µs        ? ?/sec    1.01     23.9±0.33µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs                             1.00    119.8±2.73µs        ? ?/sec    1.00    119.4±1.38µs        ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, no NULLs                               1.00     26.7±0.36µs        ? ?/sec    1.05     28.1±0.83µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, mandatory, no NULLs                                     1.10     91.3±1.99µs        ? ?/sec    1.00     83.2±2.56µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs                                    1.03    156.9±4.21µs        ? ?/sec    1.00    152.7±0.92µs        ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, no NULLs                                      1.09     96.0±2.60µs        ? ?/sec    1.00     87.9±0.90µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, mandatory, no NULLs                                          1.01     18.7±0.55µs        ? ?/sec    1.00     18.4±0.64µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs                                         1.00    116.5±0.45µs        ? ?/sec    1.00    116.1±1.20µs        ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, no NULLs                                           1.00     22.7±0.51µs        ? ?/sec    1.00     22.6±0.27µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, mandatory, no NULLs                                     1.02     82.3±1.22µs        ? ?/sec    1.00     80.9±0.94µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs                                    1.00    101.4±1.65µs        ? ?/sec    1.01    102.6±5.10µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, no NULLs                                      1.00     83.6±1.44µs        ? ?/sec    1.00     83.3±0.75µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, mandatory, no NULLs                                          1.00    108.1±1.03µs        ? ?/sec    1.01    109.1±1.30µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs                                         1.00    165.9±2.34µs        ? ?/sec    1.04    172.2±3.63µs        ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, no NULLs                                           1.00    111.1±0.76µs        ? ?/sec    1.00    110.7±0.55µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, mandatory, no NULLs                              1.00    146.2±0.72µs        ? ?/sec    1.00    146.1±0.58µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs                             1.00    189.3±1.54µs        ? ?/sec    1.00    190.0±2.48µs        ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, no NULLs                               1.00    151.0±0.69µs        ? ?/sec    1.00    151.4±0.72µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, mandatory, no NULLs                                     1.00     87.8±0.92µs        ? ?/sec    1.11     97.5±1.51µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs                                    1.00    157.5±4.27µs        ? ?/sec    1.04    164.4±1.33µs        ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, no NULLs                                      1.00     92.8±3.84µs        ? ?/sec    1.12    103.8±6.61µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, mandatory, no NULLs                                          1.00     43.2±2.84µs        ? ?/sec    1.03     44.5±2.28µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs                                         1.00    133.0±2.89µs        ? ?/sec    1.01    133.9±2.31µs        ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, no NULLs                                           1.00     48.3±1.32µs        ? ?/sec    1.04     50.1±1.33µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, mandatory, no NULLs                                      1.00     88.8±0.89µs        ? ?/sec    1.01     89.9±0.68µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs                                     1.00    105.9±0.66µs        ? ?/sec    1.00    106.0±1.09µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, no NULLs                                       1.01     93.5±1.11µs        ? ?/sec    1.00     92.5±0.68µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, mandatory, no NULLs                                           1.00    118.6±2.84µs        ? ?/sec    1.01    120.2±2.00µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs                                          1.00    174.9±2.90µs        ? ?/sec    1.00    175.2±3.89µs        ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, no NULLs                                            1.00    122.9±0.67µs        ? ?/sec    1.01    124.5±0.52µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, mandatory, no NULLs                               1.01     34.8±0.47µs        ? ?/sec    1.00     34.6±0.32µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs                              1.01    130.8±2.04µs        ? ?/sec    1.00    129.7±2.10µs        ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, no NULLs                                1.01     39.2±0.49µs        ? ?/sec    1.00     38.9±0.59µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, mandatory, no NULLs                                      1.09    102.5±0.77µs        ? ?/sec    1.00     93.7±1.09µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs                                     1.02    168.2±2.04µs        ? ?/sec    1.00    164.8±4.25µs        ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, no NULLs                                       1.08    107.2±1.01µs        ? ?/sec    1.00     98.9±0.64µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, mandatory, no NULLs                                           1.00     28.7±0.18µs        ? ?/sec    1.00     28.6±0.28µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs                                          1.01    128.1±1.76µs        ? ?/sec    1.00    127.0±2.10µs        ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, no NULLs                                            1.00     33.4±0.26µs        ? ?/sec    1.00     33.3±0.08µs        ? ?/sec

@alamb-ghbot

This comment was marked as outdated.

@alamb-ghbot

This comment was marked as outdated.

@alamb

alamb commented Jan 16, 2026

Copy link
Copy Markdown
Contributor Author

The benchmakrs now show a small but repeatable improvement for the array types. I am not sure how real it is but I am now convinced this PR is an improvement

group                                                                                                      alamb_less_parquet_view_allocations    main
-----                                                                                                      -----------------------------------    ----
...
arrow_array_reader/BinaryViewArray/dictionary encoded, mandatory, no NULLs                                 1.00    270.3±4.43µs        ? ?/sec    1.04    280.3±4.12µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs                                1.04    240.2±2.87µs        ? ?/sec    1.00    231.5±3.62µs        ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, no NULLs                                  1.00    274.9±4.35µs        ? ?/sec    1.01    278.2±3.97µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs                                      1.00   352.1±10.76µs        ? ?/sec    1.07    376.8±5.89µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, mandatory, no NULLs, short string                        1.00    324.5±3.75µs        ? ?/sec    1.08    350.0±3.34µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs                                     1.00    290.8±3.70µs        ? ?/sec    1.03    298.8±2.92µs        ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, no NULLs                                       1.00    360.0±3.41µs        ? ?/sec    1.06    382.9±1.37µs        ? ?/sec
...
arrow_array_reader/StringViewArray/dictionary encoded, mandatory, no NULLs                                 1.01    274.2±2.40µs        ? ?/sec    1.00    271.2±4.02µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs                                1.05    240.4±0.94µs        ? ?/sec    1.00    230.1±1.69µs        ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, no NULLs                                  1.00    277.6±2.41µs        ? ?/sec    1.00    276.7±3.68µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, mandatory, no NULLs                                      1.01    506.5±6.99µs        ? ?/sec    1.00    503.3±5.39µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs                                     1.04    364.8±9.48µs        ? ?/sec    1.00    351.6±3.12µs        ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, no NULLs                                       1.01   519.1±36.53µs        ? ?/sec    1.00   512.2±11.52µs        ? ?/sec
...

@jhorstmann

Copy link
Copy Markdown
Contributor

I ran the benchmark for "arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs" locally with samply and can confirm that the code in this PR is an improvement. The difference was small, 0.5% for ViewBuffer::into_array on main vs 0.2% on this branch, so it is likely that some benchmark runs will show random fluctuation in either direction.

@alamb

alamb commented Jan 17, 2026

Copy link
Copy Markdown
Contributor Author

Thank you for double checking @jhorstmann and for the reviews @jhorstmann and @scovich

@alamb
alamb merged commit 96b3052 into apache:main Jan 17, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

parquet Changes to the parquet crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants