Skip to content

feat(parquet): generalize value encoder inputs#9955

Merged
alamb merged 1 commit into
apache:mainfrom
HippoBaro:generalize_value_enc_inputs
May 20, 2026
Merged

feat(parquet): generalize value encoder inputs#9955
alamb merged 1 commit into
apache:mainfrom
HippoBaro:generalize_value_enc_inputs

Conversation

@HippoBaro
Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

See #9731

What changes are included in this PR?

Changes byte_array encoder methods (FallbackEncoder::encode, DictEncoder::encode, etc) and all get_*_array_slice functions from &[usize] to impl ExactSizeIterator<Item = usize>.

Are these changes tested?

All tests passing.

Are there any user-facing changes?

None.

Changes `byte_array` encoder methods (`FallbackEncoder::encode`,
`DictEncoder::encode`, etc) and all `get_*_array_slice` functions from
`&[usize]` to `impl ExactSizeIterator<Item = usize>`.

Signed-off-by: Hippolyte Barraud <hippolyte.barraud@datadoghq.com>
@github-actions github-actions Bot added the parquet Changes to the parquet crate label May 10, 2026
@etseidl
Copy link
Copy Markdown
Contributor

etseidl commented May 12, 2026

run benchmark arrow_writer

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highcpu-48 (12 vCPU / 65 GiB) | Linux bench-c4435304019-24-z299j 6.12.68+ #1 SMP Wed Apr 1 02:23:28 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  48
On-line CPU(s) list:                     0-47
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     48
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               3 MiB (48 instances)
L1i cache:                               3 MiB (48 instances)
L2 cache:                                96 MiB (48 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-47
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing generalize_value_enc_inputs (bba585a) to 7abb225 (merge-base) diff
BENCH_NAME=arrow_writer
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_writer
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

Instance: c4a-highcpu-48 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  48
On-line CPU(s) list:                     0-47
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     48
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               3 MiB (48 instances)
L1i cache:                               3 MiB (48 instances)
L2 cache:                                96 MiB (48 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-47
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                              generalize_value_enc_inputs            main
-----                                              ---------------------------            ----
bool/bloom_filter                                  1.00     13.1±0.11ms    19.2 MB/sec    1.00     13.0±0.03ms    19.2 MB/sec
bool/cdc                                           1.01     15.7±0.13ms    15.9 MB/sec    1.00     15.6±0.04ms    16.1 MB/sec
bool/default                                       1.01     11.0±0.11ms    22.6 MB/sec    1.00     11.0±0.04ms    22.8 MB/sec
bool/parquet_2                                     1.01     14.8±0.12ms    16.8 MB/sec    1.00     14.7±0.05ms    17.0 MB/sec
bool/zstd                                          1.01     11.5±0.10ms    21.7 MB/sec    1.00     11.4±0.03ms    21.9 MB/sec
bool/zstd_parquet_2                                1.00     15.2±0.11ms    16.5 MB/sec    1.00     15.2±0.04ms    16.5 MB/sec
bool_non_null/bloom_filter                         1.00      7.0±0.01ms    17.9 MB/sec    1.01      7.1±0.02ms    17.6 MB/sec
bool_non_null/cdc                                  1.00      6.8±0.04ms    18.5 MB/sec    1.01      6.8±0.03ms    18.3 MB/sec
bool_non_null/default                              1.00      4.2±0.02ms    29.7 MB/sec    1.03      4.3±0.02ms    28.8 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.04ms    13.8 MB/sec    1.01      9.1±0.03ms    13.7 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.4 MB/sec    1.03      4.7±0.02ms    26.7 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.03ms    13.2 MB/sec    1.01      9.5±0.03ms    13.1 MB/sec
float_with_nans/bloom_filter                       1.00     92.6±0.28ms   151.2 MB/sec    1.01     93.3±0.41ms   150.1 MB/sec
float_with_nans/cdc                                1.00     81.0±0.32ms   172.8 MB/sec    1.00     81.3±0.18ms   172.2 MB/sec
float_with_nans/default                            1.00     73.9±0.15ms   189.5 MB/sec    1.00     74.1±0.21ms   189.0 MB/sec
float_with_nans/parquet_2                          1.00     93.9±0.31ms   149.1 MB/sec    1.01     94.6±0.40ms   148.0 MB/sec
float_with_nans/zstd                               1.00    111.6±0.13ms   125.5 MB/sec    1.00    111.8±0.33ms   125.2 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.3±0.26ms   106.6 MB/sec    1.00    131.8±0.39ms   106.2 MB/sec
list_primitive/bloom_filter                        1.03    333.9±2.26ms  1633.3 MB/sec    1.00    325.2±0.70ms  1677.0 MB/sec
list_primitive/cdc                                 1.00    359.8±2.08ms  1515.6 MB/sec    1.00    358.3±0.73ms  1522.2 MB/sec
list_primitive/default                             1.00    245.1±0.82ms     2.2 GB/sec    1.00    246.1±0.49ms     2.2 GB/sec
list_primitive/parquet_2                           1.00    267.9±0.53ms  2035.7 MB/sec    1.00    267.3±0.64ms  2040.5 MB/sec
list_primitive/zstd                                1.00    494.3±1.87ms  1103.2 MB/sec    1.00    495.5±0.42ms  1100.6 MB/sec
list_primitive/zstd_parquet_2                      1.00    490.9±0.43ms  1110.9 MB/sec    1.00    491.2±0.77ms  1110.3 MB/sec
list_primitive_non_null/bloom_filter               1.04    440.0±6.72ms  1237.0 MB/sec    1.00    423.7±7.11ms  1284.4 MB/sec
list_primitive_non_null/cdc                        1.00    435.2±6.80ms  1250.5 MB/sec    1.01    438.0±8.62ms  1242.6 MB/sec
list_primitive_non_null/default                    1.03    298.7±8.05ms  1822.2 MB/sec    1.00    290.2±2.96ms  1875.7 MB/sec
list_primitive_non_null/parquet_2                  1.00   301.9±15.56ms  1802.9 MB/sec    1.02   307.1±12.88ms  1772.0 MB/sec
list_primitive_non_null/zstd                       1.01   716.9±11.33ms   759.2 MB/sec    1.00    709.6±7.23ms   767.0 MB/sec
list_primitive_non_null/zstd_parquet_2             1.05    698.2±1.58ms   779.5 MB/sec    1.00    667.0±0.64ms   816.0 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.02     11.3±0.02ms     3.2 GB/sec    1.00     11.1±0.02ms     3.3 GB/sec
list_primitive_sparse_99pct_null/cdc               1.02     22.8±0.05ms  1641.3 MB/sec    1.00     22.4±0.05ms  1668.1 MB/sec
list_primitive_sparse_99pct_null/default           1.02     11.0±0.02ms     3.3 GB/sec    1.00     10.8±0.05ms     3.4 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.02     11.0±0.02ms     3.3 GB/sec    1.00     10.8±0.02ms     3.4 GB/sec
list_primitive_sparse_99pct_null/zstd              1.02     12.8±0.02ms     2.8 GB/sec    1.00     12.6±0.02ms     2.9 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.02     11.1±0.02ms     3.3 GB/sec    1.00     10.9±0.02ms     3.3 GB/sec
primitive/bloom_filter                             1.02    152.7±0.92ms   293.9 MB/sec    1.00    149.0±0.36ms   301.1 MB/sec
primitive/cdc                                      1.00    159.7±0.78ms   280.9 MB/sec    1.00    159.2±0.75ms   281.9 MB/sec
primitive/default                                  1.01    118.8±0.59ms   377.9 MB/sec    1.00    117.2±0.22ms   383.0 MB/sec
primitive/parquet_2                                1.02    134.1±0.82ms   334.7 MB/sec    1.00    132.1±0.18ms   339.8 MB/sec
primitive/zstd                                     1.01    148.6±0.69ms   302.1 MB/sec    1.00    146.6±0.17ms   306.0 MB/sec
primitive/zstd_parquet_2                           1.01    166.9±0.64ms   268.9 MB/sec    1.00    165.2±0.18ms   271.6 MB/sec
primitive_all_null/bloom_filter                    1.00     11.4±0.15ms     3.8 GB/sec    1.00     11.5±0.11ms     3.8 GB/sec
primitive_all_null/cdc                             1.00     30.6±0.45ms  1464.2 MB/sec    1.00     30.5±0.33ms  1470.8 MB/sec
primitive_all_null/default                         1.00     10.8±0.09ms     4.1 GB/sec    1.02     11.0±0.18ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     10.8±0.16ms     4.0 GB/sec    1.01     11.0±0.23ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.0±0.20ms     4.0 GB/sec    1.00     11.0±0.13ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     10.9±0.12ms     4.0 GB/sec    1.01     11.0±0.18ms     4.0 GB/sec
primitive_non_null/bloom_filter                    1.00    108.4±0.31ms   405.7 MB/sec    1.04    112.9±1.34ms   389.6 MB/sec
primitive_non_null/cdc                             1.00     90.2±0.33ms   487.6 MB/sec    1.00     90.1±0.47ms   488.1 MB/sec
primitive_non_null/default                         1.00     67.7±0.15ms   650.3 MB/sec    1.00     67.4±0.15ms   652.5 MB/sec
primitive_non_null/parquet_2                       1.01     89.6±0.24ms   490.9 MB/sec    1.00     89.0±0.23ms   494.5 MB/sec
primitive_non_null/zstd                            1.00    105.1±0.26ms   418.5 MB/sec    1.00    105.1±0.27ms   418.7 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    123.6±0.80ms   356.1 MB/sec    1.05    130.0±1.72ms   338.6 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     17.9±0.08ms     2.4 GB/sec    1.01     18.1±0.08ms     2.4 GB/sec
primitive_sparse_99pct_null/cdc                    1.01     36.9±0.33ms  1215.4 MB/sec    1.00     36.7±0.30ms  1222.1 MB/sec
primitive_sparse_99pct_null/default                1.00     16.6±0.03ms     2.6 GB/sec    1.01     16.7±0.04ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     16.6±0.03ms     2.6 GB/sec    1.01     16.7±0.03ms     2.6 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     19.8±0.04ms     2.2 GB/sec    1.01     20.0±0.05ms     2.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     18.5±0.04ms     2.4 GB/sec    1.01     18.6±0.04ms     2.4 GB/sec
string/bloom_filter                                1.00    209.7±1.93ms     2.4 GB/sec    1.10   230.8±24.81ms     2.2 GB/sec
string/cdc                                         1.00    222.4±5.61ms     2.3 GB/sec    1.00    221.5±5.66ms     2.3 GB/sec
string/default                                     1.00    120.2±2.19ms     4.3 GB/sec    1.17   141.1±24.91ms     3.6 GB/sec
string/parquet_2                                   1.00    108.9±5.49ms     4.7 GB/sec    1.14    124.6±0.36ms     4.1 GB/sec
string/zstd                                        1.00    418.4±2.63ms  1253.1 MB/sec    1.02    425.7±2.76ms  1231.6 MB/sec
string/zstd_parquet_2                              1.00    394.0±0.57ms  1330.5 MB/sec    1.00    394.8±0.44ms  1327.7 MB/sec
string_and_binary_view/bloom_filter                1.00     64.8±0.32ms   497.8 MB/sec    1.00     64.6±0.18ms   499.0 MB/sec
string_and_binary_view/cdc                         1.01     59.1±0.35ms   545.3 MB/sec    1.00     58.8±0.11ms   548.1 MB/sec
string_and_binary_view/default                     1.00     48.4±0.23ms   666.2 MB/sec    1.00     48.2±0.12ms   669.2 MB/sec
string_and_binary_view/parquet_2                   1.00     59.4±0.36ms   543.1 MB/sec    1.00     59.1±0.12ms   545.6 MB/sec
string_and_binary_view/zstd                        1.01     85.1±0.32ms   379.1 MB/sec    1.00     84.6±0.12ms   381.0 MB/sec
string_and_binary_view/zstd_parquet_2              1.01     73.3±0.34ms   439.8 MB/sec    1.00     72.9±0.12ms   442.2 MB/sec
string_dictionary/bloom_filter                     1.01     91.5±0.40ms     2.8 GB/sec    1.00     90.9±0.61ms     2.8 GB/sec
string_dictionary/cdc                              1.00     53.4±0.24ms     4.8 GB/sec    1.59     85.0±0.67ms     3.0 GB/sec
string_dictionary/default                          1.02     49.4±0.23ms     5.2 GB/sec    1.00     48.6±0.33ms     5.3 GB/sec
string_dictionary/parquet_2                        1.02     54.6±0.22ms     4.7 GB/sec    1.00     53.6±0.29ms     4.8 GB/sec
string_dictionary/zstd                             1.00    208.9±0.26ms  1264.6 MB/sec    1.00    209.2±0.64ms  1262.7 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.5±0.50ms  1330.7 MB/sec    1.00    198.6±0.13ms  1330.1 MB/sec
string_non_null/bloom_filter                       1.01   259.0±12.52ms  2023.0 MB/sec    1.00   256.7±15.02ms  2041.4 MB/sec
string_non_null/cdc                                1.01   272.4±11.69ms  1923.5 MB/sec    1.00    270.0±9.44ms  1940.6 MB/sec
string_non_null/default                            1.06   134.1±13.07ms     3.8 GB/sec    1.00   126.9±12.50ms     4.0 GB/sec
string_non_null/parquet_2                          1.06    149.8±0.30ms     3.4 GB/sec    1.00   141.3±11.77ms     3.6 GB/sec
string_non_null/zstd                               1.06    564.4±6.51ms   928.5 MB/sec    1.00    531.2±1.59ms   986.4 MB/sec
string_non_null/zstd_parquet_2                     1.02    518.4±6.71ms  1010.8 MB/sec    1.00    507.2±2.26ms  1033.2 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.00ms     6.2 GB/sec    1.00      2.5±0.00ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.9±0.16ms  1627.5 MB/sec    1.00      9.9±0.30ms  1625.3 MB/sec
struct_all_null/default                            1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/parquet_2                          1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/zstd                               1.01      2.3±0.00ms     6.8 GB/sec    1.00      2.3±0.00ms     6.8 GB/sec
struct_all_null/zstd_parquet_2                     1.00      2.3±0.00ms     6.9 GB/sec    1.00      2.3±0.00ms     6.9 GB/sec
struct_non_null/bloom_filter                       1.00     46.4±0.14ms   344.5 MB/sec    1.00     46.3±0.14ms   345.7 MB/sec
struct_non_null/cdc                                1.00     45.1±0.13ms   354.8 MB/sec    1.00     45.2±0.14ms   353.9 MB/sec
struct_non_null/default                            1.00     31.9±0.11ms   501.5 MB/sec    1.00     31.9±0.12ms   501.6 MB/sec
struct_non_null/parquet_2                          1.00     40.6±0.10ms   394.1 MB/sec    1.00     40.5±0.10ms   394.9 MB/sec
struct_non_null/zstd                               1.00     40.6±0.09ms   394.6 MB/sec    1.00     40.6±0.10ms   394.0 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.5±0.13ms   293.6 MB/sec    1.00     54.6±0.10ms   293.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.3±0.02ms     2.1 GB/sec    1.01      7.4±0.02ms     2.1 GB/sec
struct_sparse_99pct_null/cdc                       1.00     15.3±0.11ms  1050.8 MB/sec    1.00     15.3±0.07ms  1053.0 MB/sec
struct_sparse_99pct_null/default                   1.00      6.9±0.01ms     2.3 GB/sec    1.00      6.9±0.01ms     2.3 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.9±0.01ms     2.3 GB/sec    1.01      6.9±0.01ms     2.3 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.2±0.01ms  1964.0 MB/sec    1.00      8.2±0.01ms  1957.2 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.6±0.01ms     2.1 GB/sec    1.00      7.7±0.01ms     2.1 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 1935.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1878.5s
CPU sys 54.3s
Peak spill 0 B

branch

Metric Value
Wall time 1940.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1884.1s
CPU sys 54.6s
Peak spill 0 B

File an issue against this benchmark runner

@HippoBaro
Copy link
Copy Markdown
Contributor Author

@alamb @etseidl This is ready for review. I am not sure why parquet_derive / Test (pull_request) timed out. It passes locally.

This is the second-to-last PR in my series #9653. We're almost there! 💪

@alamb
Copy link
Copy Markdown
Contributor

alamb commented May 20, 2026

run benchmark arrow_writer

1 similar comment
@alamb
Copy link
Copy Markdown
Contributor

alamb commented May 20, 2026

run benchmark arrow_writer

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4502500677-243-pvjqb 6.12.68+ #1 SMP Wed Apr 1 02:23:28 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing generalize_value_enc_inputs (bba585a) to 7abb225 (merge-base) diff
BENCH_NAME=arrow_writer
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_writer
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4502500883-244-7js56 6.12.68+ #1 SMP Wed Apr 1 02:23:28 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing generalize_value_enc_inputs (bba585a) to 7abb225 (merge-base) diff
BENCH_NAME=arrow_writer
BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_writer
BENCH_FILTER=
Results will be posted here when complete


File an issue against this benchmark runner

Copy link
Copy Markdown
Contributor

@alamb alamb left a comment

Choose a reason for hiding this comment

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

Thanks @HippoBaro -- makes sense to me


/// Encode `values` to the in-progress page
fn encode<T>(&mut self, values: T, indices: &[usize])
fn encode<T>(&mut self, values: T, indices: impl ExactSizeIterator<Item = usize>)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I was missing the bigger picture here -- specifically I couldn't figure out why you wanted to make this generic (and when would it be better than &[usize])? It looked to me like all the callsites are passing in &[usize] anyways -- so it is not clear to me what benefit the extra templating achieves

However, after asking Claude, it seems the answer is that making this PR generic avoids collecting a Vec in the next PR in the series -- specifically avoiding the non_null_indices: Vec<usize> in

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.

Yes apologies for being lazy with my PR descriptions... That is accurate. The next PR in the series will use this so that we avoid materializing intermediary [usize] in the cases where that's possible.

@alamb alamb merged commit 4b80f0e into apache:main May 20, 2026
17 of 18 checks passed
@alamb
Copy link
Copy Markdown
Contributor

alamb commented May 20, 2026

Onward!

@alamb
Copy link
Copy Markdown
Contributor

alamb commented May 20, 2026

@alamb @etseidl This is ready for review. I am not sure why parquet_derive / Test (pull_request) timed out. It passes locally.

FWIW I restarted this test and it seems to have passed on re-run

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                              generalize_value_enc_inputs            main
-----                                              ---------------------------            ----
bool/bloom_filter                                  1.00     13.0±0.05ms    19.2 MB/sec    1.00     13.1±0.07ms    19.2 MB/sec
bool/cdc                                           1.01     15.8±0.28ms    15.8 MB/sec    1.00     15.7±0.09ms    16.0 MB/sec
bool/default                                       1.00     10.9±0.03ms    23.0 MB/sec    1.00     10.9±0.07ms    22.9 MB/sec
bool/parquet_2                                     1.00     14.8±0.04ms    16.9 MB/sec    1.00     14.8±0.08ms    16.9 MB/sec
bool/zstd                                          1.00     11.4±0.04ms    21.9 MB/sec    1.00     11.5±0.07ms    21.8 MB/sec
bool/zstd_parquet_2                                1.00     15.1±0.04ms    16.5 MB/sec    1.00     15.2±0.08ms    16.4 MB/sec
bool_non_null/bloom_filter                         1.00      7.0±0.03ms    17.8 MB/sec    1.00      7.0±0.02ms    17.8 MB/sec
bool_non_null/cdc                                  1.02      6.9±0.03ms    18.1 MB/sec    1.00      6.8±0.03ms    18.4 MB/sec
bool_non_null/default                              1.00      4.3±0.02ms    29.3 MB/sec    1.00      4.3±0.02ms    29.3 MB/sec
bool_non_null/parquet_2                            1.00      9.1±0.03ms    13.8 MB/sec    1.01      9.1±0.03ms    13.7 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.1 MB/sec    1.00      4.6±0.02ms    27.2 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.03ms    13.2 MB/sec    1.01      9.6±0.03ms    13.1 MB/sec
float_with_nans/bloom_filter                       1.01     93.6±0.25ms   149.5 MB/sec    1.00     92.8±0.41ms   150.8 MB/sec
float_with_nans/cdc                                1.00     81.4±0.17ms   172.0 MB/sec    1.00     81.4±0.17ms   172.0 MB/sec
float_with_nans/default                            1.00     74.4±0.16ms   188.3 MB/sec    1.00     74.2±0.22ms   188.6 MB/sec
float_with_nans/parquet_2                          1.00     94.5±0.28ms   148.2 MB/sec    1.00     94.3±0.37ms   148.5 MB/sec
float_with_nans/zstd                               1.00    112.0±0.18ms   125.0 MB/sec    1.00    111.9±0.20ms   125.2 MB/sec
float_with_nans/zstd_parquet_2                     1.01    132.5±0.53ms   105.6 MB/sec    1.00    131.4±0.38ms   106.6 MB/sec
list_primitive/bloom_filter                        1.00    324.3±0.97ms  1681.5 MB/sec    1.00    324.7±1.08ms  1679.5 MB/sec
list_primitive/cdc                                 1.00    357.1±1.46ms  1527.2 MB/sec    1.00    357.7±0.77ms  1524.7 MB/sec
list_primitive/default                             1.01    247.6±0.79ms     2.2 GB/sec    1.00    246.3±0.42ms     2.2 GB/sec
list_primitive/parquet_2                           1.00    267.9±0.45ms  2035.9 MB/sec    1.00    267.6±0.36ms  2037.8 MB/sec
list_primitive/zstd                                1.00    497.0±2.02ms  1097.4 MB/sec    1.00    496.2±0.42ms  1099.2 MB/sec
list_primitive/zstd_parquet_2                      1.00    491.3±0.41ms  1110.1 MB/sec    1.00    490.9±0.43ms  1110.9 MB/sec
list_primitive_non_null/bloom_filter               1.00    418.0±3.08ms  1302.0 MB/sec    1.01   422.0±15.16ms  1289.7 MB/sec
list_primitive_non_null/cdc                        1.00    437.8±8.45ms  1243.2 MB/sec    1.00    439.5±7.90ms  1238.2 MB/sec
list_primitive_non_null/default                    1.00    290.3±4.78ms  1874.8 MB/sec    1.00    290.1±2.97ms  1876.1 MB/sec
list_primitive_non_null/parquet_2                  1.05    324.3±0.70ms  1678.1 MB/sec    1.00   310.2±13.54ms  1754.7 MB/sec
list_primitive_non_null/zstd                       1.00   703.2±10.82ms   774.0 MB/sec    1.01    713.6±4.22ms   762.7 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    687.3±3.34ms   791.9 MB/sec    1.00   687.3±26.83ms   791.8 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.4±0.04ms     3.2 GB/sec    1.05     11.9±0.25ms     3.1 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.9±0.09ms  1631.2 MB/sec    1.02     23.5±0.12ms  1591.9 MB/sec
list_primitive_sparse_99pct_null/default           1.00     11.0±0.04ms     3.3 GB/sec    1.00     11.1±0.05ms     3.3 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.1±0.04ms     3.3 GB/sec    1.02     11.3±0.07ms     3.2 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.9±0.04ms     2.8 GB/sec    1.02     13.1±0.08ms     2.8 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.2±0.04ms     3.3 GB/sec    1.03     11.5±0.07ms     3.2 GB/sec
primitive/bloom_filter                             1.00    151.9±0.51ms   295.3 MB/sec    1.00    152.2±0.72ms   294.9 MB/sec
primitive/cdc                                      1.00    160.2±0.43ms   280.2 MB/sec    1.00    160.2±0.79ms   280.2 MB/sec
primitive/default                                  1.01    119.7±0.63ms   375.0 MB/sec    1.00    119.0±0.49ms   377.1 MB/sec
primitive/parquet_2                                1.00    134.4±0.83ms   334.0 MB/sec    1.00    133.9±0.61ms   335.1 MB/sec
primitive/zstd                                     1.00    148.7±0.31ms   301.7 MB/sec    1.00    148.6±0.59ms   302.0 MB/sec
primitive/zstd_parquet_2                           1.00    167.5±0.27ms   267.9 MB/sec    1.00    167.2±0.52ms   268.4 MB/sec
primitive_all_null/bloom_filter                    1.00     11.6±0.32ms     3.8 GB/sec    1.01     11.8±0.24ms     3.7 GB/sec
primitive_all_null/cdc                             1.06     30.6±0.47ms  1466.1 MB/sec    1.00     28.9±0.38ms  1551.7 MB/sec
primitive_all_null/default                         1.00     10.9±0.12ms     4.0 GB/sec    1.00     10.9±0.12ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     10.9±0.23ms     4.0 GB/sec    1.01     11.0±0.29ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.1±0.26ms     3.9 GB/sec    1.00     11.1±0.19ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.1±0.25ms     4.0 GB/sec    1.01     11.1±0.24ms     3.9 GB/sec
primitive_non_null/bloom_filter                    1.00    109.4±0.64ms   402.3 MB/sec    1.05    115.4±1.38ms   381.4 MB/sec
primitive_non_null/cdc                             1.01     91.4±0.34ms   481.6 MB/sec    1.00     90.7±0.52ms   485.0 MB/sec
primitive_non_null/default                         1.01     68.8±0.70ms   639.1 MB/sec    1.00     67.9±0.25ms   647.6 MB/sec
primitive_non_null/parquet_2                       1.01     90.6±0.27ms   485.6 MB/sec    1.00     89.9±0.38ms   489.4 MB/sec
primitive_non_null/zstd                            1.01    106.8±0.26ms   411.9 MB/sec    1.00    105.8±0.33ms   416.0 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    124.8±0.93ms   352.5 MB/sec    1.05    130.8±1.87ms   336.4 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     18.4±0.13ms     2.4 GB/sec    1.00     18.2±0.10ms     2.4 GB/sec
primitive_sparse_99pct_null/cdc                    1.03     37.2±0.34ms  1205.7 MB/sec    1.00     36.1±0.38ms  1243.9 MB/sec
primitive_sparse_99pct_null/default                1.00     16.8±0.06ms     2.6 GB/sec    1.00     16.7±0.06ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     16.8±0.07ms     2.6 GB/sec    1.00     16.8±0.08ms     2.6 GB/sec
primitive_sparse_99pct_null/zstd                   1.01     20.3±0.08ms     2.2 GB/sec    1.00     20.2±0.13ms     2.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     18.7±0.08ms     2.3 GB/sec    1.02     19.1±0.17ms     2.3 GB/sec
string/bloom_filter                                1.00    216.5±3.12ms     2.4 GB/sec    1.09   236.4±27.55ms     2.2 GB/sec
string/cdc                                         1.01    223.7±5.68ms     2.3 GB/sec    1.00    222.6±6.17ms     2.3 GB/sec
string/default                                     1.00    123.3±1.82ms     4.2 GB/sec    1.21   149.4±28.02ms     3.4 GB/sec
string/parquet_2                                   1.00    110.1±5.67ms     4.7 GB/sec    1.17    128.2±0.29ms     4.0 GB/sec
string/zstd                                        1.00    425.1±2.86ms  1233.3 MB/sec    1.01    427.3±3.11ms  1226.9 MB/sec
string/zstd_parquet_2                              1.00    394.7±0.65ms  1328.1 MB/sec    1.00    395.4±0.45ms  1326.0 MB/sec
string_and_binary_view/bloom_filter                1.01     65.1±0.25ms   495.6 MB/sec    1.00     64.6±0.29ms   499.0 MB/sec
string_and_binary_view/cdc                         1.00     59.3±0.22ms   543.9 MB/sec    1.00     59.2±0.20ms   544.3 MB/sec
string_and_binary_view/default                     1.01     48.9±3.29ms   659.7 MB/sec    1.00     48.3±0.15ms   667.2 MB/sec
string_and_binary_view/parquet_2                   1.00     59.5±0.21ms   541.8 MB/sec    1.00     59.2±0.16ms   544.5 MB/sec
string_and_binary_view/zstd                        1.00     85.0±0.21ms   379.2 MB/sec    1.00     84.9±0.17ms   380.0 MB/sec
string_and_binary_view/zstd_parquet_2              1.01     73.6±0.22ms   438.3 MB/sec    1.00     73.1±0.21ms   441.4 MB/sec
string_dictionary/bloom_filter                     1.03     93.9±0.64ms     2.7 GB/sec    1.00     91.1±0.80ms     2.8 GB/sec
string_dictionary/cdc                              1.00     54.2±0.43ms     4.8 GB/sec    1.62     87.5±0.73ms     2.9 GB/sec
string_dictionary/default                          1.03     50.5±0.50ms     5.1 GB/sec    1.00     49.1±0.34ms     5.3 GB/sec
string_dictionary/parquet_2                        1.02     55.2±0.18ms     4.7 GB/sec    1.00     54.0±0.20ms     4.8 GB/sec
string_dictionary/zstd                             1.01    211.4±0.72ms  1249.7 MB/sec    1.00    209.9±0.74ms  1258.5 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.3±0.81ms  1325.3 MB/sec    1.00    198.5±0.22ms  1330.4 MB/sec
string_non_null/bloom_filter                       1.00   259.0±13.15ms  2023.4 MB/sec    1.01   261.6±17.07ms  2002.7 MB/sec
string_non_null/cdc                                1.02   274.7±11.75ms  1907.9 MB/sec    1.00    270.4±9.94ms  1937.7 MB/sec
string_non_null/default                            1.05   137.1±13.14ms     3.7 GB/sec    1.00   131.2±14.35ms     3.9 GB/sec
string_non_null/parquet_2                          1.00    137.5±0.51ms     3.7 GB/sec    1.04   143.5±12.90ms     3.6 GB/sec
string_non_null/zstd                               1.07    568.5±7.90ms   921.8 MB/sec    1.00    532.6±1.69ms   983.9 MB/sec
string_non_null/zstd_parquet_2                     1.02    518.2±5.91ms  1011.3 MB/sec    1.00    508.2±2.34ms  1031.1 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.00ms     6.2 GB/sec    1.00      2.5±0.00ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.9±0.13ms  1628.0 MB/sec    1.04     10.3±0.57ms  1571.7 MB/sec
struct_all_null/default                            1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/parquet_2                          1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/zstd                               1.00      2.3±0.00ms     6.8 GB/sec    1.00      2.3±0.00ms     6.8 GB/sec
struct_all_null/zstd_parquet_2                     1.00      2.3±0.00ms     6.9 GB/sec    1.00      2.3±0.00ms     6.9 GB/sec
struct_non_null/bloom_filter                       1.00     46.5±0.17ms   344.1 MB/sec    1.01     47.2±0.39ms   339.1 MB/sec
struct_non_null/cdc                                1.00     45.5±0.16ms   351.5 MB/sec    1.01     46.0±1.08ms   347.8 MB/sec
struct_non_null/default                            1.00     32.3±0.11ms   495.5 MB/sec    1.00     32.4±0.22ms   494.1 MB/sec
struct_non_null/parquet_2                          1.00     41.0±0.13ms   390.1 MB/sec    1.00     41.0±0.13ms   390.0 MB/sec
struct_non_null/zstd                               1.00     41.0±0.12ms   390.1 MB/sec    1.00     41.0±0.22ms   390.2 MB/sec
struct_non_null/zstd_parquet_2                     1.00     55.0±0.14ms   290.7 MB/sec    1.00     55.0±0.14ms   290.8 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.4±0.03ms     2.1 GB/sec    1.06      7.8±0.09ms     2.0 GB/sec
struct_sparse_99pct_null/cdc                       1.04     15.3±0.10ms  1052.1 MB/sec    1.00     14.7±0.11ms  1098.7 MB/sec
struct_sparse_99pct_null/default                   1.00      6.9±0.02ms     2.3 GB/sec    1.03      7.1±0.05ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.9±0.02ms     2.3 GB/sec    1.04      7.2±0.05ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.2±0.02ms  1958.1 MB/sec    1.03      8.5±0.05ms  1897.3 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.7±0.02ms     2.1 GB/sec    1.03      7.9±0.06ms  2036.9 MB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 1950.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1885.0s
CPU sys 61.0s
Peak spill 0 B

branch

Metric Value
Wall time 1940.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1888.0s
CPU sys 49.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                              generalize_value_enc_inputs            main
-----                                              ---------------------------            ----
bool/bloom_filter                                  1.00     13.0±0.03ms    19.3 MB/sec    1.00     12.9±0.03ms    19.3 MB/sec
bool/cdc                                           1.00     15.6±0.04ms    16.1 MB/sec    1.00     15.5±0.04ms    16.1 MB/sec
bool/default                                       1.00     10.9±0.03ms    23.0 MB/sec    1.00     10.9±0.03ms    23.0 MB/sec
bool/parquet_2                                     1.00     14.7±0.04ms    17.0 MB/sec    1.00     14.7±0.03ms    17.0 MB/sec
bool/zstd                                          1.00     11.4±0.02ms    22.0 MB/sec    1.00     11.4±0.03ms    21.9 MB/sec
bool/zstd_parquet_2                                1.00     15.1±0.03ms    16.6 MB/sec    1.00     15.1±0.03ms    16.6 MB/sec
bool_non_null/bloom_filter                         1.00      7.0±0.02ms    17.8 MB/sec    1.00      7.0±0.02ms    17.8 MB/sec
bool_non_null/cdc                                  1.00      6.8±0.02ms    18.4 MB/sec    1.00      6.8±0.03ms    18.4 MB/sec
bool_non_null/default                              1.00      4.2±0.02ms    29.4 MB/sec    1.00      4.2±0.02ms    29.5 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.9 MB/sec    1.01      9.1±0.04ms    13.7 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.2 MB/sec    1.00      4.6±0.02ms    27.2 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.03ms    13.2 MB/sec    1.01      9.5±0.04ms    13.1 MB/sec
float_with_nans/bloom_filter                       1.00     93.3±0.26ms   150.1 MB/sec    1.01     94.0±0.41ms   148.9 MB/sec
float_with_nans/cdc                                1.00     81.3±0.15ms   172.2 MB/sec    1.01     82.5±1.75ms   169.7 MB/sec
float_with_nans/default                            1.00     74.3±0.18ms   188.4 MB/sec    1.01     74.7±0.22ms   187.4 MB/sec
float_with_nans/parquet_2                          1.00     94.6±0.25ms   148.0 MB/sec    1.01     95.3±0.36ms   146.9 MB/sec
float_with_nans/zstd                               1.00    112.1±0.14ms   124.8 MB/sec    1.00    112.4±0.22ms   124.6 MB/sec
float_with_nans/zstd_parquet_2                     1.00    132.1±0.24ms   106.0 MB/sec    1.00    132.4±0.39ms   105.7 MB/sec
list_primitive/bloom_filter                        1.00    333.7±1.89ms  1634.5 MB/sec    1.00    332.0±4.91ms  1642.5 MB/sec
list_primitive/cdc                                 1.01    362.0±2.13ms  1506.4 MB/sec    1.00    359.1±0.93ms  1518.9 MB/sec
list_primitive/default                             1.00    247.4±0.67ms     2.2 GB/sec    1.02    252.2±4.84ms     2.1 GB/sec
list_primitive/parquet_2                           1.00    269.0±0.57ms  2027.4 MB/sec    1.01    272.7±4.78ms  1999.7 MB/sec
list_primitive/zstd                                1.00    497.4±2.81ms  1096.5 MB/sec    1.01    503.1±4.89ms  1084.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    492.9±0.42ms  1106.5 MB/sec    1.01    496.9±5.62ms  1097.6 MB/sec
list_primitive_non_null/bloom_filter               1.01    429.4±8.01ms  1267.4 MB/sec    1.00    423.2±3.47ms  1286.0 MB/sec
list_primitive_non_null/cdc                        1.00    437.3±6.94ms  1244.5 MB/sec    1.01    441.2±7.33ms  1233.6 MB/sec
list_primitive_non_null/default                    1.04    298.5±7.30ms  1823.4 MB/sec    1.00    287.7±2.85ms  1891.9 MB/sec
list_primitive_non_null/parquet_2                  1.00   309.9±14.28ms  1756.1 MB/sec    1.00   308.8±12.70ms  1762.6 MB/sec
list_primitive_non_null/zstd                       1.01    722.9±9.81ms   752.8 MB/sec    1.00    715.9±3.88ms   760.2 MB/sec
list_primitive_non_null/zstd_parquet_2             1.02    701.9±2.31ms   775.4 MB/sec    1.00    686.2±1.64ms   793.1 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.4±0.03ms     3.2 GB/sec    1.01     11.5±0.22ms     3.2 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     23.0±0.04ms  1627.2 MB/sec    1.01     23.2±0.04ms  1610.5 MB/sec
list_primitive_sparse_99pct_null/default           1.00     11.1±0.02ms     3.3 GB/sec    1.01     11.2±0.07ms     3.3 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.1±0.02ms     3.3 GB/sec    1.01     11.2±0.07ms     3.3 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.9±0.02ms     2.8 GB/sec    1.01     13.1±0.08ms     2.8 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.2±0.02ms     3.3 GB/sec    1.01     11.3±0.07ms     3.2 GB/sec
primitive/bloom_filter                             1.00    150.5±0.34ms   298.2 MB/sec    1.00    150.1±0.32ms   298.9 MB/sec
primitive/cdc                                      1.01    159.4±0.38ms   281.6 MB/sec    1.00    158.5±0.42ms   283.2 MB/sec
primitive/default                                  1.00    118.3±0.23ms   379.4 MB/sec    1.00    118.1±0.24ms   380.1 MB/sec
primitive/parquet_2                                1.00    133.3±0.18ms   336.6 MB/sec    1.00    132.8±0.15ms   337.8 MB/sec
primitive/zstd                                     1.00    147.9±0.17ms   303.5 MB/sec    1.00    147.4±0.18ms   304.5 MB/sec
primitive/zstd_parquet_2                           1.00    166.6±0.19ms   269.3 MB/sec    1.00    166.3±0.55ms   269.9 MB/sec
primitive_all_null/bloom_filter                    1.01     11.7±0.38ms     3.8 GB/sec    1.00     11.5±0.16ms     3.8 GB/sec
primitive_all_null/cdc                             1.07     30.7±0.51ms  1459.9 MB/sec    1.00     28.8±0.31ms  1557.8 MB/sec
primitive_all_null/default                         1.01     10.9±0.24ms     4.0 GB/sec    1.00     10.9±0.10ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     10.9±0.20ms     4.0 GB/sec    1.00     10.9±0.17ms     4.0 GB/sec
primitive_all_null/zstd                            1.01     11.1±0.21ms     3.9 GB/sec    1.00     11.1±0.21ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.1±0.27ms     4.0 GB/sec    1.00     11.0±0.17ms     4.0 GB/sec
primitive_non_null/bloom_filter                    1.00    107.9±0.20ms   408.0 MB/sec    1.06    114.6±1.31ms   384.0 MB/sec
primitive_non_null/cdc                             1.00     90.8±0.25ms   484.6 MB/sec    1.01     91.3±0.50ms   481.8 MB/sec
primitive_non_null/default                         1.01     68.1±0.12ms   646.1 MB/sec    1.00     67.8±0.12ms   649.3 MB/sec
primitive_non_null/parquet_2                       1.01     90.6±0.33ms   485.6 MB/sec    1.00     89.5±0.17ms   491.8 MB/sec
primitive_non_null/zstd                            1.01    105.7±0.16ms   416.3 MB/sec    1.00    105.1±0.15ms   418.8 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    124.0±0.82ms   354.9 MB/sec    1.06    130.9±1.78ms   336.0 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     18.3±0.07ms     2.4 GB/sec    1.01     18.4±0.08ms     2.4 GB/sec
primitive_sparse_99pct_null/cdc                    1.04     37.3±0.32ms  1203.9 MB/sec    1.00     35.8±0.27ms  1253.0 MB/sec
primitive_sparse_99pct_null/default                1.00     16.7±0.04ms     2.6 GB/sec    1.00     16.8±0.03ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     16.7±0.04ms     2.6 GB/sec    1.00     16.8±0.04ms     2.6 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.0±0.04ms     2.2 GB/sec    1.00     20.1±0.04ms     2.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     18.7±0.04ms     2.3 GB/sec    1.00     18.8±0.05ms     2.3 GB/sec
string/bloom_filter                                1.00    207.2±1.73ms     2.5 GB/sec    1.11   230.9±24.69ms     2.2 GB/sec
string/cdc                                         1.01    223.1±5.22ms     2.3 GB/sec    1.00    221.8±5.69ms     2.3 GB/sec
string/default                                     1.00    118.4±1.36ms     4.3 GB/sec    1.19   141.4±24.30ms     3.6 GB/sec
string/parquet_2                                   1.00    108.6±5.27ms     4.7 GB/sec    1.16    126.1±0.22ms     4.1 GB/sec
string/zstd                                        1.00    420.6±2.53ms  1246.3 MB/sec    1.01    426.2±2.37ms  1230.0 MB/sec
string/zstd_parquet_2                              1.00    396.2±1.19ms  1323.1 MB/sec    1.00    395.8±0.30ms  1324.6 MB/sec
string_and_binary_view/bloom_filter                1.00     64.8±0.10ms   497.4 MB/sec    1.01     65.6±0.11ms   491.5 MB/sec
string_and_binary_view/cdc                         1.00     59.0±0.11ms   546.8 MB/sec    1.00     59.1±0.12ms   545.9 MB/sec
string_and_binary_view/default                     1.00     48.3±0.08ms   668.2 MB/sec    1.00     48.2±0.08ms   669.0 MB/sec
string_and_binary_view/parquet_2                   1.00     59.3±0.09ms   544.1 MB/sec    1.00     59.2±0.10ms   544.8 MB/sec
string_and_binary_view/zstd                        1.00     84.8±0.10ms   380.3 MB/sec    1.01     85.4±0.22ms   377.6 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.2±0.10ms   440.6 MB/sec    1.00     73.1±0.10ms   441.4 MB/sec
string_dictionary/bloom_filter                     1.00     91.2±0.37ms     2.8 GB/sec    1.00     91.6±0.71ms     2.8 GB/sec
string_dictionary/cdc                              1.00     53.4±0.09ms     4.8 GB/sec    1.60     85.2±0.66ms     3.0 GB/sec
string_dictionary/default                          1.01     49.7±0.21ms     5.2 GB/sec    1.00     49.2±0.31ms     5.2 GB/sec
string_dictionary/parquet_2                        1.01     54.7±0.18ms     4.7 GB/sec    1.00     53.9±0.14ms     4.8 GB/sec
string_dictionary/zstd                             1.00    209.7±0.21ms  1259.6 MB/sec    1.00    210.4±0.70ms  1255.2 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.6±0.26ms  1323.3 MB/sec    1.00    199.0±0.17ms  1327.2 MB/sec
string_non_null/bloom_filter                       1.02   260.7±11.73ms  2009.6 MB/sec    1.00   256.8±14.84ms  2040.4 MB/sec
string_non_null/cdc                                1.01   273.1±10.94ms  1918.9 MB/sec    1.00    270.2±8.79ms  1939.7 MB/sec
string_non_null/default                            1.06   134.5±12.73ms     3.8 GB/sec    1.00   127.3±12.15ms     4.0 GB/sec
string_non_null/parquet_2                          1.05    148.8±0.46ms     3.4 GB/sec    1.00   141.2±11.45ms     3.6 GB/sec
string_non_null/zstd                               1.06    567.7±6.25ms   923.0 MB/sec    1.00    533.2±1.51ms   982.8 MB/sec
string_non_null/zstd_parquet_2                     1.02    520.6±6.32ms  1006.5 MB/sec    1.00    507.9±2.27ms  1031.7 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.00ms     6.2 GB/sec    1.00      2.5±0.00ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.8±0.11ms  1638.9 MB/sec    1.02     10.0±0.15ms  1605.8 MB/sec
struct_all_null/default                            1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/parquet_2                          1.00      2.3±0.00ms     7.0 GB/sec    1.00      2.3±0.00ms     7.0 GB/sec
struct_all_null/zstd                               1.00      2.3±0.00ms     6.8 GB/sec    1.00      2.3±0.00ms     6.9 GB/sec
struct_all_null/zstd_parquet_2                     1.00      2.3±0.00ms     6.9 GB/sec    1.00      2.3±0.00ms     6.9 GB/sec
struct_non_null/bloom_filter                       1.00     46.5±0.13ms   344.3 MB/sec    1.02     47.5±0.11ms   337.2 MB/sec
struct_non_null/cdc                                1.00     45.7±0.16ms   350.0 MB/sec    1.00     45.6±0.11ms   351.0 MB/sec
struct_non_null/default                            1.01     32.3±0.10ms   494.9 MB/sec    1.00     32.1±0.08ms   498.2 MB/sec
struct_non_null/parquet_2                          1.00     41.0±0.11ms   390.5 MB/sec    1.00     40.9±0.49ms   391.6 MB/sec
struct_non_null/zstd                               1.00     41.1±0.09ms   389.6 MB/sec    1.00     41.1±0.17ms   389.1 MB/sec
struct_non_null/zstd_parquet_2                     1.00     55.1±0.13ms   290.4 MB/sec    1.01     55.4±0.18ms   288.9 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.5±0.02ms     2.1 GB/sec    1.02      7.6±0.02ms     2.1 GB/sec
struct_sparse_99pct_null/cdc                       1.06     15.4±0.10ms  1047.1 MB/sec    1.00     14.5±0.10ms  1111.6 MB/sec
struct_sparse_99pct_null/default                   1.00      6.9±0.01ms     2.3 GB/sec    1.01      7.0±0.01ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.9±0.01ms     2.3 GB/sec    1.01      7.0±0.02ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.3±0.01ms  1947.0 MB/sec    1.01      8.4±0.01ms  1929.5 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.7±0.02ms     2.0 GB/sec    1.01      7.8±0.02ms     2.0 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 1950.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1892.2s
CPU sys 55.3s
Peak spill 0 B

branch

Metric Value
Wall time 1945.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1892.0s
CPU sys 52.9s
Peak spill 0 B

File an issue against this benchmark runner

Rich-T-kid pushed a commit to Rich-T-kid/arrow-rs that referenced this pull request Jun 2, 2026
# Which issue does this PR close?

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

- Spawn off from apache#9653 
- Contributes to apache#9731

# Rationale for this change

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

See apache#9731

# What changes are included in this PR?

Changes `byte_array` encoder methods (`FallbackEncoder::encode`,
`DictEncoder::encode`, etc) and all `get_*_array_slice` functions from
`&[usize]` to `impl ExactSizeIterator<Item = usize>`.

# Are these changes tested?

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

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

If this PR claims a performance improvement, please include evidence
such as benchmark results.
-->

All tests passing.

# Are there any user-facing changes?

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

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

None.

Signed-off-by: Hippolyte Barraud <hippolyte.barraud@datadoghq.com>
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