Skip to content

fix(parquet): bound data page byte size for large variable-width values#9972

Open
adriangb wants to merge 3 commits into
apache:mainfrom
pydantic:parquet-page-size-mid-batch
Open

fix(parquet): bound data page byte size for large variable-width values#9972
adriangb wants to merge 3 commits into
apache:mainfrom
pydantic:parquet-page-size-mid-batch

Conversation

@adriangb
Copy link
Copy Markdown
Contributor

@adriangb adriangb commented May 14, 2026

We write large values into our parquet files (e.g. a 5MB LLM prompt). A naive write will cause massive pages (we've seen up to 2GB) at default write settings. The main knob to control this is write_batch_size which defaults to 1024. But if each row is 5MB that's 5GB. On the other hand setting this to something small like 32 kills write performance and is completely unnecessary for other fixed width columns.

The writer even documents this (parquet/src/column/writer/mod.rs):

We check for DataPage limits only after we have inserted the values. If a user writes a large number of values, the DataPage size can be well above the limit.

This PR makes the mini-batch size byte-budget aware:

  • For each chunk, compute bytes_per_value from the values about to be written and pick sub_batch_size = page_byte_limit / bytes_per_value (clamped ≥ 1).
  • For typical small values — numeric columns, short strings — sub_batch_size ≥ chunk size, so we stay on the existing batched fast path with zero behavior change.
  • Only when individual values are large enough that a full chunk would blow the page does the sub-batch shrink — to one row per mini-batch in the limit, matching the format minimum of one record per page.

Implementation notes

Skip the byte-size check while parquet dictionary encoding is active: estimated_value_bytes returns plain-encoded size but a dict-encoded data page only stores small RLE indices, so the estimate would spuriously shrink pages. Dict fallback bounds dict-encoded pages independently.

For repeated/nested columns the sub-batch steps record-by-record (rep == 0 boundaries) so a record never spans data pages, matching the parquet format rule.

Regression test

test_column_writer_caps_page_size_for_large_byte_array_values writes 64 × 64 KiB BYTE_ARRAY values with a 16 KiB page byte limit. Before this fix that produced a single ~4 MiB page; after, it's one page per value (~64 pages, all within ~2× the value size).

Bench results

5-run medians, criterion arrow_writer bench, default writer properties, on a noisy laptop (run-to-run variance ~±1.6%):

bench Δ vs main
primitive/default (i32 25% null) −1.0%
primitive_non_null/default −0.0%
bool_non_null/default −1.2%
string/default +0.6%
short_string_non_null/default (new, 1M × 8 B) +0.2%
large_string_non_null/default (new, 1024 × 256 KiB) +1.2%
string_non_null/default −2.1%
string_dictionary/default +0.4%
list_primitive/default +0.5%
list_primitive_non_null/default +0.1%

🤖 Generated with Claude Code

@github-actions github-actions Bot added the parquet Changes to the parquet crate label May 14, 2026
@adriangb
Copy link
Copy Markdown
Contributor Author

run benchmark arrow_writer

@adriangb adriangb force-pushed the parquet-page-size-mid-batch branch from 393ead0 to 4823429 Compare May 14, 2026 04:21
@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4447473325-58-pzct6 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 parquet-page-size-mid-batch (4823429) to 48fa8a7 (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-highmem-16 (12 vCPU / 65 GiB)

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.00     13.1±0.03ms    19.2 MB/sec    1.01     13.2±0.03ms    18.9 MB/sec
bool/cdc                                           1.00     15.7±0.05ms    16.0 MB/sec    1.03     16.1±0.07ms    15.5 MB/sec
bool/default                                       1.00     11.0±0.02ms    22.8 MB/sec    1.01     11.1±0.03ms    22.5 MB/sec
bool/parquet_2                                     1.00     14.7±0.04ms    17.0 MB/sec    1.01     14.8±0.03ms    16.9 MB/sec
bool/zstd                                          1.00     11.5±0.03ms    21.8 MB/sec    1.01     11.6±0.03ms    21.5 MB/sec
bool/zstd_parquet_2                                1.00     15.1±0.04ms    16.6 MB/sec    1.01     15.2±0.05ms    16.4 MB/sec
bool_non_null/bloom_filter                         1.00      7.0±0.03ms    17.8 MB/sec    1.01      7.1±0.03ms    17.6 MB/sec
bool_non_null/cdc                                  1.00      6.8±0.03ms    18.4 MB/sec    1.01      6.9±0.03ms    18.2 MB/sec
bool_non_null/default                              1.00      4.3±0.02ms    29.4 MB/sec    1.02      4.3±0.02ms    28.8 MB/sec
bool_non_null/parquet_2                            1.01      9.1±0.04ms    13.8 MB/sec    1.00      9.0±0.03ms    13.9 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.1 MB/sec    1.02      4.7±0.02ms    26.6 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.5±0.03ms    13.2 MB/sec    1.00      9.4±0.03ms    13.3 MB/sec
float_with_nans/bloom_filter                       1.00     91.9±0.45ms   152.3 MB/sec    1.03     95.0±0.49ms   147.4 MB/sec
float_with_nans/cdc                                1.00     81.2±0.33ms   172.4 MB/sec    1.02     82.7±0.17ms   169.4 MB/sec
float_with_nans/default                            1.00     74.0±0.32ms   189.3 MB/sec    1.03     76.3±0.28ms   183.4 MB/sec
float_with_nans/parquet_2                          1.00     93.7±0.44ms   149.4 MB/sec    1.01     94.8±0.26ms   147.7 MB/sec
float_with_nans/zstd                               1.00    111.5±0.25ms   125.5 MB/sec    1.02    114.2±0.26ms   122.6 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.7±0.83ms   106.3 MB/sec    1.00    131.8±0.19ms   106.2 MB/sec
large_string_non_null/bloom_filter                                                        1.00     78.3±0.17ms     3.2 GB/sec
large_string_non_null/cdc                                                                 1.00    241.5±1.40ms  1059.9 MB/sec
large_string_non_null/default                                                             1.00     59.9±0.14ms     4.2 GB/sec
large_string_non_null/parquet_2                                                           1.00     59.9±0.17ms     4.2 GB/sec
large_string_non_null/zstd                                                                1.00     60.2±0.60ms     4.2 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     60.0±0.29ms     4.2 GB/sec
list_primitive/bloom_filter                        1.00    321.4±1.04ms  1696.6 MB/sec    1.01    325.1±0.77ms  1677.4 MB/sec
list_primitive/cdc                                 1.01    362.7±4.79ms  1503.8 MB/sec    1.00    360.4±0.58ms  1513.3 MB/sec
list_primitive/default                             1.00    245.4±0.60ms     2.2 GB/sec    1.01    248.7±0.79ms     2.1 GB/sec
list_primitive/parquet_2                           1.00    267.1±0.44ms  2041.6 MB/sec    1.01    270.4±1.01ms  2016.9 MB/sec
list_primitive/zstd                                1.00    495.4±0.86ms  1100.9 MB/sec    1.00    496.4±2.54ms  1098.7 MB/sec
list_primitive/zstd_parquet_2                      1.00    490.1±0.48ms  1112.9 MB/sec    1.01    494.1±0.92ms  1103.8 MB/sec
list_primitive_non_null/bloom_filter               1.00    426.6±3.62ms  1275.7 MB/sec    1.00    427.6±3.63ms  1272.8 MB/sec
list_primitive_non_null/cdc                        1.01    440.0±7.70ms  1236.8 MB/sec    1.00    434.8±8.76ms  1251.6 MB/sec
list_primitive_non_null/default                    1.00    287.9±2.90ms  1890.4 MB/sec    1.01    291.1±3.72ms  1869.5 MB/sec
list_primitive_non_null/parquet_2                  1.00   308.6±12.82ms  1763.4 MB/sec    1.05    323.0±9.12ms  1684.9 MB/sec
list_primitive_non_null/zstd                       1.00    714.5±3.78ms   761.7 MB/sec    1.00    712.8±5.58ms   763.6 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    683.0±0.52ms   796.8 MB/sec    1.00    686.0±0.81ms   793.4 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.1±0.22ms     3.3 GB/sec    1.02     11.3±0.02ms     3.2 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.6±0.18ms  1651.1 MB/sec    1.00     22.7±0.06ms  1648.7 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.8±0.06ms     3.4 GB/sec    1.02     11.0±0.09ms     3.3 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     10.8±0.07ms     3.4 GB/sec    1.02     11.0±0.02ms     3.3 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.6±0.09ms     2.9 GB/sec    1.01     12.8±0.02ms     2.9 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     10.9±0.03ms     3.4 GB/sec    1.02     11.1±0.07ms     3.3 GB/sec
primitive/bloom_filter                             1.00    147.4±0.75ms   304.6 MB/sec    1.03    151.3±0.39ms   296.6 MB/sec
primitive/cdc                                      1.00    158.2±0.59ms   283.7 MB/sec    1.02    160.7±0.64ms   279.2 MB/sec
primitive/default                                  1.00    117.5±0.77ms   382.0 MB/sec    1.02    119.7±0.47ms   375.0 MB/sec
primitive/parquet_2                                1.00    131.9±0.39ms   340.1 MB/sec    1.02    134.4±0.21ms   334.0 MB/sec
primitive/zstd                                     1.00    146.2±0.26ms   306.9 MB/sec    1.02    149.2±0.34ms   300.8 MB/sec
primitive/zstd_parquet_2                           1.00    165.0±0.33ms   271.9 MB/sec    1.02    167.9±0.38ms   267.2 MB/sec
primitive_all_null/bloom_filter                    1.00     11.5±0.15ms     3.8 GB/sec    1.00     11.5±0.17ms     3.8 GB/sec
primitive_all_null/cdc                             1.05     30.5±0.34ms  1469.9 MB/sec    1.00     29.2±0.33ms  1537.6 MB/sec
primitive_all_null/default                         1.00     10.9±0.10ms     4.0 GB/sec    1.01     10.9±0.11ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     10.9±0.14ms     4.0 GB/sec    1.00     10.9±0.11ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.0±0.15ms     4.0 GB/sec    1.00     11.0±0.12ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.0±0.23ms     4.0 GB/sec    1.00     11.1±0.24ms     4.0 GB/sec
primitive_non_null/bloom_filter                    1.04    110.6±1.27ms   397.8 MB/sec    1.00    106.2±0.53ms   414.5 MB/sec
primitive_non_null/cdc                             1.00     89.3±0.47ms   492.9 MB/sec    1.02     91.3±0.47ms   482.0 MB/sec
primitive_non_null/default                         1.00     67.1±0.31ms   655.8 MB/sec    1.02     68.6±0.50ms   641.6 MB/sec
primitive_non_null/parquet_2                       1.00     88.7±0.30ms   495.9 MB/sec    1.01     89.8±0.33ms   489.9 MB/sec
primitive_non_null/zstd                            1.04    103.9±0.21ms   423.7 MB/sec    1.00     99.6±0.49ms   441.6 MB/sec
primitive_non_null/zstd_parquet_2                  1.04    128.8±1.61ms   341.5 MB/sec    1.00    123.6±0.32ms   356.0 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     18.1±0.21ms     2.4 GB/sec    1.00     18.0±0.06ms     2.4 GB/sec
primitive_sparse_99pct_null/cdc                    1.03     37.0±0.31ms  1214.3 MB/sec    1.00     35.8±0.35ms  1253.1 MB/sec
primitive_sparse_99pct_null/default                1.00     16.7±0.06ms     2.6 GB/sec    1.00     16.7±0.03ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     16.8±0.07ms     2.6 GB/sec    1.00     16.7±0.03ms     2.6 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.0±0.11ms     2.2 GB/sec    1.00     20.0±0.10ms     2.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.01     18.7±0.13ms     2.3 GB/sec    1.00     18.6±0.04ms     2.4 GB/sec
short_string_non_null/bloom_filter                                                        1.00     27.9±0.10ms   429.7 MB/sec
short_string_non_null/cdc                                                                 1.00     19.9±0.09ms   602.3 MB/sec
short_string_non_null/default                                                             1.00     15.7±0.09ms   764.8 MB/sec
short_string_non_null/parquet_2                                                           1.00     25.4±0.06ms   472.0 MB/sec
short_string_non_null/zstd                                                                1.00     35.3±0.09ms   339.9 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     28.3±0.07ms   424.6 MB/sec
string/bloom_filter                                1.06   226.9±24.81ms     2.3 GB/sec    1.00   214.3±22.17ms     2.4 GB/sec
string/cdc                                         1.00    220.1±5.61ms     2.3 GB/sec    1.00    219.4±7.14ms     2.3 GB/sec
string/default                                     1.20   140.7±24.25ms     3.6 GB/sec    1.00   116.9±11.73ms     4.4 GB/sec
string/parquet_2                                   1.00    124.5±0.65ms     4.1 GB/sec    1.01    125.6±0.79ms     4.1 GB/sec
string/zstd                                        1.00    423.4±2.87ms  1238.1 MB/sec    1.04   440.9±19.31ms  1189.0 MB/sec
string/zstd_parquet_2                              1.00    394.3±0.42ms  1329.7 MB/sec    1.03   406.0±10.72ms  1291.4 MB/sec
string_and_binary_view/bloom_filter                1.00     62.8±0.33ms   513.4 MB/sec    1.05     65.7±0.35ms   491.1 MB/sec
string_and_binary_view/cdc                         1.00     58.2±0.13ms   553.9 MB/sec    1.05     61.0±0.41ms   528.6 MB/sec
string_and_binary_view/default                     1.00     47.7±0.18ms   675.9 MB/sec    1.05     50.0±0.31ms   645.3 MB/sec
string_and_binary_view/parquet_2                   1.00     58.5±0.18ms   551.2 MB/sec    1.04     61.1±0.35ms   527.8 MB/sec
string_and_binary_view/zstd                        1.00     84.1±0.18ms   383.3 MB/sec    1.03     86.6±0.31ms   372.4 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     72.4±0.35ms   445.3 MB/sec    1.04     75.1±0.30ms   429.6 MB/sec
string_dictionary/bloom_filter                     1.00     88.7±0.91ms     2.9 GB/sec    1.02     90.6±0.58ms     2.8 GB/sec
string_dictionary/cdc                              1.61     83.8±0.82ms     3.1 GB/sec    1.00     52.2±1.18ms     4.9 GB/sec
string_dictionary/default                          1.00     48.0±0.33ms     5.4 GB/sec    1.03     49.2±0.94ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     53.7±0.14ms     4.8 GB/sec    1.02     55.0±0.21ms     4.7 GB/sec
string_dictionary/zstd                             1.00    208.4±1.00ms  1267.2 MB/sec    1.01    209.5±0.64ms  1260.8 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.5±0.49ms  1330.4 MB/sec    1.00    199.4±0.17ms  1324.8 MB/sec
string_non_null/bloom_filter                       1.05   250.1±14.82ms     2.0 GB/sec    1.00    238.4±4.31ms     2.1 GB/sec
string_non_null/cdc                                1.01    266.1±8.91ms  1969.6 MB/sec    1.00    263.5±3.32ms  1988.9 MB/sec
string_non_null/default                            1.00   125.4±12.46ms     4.1 GB/sec    1.02    128.4±9.65ms     4.0 GB/sec
string_non_null/parquet_2                          1.05   139.7±11.29ms     3.7 GB/sec    1.00    132.7±0.46ms     3.9 GB/sec
string_non_null/zstd                               1.00    528.6±1.85ms   991.3 MB/sec    1.01    533.2±1.33ms   982.8 MB/sec
string_non_null/zstd_parquet_2                     1.00    504.8±2.15ms  1038.0 MB/sec    1.00    503.0±0.48ms  1041.7 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.01ms     6.2 GB/sec    1.00      2.5±0.00ms     6.3 GB/sec
struct_all_null/cdc                                1.00      9.9±0.12ms  1633.5 MB/sec    1.01     10.0±0.11ms  1614.5 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.01ms     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     45.9±0.18ms   348.8 MB/sec    1.05     48.3±0.23ms   331.4 MB/sec
struct_non_null/cdc                                1.00     45.1±0.17ms   354.6 MB/sec    1.02     45.9±0.27ms   348.3 MB/sec
struct_non_null/default                            1.00     31.8±0.17ms   503.2 MB/sec    1.03     32.7±0.14ms   488.8 MB/sec
struct_non_null/parquet_2                          1.00     40.6±0.49ms   394.5 MB/sec    1.03     41.6±0.11ms   384.7 MB/sec
struct_non_null/zstd                               1.00     40.6±0.15ms   394.2 MB/sec    1.02     41.5±0.15ms   385.6 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.5±0.13ms   293.7 MB/sec    1.02     55.3±0.17ms   289.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.01      7.4±0.02ms     2.1 GB/sec    1.00      7.4±0.05ms     2.1 GB/sec
struct_sparse_99pct_null/cdc                       1.07     15.3±0.08ms  1053.1 MB/sec    1.00     14.4±0.07ms  1121.7 MB/sec
struct_sparse_99pct_null/default                   1.01      6.9±0.05ms     2.3 GB/sec    1.00      6.9±0.06ms     2.3 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.9±0.03ms     2.3 GB/sec    1.00      6.9±0.04ms     2.3 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.3±0.01ms  1954.5 MB/sec    1.00      8.2±0.02ms  1963.5 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.01      7.7±0.03ms     2.0 GB/sec    1.00      7.6±0.02ms     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 1876.9s
CPU sys 54.7s
Peak spill 0 B

branch

Metric Value
Wall time 2075.5s
Peak memory 6.8 GiB
Avg memory 6.7 GiB
CPU user 2028.4s
CPU sys 44.8s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

run benchmark arrow_writer

@adriangb adriangb force-pushed the parquet-page-size-mid-batch branch 2 times, most recently from 0fd6dcb to 24b83c7 Compare May 14, 2026 06:15
@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4448145440-71-5z4xr 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 parquet-page-size-mid-batch (24b83c7) to 48fa8a7 (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-highmem-16 (12 vCPU / 65 GiB)

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.02     13.2±0.11ms    18.9 MB/sec    1.00     13.0±0.08ms    19.2 MB/sec
bool/cdc                                           1.01     16.0±0.10ms    15.6 MB/sec    1.00     15.8±0.15ms    15.8 MB/sec
bool/default                                       1.02     11.2±0.09ms    22.4 MB/sec    1.00     10.9±0.04ms    22.9 MB/sec
bool/parquet_2                                     1.01     14.9±0.11ms    16.8 MB/sec    1.00     14.7±0.05ms    17.0 MB/sec
bool/zstd                                          1.02     11.6±0.07ms    21.5 MB/sec    1.00     11.5±0.06ms    21.8 MB/sec
bool/zstd_parquet_2                                1.02     15.3±0.10ms    16.4 MB/sec    1.00     15.1±0.07ms    16.6 MB/sec
bool_non_null/bloom_filter                         1.00      7.1±0.04ms    17.7 MB/sec    1.00      7.0±0.03ms    17.8 MB/sec
bool_non_null/cdc                                  1.01      7.0±0.08ms    18.0 MB/sec    1.00      6.9±0.10ms    18.1 MB/sec
bool_non_null/default                              1.00      4.3±0.03ms    29.1 MB/sec    1.00      4.3±0.02ms    29.1 MB/sec
bool_non_null/parquet_2                            1.00      9.1±0.04ms    13.7 MB/sec    1.00      9.1±0.04ms    13.8 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    26.9 MB/sec    1.00      4.7±0.03ms    26.8 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.5±0.04ms    13.1 MB/sec    1.00      9.5±0.05ms    13.2 MB/sec
float_with_nans/bloom_filter                       1.00     94.5±1.08ms   148.1 MB/sec    1.01     95.7±2.49ms   146.3 MB/sec
float_with_nans/cdc                                1.00     83.0±0.82ms   168.8 MB/sec    1.01     83.7±1.57ms   167.2 MB/sec
float_with_nans/default                            1.00     75.5±1.07ms   185.5 MB/sec    1.00     75.3±1.01ms   185.9 MB/sec
float_with_nans/parquet_2                          1.00     97.2±0.72ms   144.1 MB/sec    1.00     97.4±1.82ms   143.7 MB/sec
float_with_nans/zstd                               1.00    113.2±1.37ms   123.7 MB/sec    1.01    114.0±1.22ms   122.8 MB/sec
float_with_nans/zstd_parquet_2                     1.00    133.3±1.99ms   105.0 MB/sec    1.02    135.3±1.48ms   103.4 MB/sec
large_string_non_null/bloom_filter                                                        1.00     84.8±1.96ms     2.9 GB/sec
large_string_non_null/cdc                                                                 1.00    243.8±1.68ms  1050.1 MB/sec
large_string_non_null/default                                                             1.00     64.6±1.09ms     3.9 GB/sec
large_string_non_null/parquet_2                                                           1.00     65.2±2.66ms     3.8 GB/sec
large_string_non_null/zstd                                                                1.00     63.7±2.72ms     3.9 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     63.6±2.71ms     3.9 GB/sec
list_primitive/bloom_filter                        1.22   417.0±14.54ms  1308.0 MB/sec    1.00   340.4±11.36ms  1602.2 MB/sec
list_primitive/cdc                                 1.03   376.9±13.32ms  1447.0 MB/sec    1.00    364.3±4.07ms  1496.8 MB/sec
list_primitive/default                             1.28    324.3±7.20ms  1681.8 MB/sec    1.00    252.9±4.29ms     2.1 GB/sec
list_primitive/parquet_2                           1.24    336.6±2.67ms  1620.3 MB/sec    1.00    271.6±1.48ms  2008.1 MB/sec
list_primitive/zstd                                1.11    566.9±7.39ms   962.0 MB/sec    1.00    508.8±5.43ms  1072.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    494.3±2.36ms  1103.3 MB/sec    1.01    497.0±2.60ms  1097.3 MB/sec
list_primitive_non_null/bloom_filter               1.11   496.8±24.03ms  1095.5 MB/sec    1.00   447.3±18.74ms  1216.7 MB/sec
list_primitive_non_null/cdc                        1.00    444.9±8.81ms  1223.3 MB/sec    1.00   445.4±13.12ms  1221.9 MB/sec
list_primitive_non_null/default                    1.15   344.7±21.96ms  1579.1 MB/sec    1.00    300.1±6.76ms  1813.4 MB/sec
list_primitive_non_null/parquet_2                  1.09    352.8±3.69ms  1542.5 MB/sec    1.00   322.6±22.73ms  1687.1 MB/sec
list_primitive_non_null/zstd                       1.05   765.1±24.38ms   711.3 MB/sec    1.00   730.8±20.34ms   744.7 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    695.9±3.50ms   782.1 MB/sec    1.01    703.1±7.88ms   774.1 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.6±0.13ms     3.2 GB/sec    1.05     12.2±0.27ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.8±0.34ms  1637.4 MB/sec    1.03     23.6±0.18ms  1584.4 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.8±0.21ms     3.4 GB/sec    1.09     11.9±0.06ms     3.1 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.0±0.19ms     3.3 GB/sec    1.06     11.6±0.21ms     3.1 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.1±0.05ms     2.8 GB/sec    1.02     13.3±0.25ms     2.7 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.3±0.26ms     3.2 GB/sec    1.05     11.9±0.16ms     3.1 GB/sec
primitive/bloom_filter                             1.00    153.9±2.09ms   291.5 MB/sec    1.00    154.2±1.49ms   291.1 MB/sec
primitive/cdc                                      1.00    161.3±1.88ms   278.2 MB/sec    1.00    161.2±1.30ms   278.4 MB/sec
primitive/default                                  1.01    120.2±0.79ms   373.4 MB/sec    1.00    118.9±1.69ms   377.3 MB/sec
primitive/parquet_2                                1.00    134.5±1.65ms   333.7 MB/sec    1.01    135.2±1.74ms   332.0 MB/sec
primitive/zstd                                     1.01    150.0±0.77ms   299.2 MB/sec    1.00    149.1±1.93ms   301.0 MB/sec
primitive/zstd_parquet_2                           1.01    169.4±1.51ms   264.9 MB/sec    1.00    167.5±1.20ms   267.9 MB/sec
primitive_all_null/bloom_filter                    1.01     11.8±0.11ms     3.7 GB/sec    1.00     11.7±0.22ms     3.7 GB/sec
primitive_all_null/cdc                             1.01     30.8±0.48ms  1458.4 MB/sec    1.00     30.6±0.35ms  1468.6 MB/sec
primitive_all_null/default                         1.00     11.0±0.18ms     4.0 GB/sec    1.00     11.0±0.14ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.01     11.0±0.18ms     4.0 GB/sec    1.00     10.9±0.10ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.1±0.16ms     3.9 GB/sec    1.00     11.1±0.15ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.0±0.20ms     4.0 GB/sec    1.01     11.1±0.19ms     3.9 GB/sec
primitive_non_null/bloom_filter                    1.06    115.9±2.51ms   379.8 MB/sec    1.00    109.3±2.72ms   402.4 MB/sec
primitive_non_null/cdc                             1.02     92.5±1.13ms   475.8 MB/sec    1.00     91.0±1.65ms   483.7 MB/sec
primitive_non_null/default                         1.00     69.2±0.52ms   635.6 MB/sec    1.00     69.2±1.37ms   636.1 MB/sec
primitive_non_null/parquet_2                       1.00     91.0±1.37ms   483.3 MB/sec    1.00     90.7±0.56ms   484.9 MB/sec
primitive_non_null/zstd                            1.07    106.1±1.85ms   414.7 MB/sec    1.00     99.5±1.06ms   442.1 MB/sec
primitive_non_null/zstd_parquet_2                  1.06    132.2±2.10ms   332.8 MB/sec    1.00    124.4±1.51ms   353.8 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     18.6±0.64ms     2.4 GB/sec    1.05     19.6±0.16ms     2.2 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     37.9±0.58ms  1185.4 MB/sec    1.00     37.8±0.30ms  1187.6 MB/sec
primitive_sparse_99pct_null/default                1.00     17.1±0.27ms     2.6 GB/sec    1.00     17.2±0.25ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     17.3±0.07ms     2.5 GB/sec    1.00     17.3±0.31ms     2.5 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.4±0.26ms     2.2 GB/sec    1.00     20.4±0.28ms     2.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.01     19.3±0.10ms     2.3 GB/sec    1.00     19.2±0.32ms     2.3 GB/sec
short_string_non_null/bloom_filter                                                        1.00     28.2±0.27ms   425.8 MB/sec
short_string_non_null/cdc                                                                 1.00     20.3±0.24ms   590.7 MB/sec
short_string_non_null/default                                                             1.00     16.1±0.06ms   743.5 MB/sec
short_string_non_null/parquet_2                                                           1.00     25.7±0.05ms   466.2 MB/sec
short_string_non_null/zstd                                                                1.00     35.6±0.13ms   336.7 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     28.5±0.09ms   421.1 MB/sec
string/bloom_filter                                1.05   241.4±29.36ms     2.1 GB/sec    1.00   229.5±20.33ms     2.2 GB/sec
string/cdc                                         1.01    226.3±8.62ms     2.3 GB/sec    1.00    224.0±7.48ms     2.3 GB/sec
string/default                                     1.22   149.0±25.96ms     3.4 GB/sec    1.00   121.8±12.81ms     4.2 GB/sec
string/parquet_2                                   1.05    128.5±2.18ms     4.0 GB/sec    1.00    121.8±2.90ms     4.2 GB/sec
string/zstd                                        1.01    430.1±4.75ms  1219.0 MB/sec    1.00    425.7±4.35ms  1231.6 MB/sec
string/zstd_parquet_2                              1.00    395.1±1.99ms  1326.7 MB/sec    1.01    399.0±1.66ms  1313.8 MB/sec
string_and_binary_view/bloom_filter                1.00     66.1±2.70ms   488.2 MB/sec    1.04     68.8±2.99ms   469.0 MB/sec
string_and_binary_view/cdc                         1.00     60.1±1.44ms   537.0 MB/sec    1.05     62.9±1.53ms   513.0 MB/sec
string_and_binary_view/default                     1.00     49.8±1.52ms   646.9 MB/sec    1.04     51.8±1.41ms   622.2 MB/sec
string_and_binary_view/parquet_2                   1.00     59.7±1.11ms   540.2 MB/sec    1.04     62.1±1.55ms   519.5 MB/sec
string_and_binary_view/zstd                        1.00     85.2±0.56ms   378.7 MB/sec    1.03     88.0±0.54ms   366.6 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     74.0±0.88ms   436.0 MB/sec    1.04     76.9±1.08ms   419.5 MB/sec
string_dictionary/bloom_filter                     1.00    110.0±7.61ms     2.3 GB/sec    1.28    141.3±7.91ms  1868.8 MB/sec
string_dictionary/cdc                              1.00     78.8±2.29ms     3.3 GB/sec    1.30    102.3±3.80ms     2.5 GB/sec
string_dictionary/default                          1.00     65.6±3.25ms     3.9 GB/sec    1.39     90.9±3.71ms     2.8 GB/sec
string_dictionary/parquet_2                        1.00     55.2±0.59ms     4.7 GB/sec    1.85    102.1±1.87ms     2.5 GB/sec
string_dictionary/zstd                             1.00    222.4±3.69ms  1187.8 MB/sec    1.01   224.7±15.20ms  1175.5 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.5±1.33ms  1330.5 MB/sec    1.19    236.0±1.85ms  1119.4 MB/sec
string_non_null/bloom_filter                       1.00   254.5±21.18ms     2.0 GB/sec    1.00   255.3±15.69ms     2.0 GB/sec
string_non_null/cdc                                1.00   277.0±13.67ms  1891.6 MB/sec    1.02   281.6±12.38ms  1861.0 MB/sec
string_non_null/default                            1.09   149.0±12.15ms     3.4 GB/sec    1.00   136.7±14.33ms     3.7 GB/sec
string_non_null/parquet_2                          1.00    124.0±2.41ms     4.1 GB/sec    1.25    154.5±2.23ms     3.3 GB/sec
string_non_null/zstd                               1.00    565.8±9.78ms   926.1 MB/sec    1.04   591.1±33.18ms   886.5 MB/sec
string_non_null/zstd_parquet_2                     1.00    505.3±2.87ms  1037.0 MB/sec    1.04   523.1±10.81ms  1001.6 MB/sec
struct_all_null/bloom_filter                       1.01      2.6±0.02ms     6.2 GB/sec    1.00      2.5±0.03ms     6.2 GB/sec
struct_all_null/cdc                                1.01      9.8±0.13ms  1640.3 MB/sec    1.00      9.8±0.10ms  1648.9 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     47.6±1.08ms   336.1 MB/sec    1.02     48.7±1.46ms   328.6 MB/sec
struct_non_null/cdc                                1.00     46.0±0.28ms   348.1 MB/sec    1.01     46.3±0.59ms   345.9 MB/sec
struct_non_null/default                            1.00     32.5±0.27ms   491.8 MB/sec    1.01     33.0±0.36ms   485.5 MB/sec
struct_non_null/parquet_2                          1.02     41.7±0.54ms   384.1 MB/sec    1.00     41.0±0.61ms   390.3 MB/sec
struct_non_null/zstd                               1.00     41.2±0.74ms   387.9 MB/sec    1.00     41.2±0.24ms   388.6 MB/sec
struct_non_null/zstd_parquet_2                     1.00     55.5±0.60ms   288.5 MB/sec    1.00     55.3±0.96ms   289.4 MB/sec
struct_sparse_99pct_null/bloom_filter              1.04      7.9±0.28ms  2047.0 MB/sec    1.00      7.6±0.29ms     2.1 GB/sec
struct_sparse_99pct_null/cdc                       1.00     15.9±0.12ms  1014.2 MB/sec    1.00     15.8±0.27ms  1018.4 MB/sec
struct_sparse_99pct_null/default                   1.03      7.3±0.09ms     2.2 GB/sec    1.00      7.1±0.17ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      7.2±0.20ms     2.2 GB/sec    1.01      7.2±0.16ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.4±0.18ms  1924.8 MB/sec    1.03      8.6±0.06ms  1868.8 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      8.0±0.14ms  2015.1 MB/sec    1.00      8.0±0.18ms  2013.8 MB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2015.4s
Peak memory 6.2 GiB
Avg memory 6.0 GiB
CPU user 1897.3s
CPU sys 113.7s
Peak spill 0 B

branch

Metric Value
Wall time 2115.5s
Peak memory 6.5 GiB
Avg memory 6.3 GiB
CPU user 2032.5s
CPU sys 80.9s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4451856049-90-g2tzh 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 parquet-page-size-mid-batch (24b83c7) to 48fa8a7 (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

@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4451897215-91-nvnwl 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 parquet-page-size-mid-batch (70dc497) to 48fa8a7 (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-highmem-16 (12 vCPU / 65 GiB)

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.02     13.3±0.09ms    18.8 MB/sec    1.00     13.1±0.05ms    19.1 MB/sec
bool/cdc                                           1.01     15.9±0.08ms    15.7 MB/sec    1.00     15.9±0.05ms    15.8 MB/sec
bool/default                                       1.02     11.1±0.07ms    22.4 MB/sec    1.00     10.9±0.04ms    22.9 MB/sec
bool/parquet_2                                     1.01     14.9±0.10ms    16.8 MB/sec    1.00     14.7±0.05ms    17.0 MB/sec
bool/zstd                                          1.02     11.7±0.07ms    21.5 MB/sec    1.00     11.4±0.04ms    21.9 MB/sec
bool/zstd_parquet_2                                1.01     15.3±0.07ms    16.4 MB/sec    1.00     15.1±0.05ms    16.6 MB/sec
bool_non_null/bloom_filter                         1.00      7.1±0.02ms    17.7 MB/sec    1.00      7.1±0.02ms    17.7 MB/sec
bool_non_null/cdc                                  1.00      6.9±0.03ms    18.1 MB/sec    1.01      7.0±0.02ms    18.0 MB/sec
bool_non_null/default                              1.00      4.3±0.02ms    29.3 MB/sec    1.01      4.3±0.02ms    29.1 MB/sec
bool_non_null/parquet_2                            1.01      9.1±0.04ms    13.7 MB/sec    1.00      9.0±0.03ms    13.8 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.0 MB/sec    1.02      4.7±0.08ms    26.5 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.02ms    13.1 MB/sec    1.00      9.5±0.04ms    13.2 MB/sec
float_with_nans/bloom_filter                       1.00     95.0±0.41ms   147.3 MB/sec    1.01     95.8±0.62ms   146.2 MB/sec
float_with_nans/cdc                                1.02     84.7±2.06ms   165.4 MB/sec    1.00     83.3±0.31ms   168.2 MB/sec
float_with_nans/default                            1.00     74.8±0.24ms   187.2 MB/sec    1.01     75.3±0.28ms   185.9 MB/sec
float_with_nans/parquet_2                          1.00     96.5±0.41ms   145.1 MB/sec    1.00     96.9±0.54ms   144.5 MB/sec
float_with_nans/zstd                               1.00    113.0±0.29ms   123.9 MB/sec    1.00    113.3±0.32ms   123.5 MB/sec
float_with_nans/zstd_parquet_2                     1.00    133.4±0.51ms   105.0 MB/sec    1.01    134.2±0.49ms   104.3 MB/sec
large_string_non_null/bloom_filter                                                        1.00     80.9±0.27ms     3.1 GB/sec
large_string_non_null/cdc                                                                 1.00    244.3±2.51ms  1048.1 MB/sec
large_string_non_null/default                                                             1.00     62.0±0.20ms     4.0 GB/sec
large_string_non_null/parquet_2                                                           1.00     61.8±0.21ms     4.0 GB/sec
large_string_non_null/zstd                                                                1.00     61.9±0.20ms     4.0 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     61.8±0.22ms     4.0 GB/sec
list_primitive/bloom_filter                        1.00    331.7±2.11ms  1644.3 MB/sec    1.03    341.7±2.31ms  1596.0 MB/sec
list_primitive/cdc                                 1.00    360.2±1.78ms  1514.3 MB/sec    1.00    361.7±1.29ms  1507.9 MB/sec
list_primitive/default                             1.00    251.7±1.44ms     2.1 GB/sec    1.01    255.2±1.27ms     2.1 GB/sec
list_primitive/parquet_2                           1.00    269.9±0.95ms  2020.5 MB/sec    1.01    271.9±0.47ms  2005.8 MB/sec
list_primitive/zstd                                1.00    503.3±2.86ms  1083.6 MB/sec    1.01    509.6±6.03ms  1070.3 MB/sec
list_primitive/zstd_parquet_2                      1.00    493.2±0.54ms  1105.8 MB/sec    1.00    495.2±0.60ms  1101.4 MB/sec
list_primitive_non_null/bloom_filter               1.00   435.7±11.23ms  1249.1 MB/sec    1.01    439.1±9.47ms  1239.6 MB/sec
list_primitive_non_null/cdc                        1.01   443.8±10.63ms  1226.3 MB/sec    1.00   441.2±10.64ms  1233.5 MB/sec
list_primitive_non_null/default                    1.00    287.6±3.39ms  1892.4 MB/sec    1.05    300.7±4.21ms  1810.1 MB/sec
list_primitive_non_null/parquet_2                  1.00    318.2±0.89ms  1710.6 MB/sec    1.00   318.5±21.42ms  1708.6 MB/sec
list_primitive_non_null/zstd                       1.00    713.5±7.79ms   762.8 MB/sec    1.02   725.9±18.34ms   749.8 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    679.9±0.90ms   800.4 MB/sec    1.03    700.5±9.97ms   777.0 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.6±0.05ms     3.2 GB/sec    1.05     12.1±0.07ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     23.1±0.05ms  1616.8 MB/sec    1.02     23.7±0.07ms  1578.7 MB/sec
list_primitive_sparse_99pct_null/default           1.00     11.3±0.29ms     3.2 GB/sec    1.04     11.8±0.03ms     3.1 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.1±0.04ms     3.3 GB/sec    1.06     11.8±0.04ms     3.1 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.0±0.03ms     2.8 GB/sec    1.05     13.7±0.04ms     2.7 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.3±0.04ms     3.2 GB/sec    1.06     12.0±0.04ms     3.0 GB/sec
primitive/bloom_filter                             1.01    155.5±5.71ms   288.5 MB/sec    1.00    153.7±0.79ms   292.0 MB/sec
primitive/cdc                                      1.00    161.6±0.56ms   277.6 MB/sec    1.00    161.2±0.64ms   278.4 MB/sec
primitive/default                                  1.01    121.2±1.14ms   370.3 MB/sec    1.00    119.8±0.50ms   374.7 MB/sec
primitive/parquet_2                                1.00    135.0±0.50ms   332.5 MB/sec    1.00    135.2±0.48ms   331.8 MB/sec
primitive/zstd                                     1.01    149.6±0.53ms   299.9 MB/sec    1.00    148.7±0.41ms   301.7 MB/sec
primitive/zstd_parquet_2                           1.01    168.6±0.51ms   266.2 MB/sec    1.00    167.7±0.39ms   267.5 MB/sec
primitive_all_null/bloom_filter                    1.00     11.8±0.07ms     3.7 GB/sec    1.01     11.9±0.26ms     3.7 GB/sec
primitive_all_null/cdc                             1.00     30.7±0.42ms  1461.3 MB/sec    1.00     30.8±0.41ms  1458.2 MB/sec
primitive_all_null/default                         1.00     10.9±0.10ms     4.0 GB/sec    1.00     11.0±0.07ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     11.0±0.17ms     4.0 GB/sec    1.00     11.0±0.17ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.1±0.19ms     3.9 GB/sec    1.00     11.1±0.14ms     3.9 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.0±0.10ms     4.0 GB/sec    1.01     11.1±0.20ms     3.9 GB/sec
primitive_non_null/bloom_filter                    1.04    114.2±1.46ms   385.2 MB/sec    1.00    109.4±0.48ms   402.4 MB/sec
primitive_non_null/cdc                             1.00     91.1±0.54ms   482.9 MB/sec    1.01     91.6±0.24ms   480.3 MB/sec
primitive_non_null/default                         1.00     68.5±0.26ms   642.5 MB/sec    1.01     69.3±0.33ms   634.8 MB/sec
primitive_non_null/parquet_2                       1.00     91.3±0.51ms   482.0 MB/sec    1.00     91.0±0.33ms   483.3 MB/sec
primitive_non_null/zstd                            1.07    106.7±0.26ms   412.4 MB/sec    1.00     99.9±0.28ms   440.5 MB/sec
primitive_non_null/zstd_parquet_2                  1.06    131.5±1.88ms   334.5 MB/sec    1.00    124.3±0.38ms   353.9 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     19.1±0.08ms     2.3 GB/sec    1.01     19.3±0.07ms     2.3 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     37.7±0.28ms  1189.3 MB/sec    1.01     37.9±0.31ms  1183.2 MB/sec
primitive_sparse_99pct_null/default                1.00     17.2±0.04ms     2.5 GB/sec    1.00     17.3±0.04ms     2.5 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     17.2±0.04ms     2.5 GB/sec    1.00     17.3±0.03ms     2.5 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.5±0.06ms     2.1 GB/sec    1.01     20.6±0.04ms     2.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     19.1±0.04ms     2.3 GB/sec    1.01     19.2±0.05ms     2.3 GB/sec
short_string_non_null/bloom_filter                                                        1.00     28.2±0.09ms   425.5 MB/sec
short_string_non_null/cdc                                                                 1.00     20.4±0.05ms   587.2 MB/sec
short_string_non_null/default                                                             1.00     16.1±0.05ms   744.8 MB/sec
short_string_non_null/parquet_2                                                           1.00     25.8±0.09ms   464.8 MB/sec
short_string_non_null/zstd                                                                1.00     35.8±0.10ms   335.6 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     28.7±0.05ms   418.3 MB/sec
string/bloom_filter                                1.05   238.5±27.20ms     2.1 GB/sec    1.00   226.3±17.74ms     2.3 GB/sec
string/cdc                                         1.00    223.2±8.00ms     2.3 GB/sec    1.00    223.1±5.65ms     2.3 GB/sec
string/default                                     1.20   147.1±29.69ms     3.5 GB/sec    1.00   122.2±12.93ms     4.2 GB/sec
string/parquet_2                                   1.05    127.3±0.36ms     4.0 GB/sec    1.00    121.8±0.70ms     4.2 GB/sec
string/zstd                                        1.01    428.5±3.10ms  1223.6 MB/sec    1.00    423.7±1.44ms  1237.3 MB/sec
string/zstd_parquet_2                              1.00    396.2±1.24ms  1323.1 MB/sec    1.01    399.1±0.90ms  1313.7 MB/sec
string_and_binary_view/bloom_filter                1.00     65.9±0.55ms   489.5 MB/sec    1.07     70.4±0.76ms   458.4 MB/sec
string_and_binary_view/cdc                         1.00     59.2±0.33ms   544.4 MB/sec    1.05     62.4±0.26ms   516.8 MB/sec
string_and_binary_view/default                     1.00     48.6±0.22ms   664.2 MB/sec    1.07     52.0±0.23ms   620.7 MB/sec
string_and_binary_view/parquet_2                   1.00     59.3±0.27ms   543.4 MB/sec    1.06     62.8±0.34ms   513.3 MB/sec
string_and_binary_view/zstd                        1.00     85.0±0.28ms   379.2 MB/sec    1.04     88.3±0.22ms   365.4 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.3±0.29ms   440.0 MB/sec    1.05     76.8±0.23ms   419.8 MB/sec
string_dictionary/bloom_filter                     1.00    109.2±1.30ms     2.4 GB/sec    1.33    145.2±2.49ms  1818.7 MB/sec
string_dictionary/cdc                              1.00     81.6±5.02ms     3.2 GB/sec    1.27    103.3±2.71ms     2.5 GB/sec
string_dictionary/default                          1.00     64.1±1.61ms     4.0 GB/sec    1.48     94.7±1.24ms     2.7 GB/sec
string_dictionary/parquet_2                        1.00     67.1±0.25ms     3.8 GB/sec    1.56    104.9±0.45ms     2.5 GB/sec
string_dictionary/zstd                             1.00    217.7±2.62ms  1213.5 MB/sec    1.04   225.3±15.26ms  1172.3 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.2±0.26ms  1326.0 MB/sec    1.20    238.4±0.39ms  1107.9 MB/sec
string_non_null/bloom_filter                       1.00   256.9±15.35ms  2039.7 MB/sec    1.05   269.0±13.29ms  1948.2 MB/sec
string_non_null/cdc                                1.00    258.5±1.05ms  2026.8 MB/sec    1.10   284.5±12.16ms  1841.6 MB/sec
string_non_null/default                            1.01   138.3±15.37ms     3.7 GB/sec    1.00   137.4±12.80ms     3.7 GB/sec
string_non_null/parquet_2                          1.00    151.5±0.40ms     3.4 GB/sec    1.04    157.7±0.75ms     3.2 GB/sec
string_non_null/zstd                               1.01   602.1±23.07ms   870.2 MB/sec    1.00   598.9±35.12ms   874.9 MB/sec
string_non_null/zstd_parquet_2                     1.01   528.8±12.56ms   990.9 MB/sec    1.00   525.6±11.06ms   996.9 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.00ms     6.2 GB/sec    1.00      2.5±0.01ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.8±0.13ms  1639.3 MB/sec    1.00      9.8±0.12ms  1641.0 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.3±0.19ms   345.3 MB/sec    1.07     49.5±1.67ms   323.1 MB/sec
struct_non_null/cdc                                1.00     45.7±0.18ms   349.9 MB/sec    1.01     46.2±0.18ms   346.5 MB/sec
struct_non_null/default                            1.00     32.2±0.11ms   496.3 MB/sec    1.02     32.8±0.12ms   487.7 MB/sec
struct_non_null/parquet_2                          1.00     41.1±0.18ms   389.3 MB/sec    1.01     41.4±0.11ms   386.1 MB/sec
struct_non_null/zstd                               1.00     41.2±0.14ms   388.4 MB/sec    1.01     41.4±0.09ms   386.0 MB/sec
struct_non_null/zstd_parquet_2                     1.00     55.1±0.23ms   290.5 MB/sec    1.00     55.3±0.15ms   289.6 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.7±0.07ms     2.0 GB/sec    1.04      8.0±0.08ms  2019.0 MB/sec
struct_sparse_99pct_null/cdc                       1.00     15.9±0.13ms  1014.7 MB/sec    1.00     15.9±0.10ms  1014.9 MB/sec
struct_sparse_99pct_null/default                   1.00      7.2±0.03ms     2.2 GB/sec    1.00      7.3±0.03ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      7.3±0.04ms     2.2 GB/sec    1.01      7.3±0.03ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.6±0.05ms  1869.8 MB/sec    1.00      8.6±0.05ms  1877.6 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.01      8.1±0.68ms  1988.4 MB/sec    1.00      8.0±0.03ms  2004.7 MB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 1965.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1892.3s
CPU sys 70.4s
Peak spill 0 B

branch

Metric Value
Wall time 2115.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2029.6s
CPU sys 83.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                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.00     13.2±0.10ms    19.0 MB/sec    1.00     13.1±0.12ms    19.1 MB/sec
bool/cdc                                           1.00     15.9±0.11ms    15.8 MB/sec    1.00     15.8±0.11ms    15.8 MB/sec
bool/default                                       1.00     11.0±0.08ms    22.7 MB/sec    1.00     11.0±0.11ms    22.7 MB/sec
bool/parquet_2                                     1.00     14.9±0.08ms    16.8 MB/sec    1.00     14.9±0.11ms    16.8 MB/sec
bool/zstd                                          1.00     11.5±0.11ms    21.7 MB/sec    1.00     11.5±0.11ms    21.7 MB/sec
bool/zstd_parquet_2                                1.00     15.2±0.10ms    16.4 MB/sec    1.00     15.2±0.12ms    16.4 MB/sec
bool_non_null/bloom_filter                         1.01      7.1±0.05ms    17.7 MB/sec    1.00      7.0±0.03ms    17.8 MB/sec
bool_non_null/cdc                                  1.01      6.9±0.05ms    18.2 MB/sec    1.00      6.8±0.04ms    18.4 MB/sec
bool_non_null/default                              1.00      4.3±0.02ms    29.2 MB/sec    1.00      4.3±0.02ms    29.4 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.8 MB/sec    1.01      9.1±0.03ms    13.8 MB/sec
bool_non_null/zstd                                 1.01      4.6±0.04ms    27.0 MB/sec    1.00      4.6±0.02ms    27.1 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.05ms    13.2 MB/sec    1.00      9.5±0.04ms    13.1 MB/sec
float_with_nans/bloom_filter                       1.00     93.6±0.60ms   149.5 MB/sec    1.00     93.7±0.37ms   149.4 MB/sec
float_with_nans/cdc                                1.00     81.9±0.47ms   171.0 MB/sec    1.00     81.8±0.18ms   171.1 MB/sec
float_with_nans/default                            1.00     74.6±0.31ms   187.8 MB/sec    1.00     74.4±0.19ms   188.1 MB/sec
float_with_nans/parquet_2                          1.00     95.5±0.77ms   146.6 MB/sec    1.00     95.2±0.27ms   147.1 MB/sec
float_with_nans/zstd                               1.00    112.2±0.36ms   124.7 MB/sec    1.00    112.2±0.20ms   124.8 MB/sec
float_with_nans/zstd_parquet_2                     1.00    132.2±0.73ms   105.9 MB/sec    1.00    132.6±0.42ms   105.6 MB/sec
large_string_non_null/bloom_filter                                                        1.00     81.4±0.25ms     3.1 GB/sec
large_string_non_null/cdc                                                                 1.00    242.9±1.01ms  1053.9 MB/sec
large_string_non_null/default                                                             1.00     62.7±0.16ms     4.0 GB/sec
large_string_non_null/parquet_2                                                           1.00     62.6±0.20ms     4.0 GB/sec
large_string_non_null/zstd                                                                1.00     62.6±0.25ms     4.0 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     62.7±0.23ms     4.0 GB/sec
list_primitive/bloom_filter                        1.00    326.1±2.39ms  1672.5 MB/sec    1.01    330.5±0.96ms  1650.2 MB/sec
list_primitive/cdc                                 1.00    358.5±1.37ms  1521.0 MB/sec    1.00    358.3±0.87ms  1522.2 MB/sec
list_primitive/default                             1.00    247.5±1.16ms     2.2 GB/sec    1.01    250.2±2.22ms     2.1 GB/sec
list_primitive/parquet_2                           1.00    267.9±0.57ms  2036.0 MB/sec    1.01    270.1±0.72ms  2019.5 MB/sec
list_primitive/zstd                                1.01    499.4±1.63ms  1092.1 MB/sec    1.00    494.7±1.32ms  1102.5 MB/sec
list_primitive/zstd_parquet_2                      1.00    491.4±0.65ms  1109.9 MB/sec    1.00    493.1±0.33ms  1106.0 MB/sec
list_primitive_non_null/bloom_filter               1.00    433.6±5.40ms  1255.1 MB/sec    1.00    434.0±8.63ms  1254.0 MB/sec
list_primitive_non_null/cdc                        1.00    441.9±8.75ms  1231.5 MB/sec    1.00   442.5±19.30ms  1229.8 MB/sec
list_primitive_non_null/default                    1.00    293.6±4.39ms  1853.7 MB/sec    1.04    304.1±7.62ms  1789.9 MB/sec
list_primitive_non_null/parquet_2                  1.01   311.0±13.65ms  1750.2 MB/sec    1.00   307.5±25.04ms  1769.6 MB/sec
list_primitive_non_null/zstd                       1.00    717.4±8.92ms   758.6 MB/sec    1.00   719.1±27.93ms   756.8 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    671.4±0.87ms   810.6 MB/sec    1.03    690.7±1.03ms   787.9 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.2±0.15ms     3.3 GB/sec    1.09     12.3±0.10ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.8±0.15ms  1638.9 MB/sec    1.03     23.5±0.10ms  1592.1 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.9±0.12ms     3.3 GB/sec    1.08     11.8±0.12ms     3.1 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     10.9±0.12ms     3.3 GB/sec    1.09     11.9±0.07ms     3.1 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.9±0.10ms     2.8 GB/sec    1.05     13.6±0.07ms     2.7 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.0±0.13ms     3.3 GB/sec    1.08     11.9±0.09ms     3.1 GB/sec
primitive/bloom_filter                             1.01    152.5±0.81ms   294.2 MB/sec    1.00    151.5±1.06ms   296.3 MB/sec
primitive/cdc                                      1.01    161.3±0.76ms   278.2 MB/sec    1.00    160.4±0.80ms   279.8 MB/sec
primitive/default                                  1.00    119.6±0.69ms   375.3 MB/sec    1.00    119.0±0.83ms   377.2 MB/sec
primitive/parquet_2                                1.00    134.3±0.66ms   334.0 MB/sec    1.00    134.8±0.72ms   333.0 MB/sec
primitive/zstd                                     1.00    149.1±0.93ms   300.9 MB/sec    1.00    148.6±0.60ms   301.9 MB/sec
primitive/zstd_parquet_2                           1.00    167.7±0.76ms   267.6 MB/sec    1.00    167.5±0.65ms   267.9 MB/sec
primitive_all_null/bloom_filter                    1.00     11.6±0.18ms     3.8 GB/sec    1.00     11.6±0.14ms     3.8 GB/sec
primitive_all_null/cdc                             1.01     30.8±0.42ms  1458.6 MB/sec    1.00     30.6±0.40ms  1466.5 MB/sec
primitive_all_null/default                         1.00     10.9±0.13ms     4.0 GB/sec    1.01     11.0±0.17ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     10.9±0.20ms     4.0 GB/sec    1.00     11.0±0.21ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.0±0.16ms     4.0 GB/sec    1.01     11.1±0.19ms     3.9 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.1±0.23ms     4.0 GB/sec    1.00     11.1±0.23ms     3.9 GB/sec
primitive_non_null/bloom_filter                    1.08    116.5±1.55ms   377.6 MB/sec    1.00    107.9±0.66ms   408.0 MB/sec
primitive_non_null/cdc                             1.00     90.9±0.67ms   484.0 MB/sec    1.00     90.7±0.51ms   485.0 MB/sec
primitive_non_null/default                         1.00     68.2±0.23ms   645.1 MB/sec    1.00     68.3±0.29ms   644.2 MB/sec
primitive_non_null/parquet_2                       1.00     90.0±0.38ms   488.7 MB/sec    1.00     89.6±0.36ms   491.1 MB/sec
primitive_non_null/zstd                            1.07    105.8±0.53ms   415.7 MB/sec    1.00     98.9±0.33ms   445.1 MB/sec
primitive_non_null/zstd_parquet_2                  1.06    130.8±1.86ms   336.3 MB/sec    1.00    123.3±0.36ms   357.0 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     18.9±0.22ms     2.3 GB/sec    1.00     18.9±0.17ms     2.3 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     37.6±0.32ms  1194.9 MB/sec    1.00     37.6±0.23ms  1194.8 MB/sec
primitive_sparse_99pct_null/default                1.00     16.9±0.07ms     2.6 GB/sec    1.01     17.1±0.06ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     17.0±0.07ms     2.6 GB/sec    1.00     17.0±0.09ms     2.6 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.2±0.07ms     2.2 GB/sec    1.01     20.3±0.10ms     2.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     18.9±0.07ms     2.3 GB/sec    1.01     19.0±0.08ms     2.3 GB/sec
short_string_non_null/bloom_filter                                                        1.00     28.2±0.08ms   425.5 MB/sec
short_string_non_null/cdc                                                                 1.00     20.2±0.07ms   594.8 MB/sec
short_string_non_null/default                                                             1.00     15.9±0.10ms   752.7 MB/sec
short_string_non_null/parquet_2                                                           1.00     25.6±0.06ms   469.3 MB/sec
short_string_non_null/zstd                                                                1.00     36.0±0.10ms   333.5 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     28.5±0.07ms   421.1 MB/sec
string/bloom_filter                                1.08   231.7±25.73ms     2.2 GB/sec    1.00   213.8±15.26ms     2.4 GB/sec
string/cdc                                         1.00    221.6±6.09ms     2.3 GB/sec    1.00    221.2±5.30ms     2.3 GB/sec
string/default                                     1.20   143.8±25.23ms     3.6 GB/sec    1.00   119.3±12.07ms     4.3 GB/sec
string/parquet_2                                   1.05    125.4±1.02ms     4.1 GB/sec    1.00    119.2±1.11ms     4.3 GB/sec
string/zstd                                        1.01    426.4±2.98ms  1229.6 MB/sec    1.00    420.4±1.72ms  1247.1 MB/sec
string/zstd_parquet_2                              1.00    394.0±0.73ms  1330.7 MB/sec    1.01    397.8±0.72ms  1317.9 MB/sec
string_and_binary_view/bloom_filter                1.00     66.2±0.68ms   486.9 MB/sec    1.02     67.8±0.21ms   475.8 MB/sec
string_and_binary_view/cdc                         1.00     59.0±0.28ms   546.6 MB/sec    1.05     61.7±0.13ms   522.6 MB/sec
string_and_binary_view/default                     1.00     48.6±0.34ms   664.1 MB/sec    1.05     50.9±0.14ms   633.0 MB/sec
string_and_binary_view/parquet_2                   1.00     59.3±0.43ms   544.3 MB/sec    1.04     61.7±0.13ms   522.3 MB/sec
string_and_binary_view/zstd                        1.00     85.1±0.44ms   378.8 MB/sec    1.03     87.6±0.11ms   368.1 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.2±0.27ms   440.9 MB/sec    1.03     75.6±0.14ms   426.3 MB/sec
string_dictionary/bloom_filter                     1.00     91.1±1.88ms     2.8 GB/sec    1.51    137.4±1.18ms  1922.0 MB/sec
string_dictionary/cdc                              1.00     86.0±1.23ms     3.0 GB/sec    1.16     99.8±2.45ms     2.6 GB/sec
string_dictionary/default                          1.00     49.3±0.58ms     5.2 GB/sec    1.86     91.8±1.06ms     2.8 GB/sec
string_dictionary/parquet_2                        1.00     54.3±0.47ms     4.7 GB/sec    1.89    102.6±0.37ms     2.5 GB/sec
string_dictionary/zstd                             1.00    211.1±1.33ms  1251.3 MB/sec    1.06   222.9±14.78ms  1185.0 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.4±0.36ms  1331.0 MB/sec    1.19    236.2±0.36ms  1118.3 MB/sec
string_non_null/bloom_filter                       1.01   256.4±16.13ms  2043.6 MB/sec    1.00   254.1±12.29ms     2.0 GB/sec
string_non_null/cdc                                1.00    269.9±9.26ms  1941.5 MB/sec    1.03   279.0±11.17ms  1878.1 MB/sec
string_non_null/default                            1.00   128.9±13.26ms     4.0 GB/sec    1.03   133.0±12.02ms     3.8 GB/sec
string_non_null/parquet_2                          1.00   141.2±11.53ms     3.6 GB/sec    1.09    154.6±0.46ms     3.3 GB/sec
string_non_null/zstd                               1.00    533.5±2.20ms   982.2 MB/sec    1.10   586.3±34.00ms   893.7 MB/sec
string_non_null/zstd_parquet_2                     1.00    506.4±2.28ms  1034.7 MB/sec    1.03   520.9±10.85ms  1005.9 MB/sec
struct_all_null/bloom_filter                       1.01      2.5±0.01ms     6.2 GB/sec    1.00      2.5±0.00ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.8±0.13ms  1640.5 MB/sec    1.00      9.8±0.16ms  1638.0 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.02     48.6±0.29ms   329.1 MB/sec    1.00     47.6±0.16ms   336.2 MB/sec
struct_non_null/cdc                                1.00     46.1±0.21ms   347.3 MB/sec    1.00     46.0±0.16ms   347.6 MB/sec
struct_non_null/default                            1.01     32.6±0.19ms   491.5 MB/sec    1.00     32.4±0.12ms   494.2 MB/sec
struct_non_null/parquet_2                          1.01     41.4±0.18ms   386.5 MB/sec    1.00     41.1±0.11ms   389.2 MB/sec
struct_non_null/zstd                               1.01     41.3±0.18ms   387.5 MB/sec    1.00     41.1±0.10ms   389.7 MB/sec
struct_non_null/zstd_parquet_2                     1.01     55.4±0.14ms   288.6 MB/sec    1.00     55.1±0.14ms   290.3 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.6±0.15ms     2.1 GB/sec    1.00      7.6±0.10ms     2.1 GB/sec
struct_sparse_99pct_null/cdc                       1.00     15.7±0.17ms  1028.6 MB/sec    1.00     15.7±0.18ms  1026.7 MB/sec
struct_sparse_99pct_null/default                   1.00      7.0±0.10ms     2.2 GB/sec    1.00      7.0±0.03ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      7.0±0.10ms     2.2 GB/sec    1.00      7.0±0.04ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.4±0.10ms  1909.6 MB/sec    1.00      8.4±0.04ms  1918.0 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.8±0.12ms     2.0 GB/sec    1.00      7.8±0.04ms     2.0 GB/sec

Resource Usage

base (merge-base)

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

branch

Metric Value
Wall time 2105.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2019.6s
CPU sys 81.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4452557769-94-2nbcr 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 parquet-page-size-mid-batch (bbe2b7e) to 48fa8a7 (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

@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4453035593-96-5mrpz 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 parquet-page-size-mid-batch (bbe2b7e) to 48fa8a7 (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

@etseidl
Copy link
Copy Markdown
Contributor

etseidl commented May 14, 2026

Have you considered making the batch size configurable per column?

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.00     13.0±0.03ms    19.2 MB/sec    1.00     13.0±0.09ms    19.2 MB/sec
bool/cdc                                           1.00     15.6±0.04ms    16.0 MB/sec    1.00     15.7±0.12ms    16.0 MB/sec
bool/default                                       1.00     10.9±0.03ms    22.9 MB/sec    1.01     11.0±0.12ms    22.8 MB/sec
bool/parquet_2                                     1.00     14.7±0.04ms    17.0 MB/sec    1.00     14.8±0.12ms    16.9 MB/sec
bool/zstd                                          1.00     11.4±0.03ms    21.9 MB/sec    1.00     11.5±0.10ms    21.8 MB/sec
bool/zstd_parquet_2                                1.00     15.1±0.04ms    16.6 MB/sec    1.00     15.1±0.12ms    16.5 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.04ms    18.4 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.2 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.8 MB/sec    1.00      9.1±0.03ms    13.8 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    27.1 MB/sec    1.00      4.6±0.02ms    27.0 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.04ms    13.2 MB/sec    1.00      9.5±0.04ms    13.2 MB/sec
float_with_nans/bloom_filter                       1.00     92.4±0.36ms   151.5 MB/sec    1.04     96.2±0.72ms   145.5 MB/sec
float_with_nans/cdc                                1.00     81.2±0.20ms   172.4 MB/sec    1.03     83.7±1.01ms   167.3 MB/sec
float_with_nans/default                            1.00     74.1±0.24ms   188.9 MB/sec    1.02     75.9±0.43ms   184.4 MB/sec
float_with_nans/parquet_2                          1.00     94.1±0.39ms   148.8 MB/sec    1.03     97.3±0.55ms   143.8 MB/sec
float_with_nans/zstd                               1.00    111.6±0.21ms   125.4 MB/sec    1.02    114.2±1.07ms   122.6 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.1±0.39ms   106.8 MB/sec    1.03    134.9±0.57ms   103.8 MB/sec
large_string_non_null/bloom_filter                                                        1.00     82.2±0.16ms     3.0 GB/sec
large_string_non_null/cdc                                                                 1.00    242.6±1.01ms  1055.1 MB/sec
large_string_non_null/default                                                             1.00     63.1±0.22ms     4.0 GB/sec
large_string_non_null/parquet_2                                                           1.00     63.3±0.20ms     4.0 GB/sec
large_string_non_null/zstd                                                                1.00     63.4±0.22ms     3.9 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     63.4±0.23ms     3.9 GB/sec
list_primitive/bloom_filter                        1.00    323.2±0.77ms  1687.2 MB/sec    1.05    340.5±3.10ms  1601.6 MB/sec
list_primitive/cdc                                 1.00    357.4±1.04ms  1526.1 MB/sec    1.02    364.5±2.63ms  1496.3 MB/sec
list_primitive/default                             1.00   255.4±46.59ms     2.1 GB/sec    1.00    255.8±1.89ms     2.1 GB/sec
list_primitive/parquet_2                           1.00    268.4±0.72ms  2031.7 MB/sec    1.02    272.7±1.05ms  1999.7 MB/sec
list_primitive/zstd                                1.00    500.1±1.93ms  1090.5 MB/sec    1.02    511.1±1.79ms  1067.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    490.5±0.49ms  1111.9 MB/sec    1.02    500.3±2.01ms  1090.1 MB/sec
list_primitive_non_null/bloom_filter               1.00    418.7±6.33ms  1300.0 MB/sec    1.26   526.0±24.06ms  1034.8 MB/sec
list_primitive_non_null/cdc                        1.00    440.4±7.41ms  1235.7 MB/sec    1.01    442.8±6.00ms  1229.0 MB/sec
list_primitive_non_null/default                    1.00    285.9±4.54ms  1903.7 MB/sec    1.32   376.1±18.32ms  1446.9 MB/sec
list_primitive_non_null/parquet_2                  1.00   306.8±12.97ms  1773.9 MB/sec    1.30    397.9±5.13ms  1367.7 MB/sec
list_primitive_non_null/zstd                       1.00    719.5±6.21ms   756.4 MB/sec    1.09   782.7±16.12ms   695.4 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    686.4±1.31ms   792.9 MB/sec    1.09    749.3±3.12ms   726.3 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.1±0.22ms     3.3 GB/sec    1.05     11.7±0.11ms     3.1 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.5±0.09ms  1663.4 MB/sec    1.03     23.1±0.11ms  1615.5 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.7±0.04ms     3.4 GB/sec    1.05     11.2±0.11ms     3.2 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     10.7±0.04ms     3.4 GB/sec    1.04     11.2±0.05ms     3.3 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.6±0.05ms     2.9 GB/sec    1.04     13.1±0.05ms     2.8 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     10.9±0.04ms     3.4 GB/sec    1.04     11.4±0.08ms     3.2 GB/sec
primitive/bloom_filter                             1.00    148.3±0.47ms   302.7 MB/sec    1.00    148.8±0.66ms   301.6 MB/sec
primitive/cdc                                      1.00    158.7±0.53ms   282.8 MB/sec    1.00    158.8±0.86ms   282.6 MB/sec
primitive/default                                  1.00    117.3±0.24ms   382.6 MB/sec    1.01    117.9±0.68ms   380.5 MB/sec
primitive/parquet_2                                1.00    132.2±0.27ms   339.4 MB/sec    1.00    132.7±0.66ms   338.1 MB/sec
primitive/zstd                                     1.00    146.8±0.28ms   305.8 MB/sec    1.01    147.7±0.71ms   303.7 MB/sec
primitive/zstd_parquet_2                           1.00    165.5±0.33ms   271.1 MB/sec    1.00    166.1±0.59ms   270.1 MB/sec
primitive_all_null/bloom_filter                    1.00     11.5±0.11ms     3.8 GB/sec    1.02     11.8±0.17ms     3.7 GB/sec
primitive_all_null/cdc                             1.03     30.6±0.39ms  1465.9 MB/sec    1.00     29.8±0.46ms  1503.4 MB/sec
primitive_all_null/default                         1.00     10.9±0.21ms     4.0 GB/sec    1.00     10.9±0.11ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.01     11.0±0.20ms     4.0 GB/sec    1.00     10.9±0.15ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.0±0.14ms     4.0 GB/sec    1.02     11.2±0.21ms     3.9 GB/sec
primitive_all_null/zstd_parquet_2                  1.00     11.0±0.16ms     4.0 GB/sec    1.01     11.1±0.22ms     4.0 GB/sec
primitive_non_null/bloom_filter                    1.08    113.3±1.61ms   388.4 MB/sec    1.00    105.2±0.20ms   418.4 MB/sec
primitive_non_null/cdc                             1.01     90.0±0.50ms   489.1 MB/sec    1.00     89.3±0.29ms   492.9 MB/sec
primitive_non_null/default                         1.01     67.4±0.22ms   653.2 MB/sec    1.00     67.0±0.18ms   656.5 MB/sec
primitive_non_null/parquet_2                       1.00     89.1±0.20ms   493.9 MB/sec    1.00     88.8±0.14ms   495.7 MB/sec
primitive_non_null/zstd                            1.08    105.6±0.45ms   416.8 MB/sec    1.00     97.6±0.12ms   450.8 MB/sec
primitive_non_null/zstd_parquet_2                  1.06    130.1±1.86ms   338.1 MB/sec    1.00    122.2±0.18ms   360.0 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     18.3±0.16ms     2.4 GB/sec    1.06     19.3±0.26ms     2.3 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     37.2±0.38ms  1207.0 MB/sec    1.00     37.2±0.37ms  1205.8 MB/sec
primitive_sparse_99pct_null/default                1.00     16.8±0.06ms     2.6 GB/sec    1.03     17.3±0.08ms     2.5 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     16.7±0.06ms     2.6 GB/sec    1.03     17.3±0.10ms     2.5 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.0±0.10ms     2.2 GB/sec    1.03     20.6±0.12ms     2.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     18.7±0.09ms     2.3 GB/sec    1.03     19.3±0.12ms     2.3 GB/sec
short_string_non_null/bloom_filter                                                        1.00     29.7±0.13ms   403.9 MB/sec
short_string_non_null/cdc                                                                 1.00     20.2±0.06ms   594.2 MB/sec
short_string_non_null/default                                                             1.00     16.4±0.13ms   733.4 MB/sec
short_string_non_null/parquet_2                                                           1.00     26.0±0.14ms   461.6 MB/sec
short_string_non_null/zstd                                                                1.00     38.2±6.26ms   314.3 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     29.1±0.18ms   412.8 MB/sec
string/bloom_filter                                1.05   228.5±26.93ms     2.2 GB/sec    1.00   217.9±17.20ms     2.3 GB/sec
string/cdc                                         1.00    220.9±5.71ms     2.3 GB/sec    1.00    220.6±5.33ms     2.3 GB/sec
string/default                                     1.15   140.0±24.70ms     3.7 GB/sec    1.00   122.1±13.31ms     4.2 GB/sec
string/parquet_2                                   1.01    126.4±1.85ms     4.1 GB/sec    1.00    124.8±1.03ms     4.1 GB/sec
string/zstd                                        1.01    424.6±2.74ms  1234.6 MB/sec    1.00    421.6±1.32ms  1243.6 MB/sec
string/zstd_parquet_2                              1.00    394.7±1.28ms  1328.2 MB/sec    1.02    401.3±0.35ms  1306.2 MB/sec
string_and_binary_view/bloom_filter                1.00     63.4±0.24ms   508.7 MB/sec    1.09     69.2±0.17ms   465.9 MB/sec
string_and_binary_view/cdc                         1.00     58.3±0.12ms   553.1 MB/sec    1.05     61.4±0.15ms   525.6 MB/sec
string_and_binary_view/default                     1.00     47.7±0.10ms   676.3 MB/sec    1.10     52.5±0.18ms   614.2 MB/sec
string_and_binary_view/parquet_2                   1.00     58.5±0.12ms   551.0 MB/sec    1.08     63.2±0.32ms   510.4 MB/sec
string_and_binary_view/zstd                        1.00     84.2±0.15ms   382.9 MB/sec    1.06     89.3±0.37ms   360.9 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     72.4±0.11ms   445.6 MB/sec    1.07     77.1±0.16ms   418.0 MB/sec
string_dictionary/bloom_filter                     1.00     88.8±0.66ms     2.9 GB/sec    1.54    136.8±2.03ms  1930.6 MB/sec
string_dictionary/cdc                              1.00     86.6±2.67ms     3.0 GB/sec    1.14     98.8±3.49ms     2.6 GB/sec
string_dictionary/default                          1.00     48.2±0.34ms     5.3 GB/sec    1.91     91.9±2.19ms     2.8 GB/sec
string_dictionary/parquet_2                        1.00     53.8±0.16ms     4.8 GB/sec    1.94    104.2±2.36ms     2.5 GB/sec
string_dictionary/zstd                             1.00    208.7±0.68ms  1265.8 MB/sec    1.07   223.1±14.95ms  1184.1 MB/sec
string_dictionary/zstd_parquet_2                   1.00    197.8±0.12ms  1335.0 MB/sec    1.20    236.6±1.77ms  1116.4 MB/sec
string_non_null/bloom_filter                       1.00   252.4±15.95ms     2.0 GB/sec    1.01   254.2±12.25ms     2.0 GB/sec
string_non_null/cdc                                1.00    267.6±9.15ms  1958.5 MB/sec    1.06   283.6±12.31ms  1847.7 MB/sec
string_non_null/default                            1.00   126.2±12.63ms     4.1 GB/sec    1.07   135.2±12.42ms     3.8 GB/sec
string_non_null/parquet_2                          1.00   141.3±12.34ms     3.6 GB/sec    1.11    157.1±1.99ms     3.3 GB/sec
string_non_null/zstd                               1.00    531.4±2.22ms   986.0 MB/sec    1.11   589.4±34.73ms   889.0 MB/sec
string_non_null/zstd_parquet_2                     1.00    505.7±2.52ms  1036.1 MB/sec    1.04   527.6±11.72ms   993.2 MB/sec
struct_all_null/bloom_filter                       1.00      2.5±0.00ms     6.2 GB/sec    1.01      2.6±0.02ms     6.2 GB/sec
struct_all_null/cdc                                1.00      9.9±0.12ms  1634.9 MB/sec    1.01     10.0±0.12ms  1611.5 MB/sec
struct_all_null/default                            1.00      2.2±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.9 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     47.1±0.20ms   339.8 MB/sec    1.02     47.9±0.83ms   334.2 MB/sec
struct_non_null/cdc                                1.00     45.7±0.22ms   350.3 MB/sec    1.01     46.1±0.46ms   346.9 MB/sec
struct_non_null/default                            1.00     32.1±0.15ms   499.0 MB/sec    1.01     32.4±0.44ms   493.3 MB/sec
struct_non_null/parquet_2                          1.00     40.8±0.51ms   392.0 MB/sec    1.01     41.2±0.49ms   388.4 MB/sec
struct_non_null/zstd                               1.00     40.8±0.11ms   392.1 MB/sec    1.01     41.2±0.54ms   387.9 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.9±0.17ms   291.5 MB/sec    1.03     56.3±2.02ms   284.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.5±0.05ms     2.1 GB/sec    1.07      8.0±0.11ms  2019.0 MB/sec
struct_sparse_99pct_null/cdc                       1.00     15.3±0.08ms  1051.6 MB/sec    1.01     15.5±0.09ms  1040.0 MB/sec
struct_sparse_99pct_null/default                   1.00      7.0±0.04ms     2.3 GB/sec    1.04      7.3±0.07ms     2.2 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      6.9±0.03ms     2.3 GB/sec    1.05      7.3±0.07ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.00      8.3±0.02ms  1949.3 MB/sec    1.05      8.7±0.07ms  1864.2 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.7±0.02ms     2.0 GB/sec    1.05      8.1±0.04ms  1998.4 MB/sec

Resource Usage

base (merge-base)

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

branch

Metric Value
Wall time 2155.5s
Peak memory 6.8 GiB
Avg memory 6.7 GiB
CPU user 2078.6s
CPU sys 76.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

Have you considered making the batch size configurable per column?

Yes, that may be a simpler approach. But I'm hoping we can get to a place where users don't have to think about / configure this. Given they gave us a page size limit it'd be nice if we can always adhere to that...

Comment thread parquet/src/data_type.rs Outdated
@etseidl
Copy link
Copy Markdown
Contributor

etseidl commented May 14, 2026

Another thought...maybe add another chunker like the CDC work added (

fn write_with_chunker(
). If we compute batches up front when we know the shape of the data that might be faster 🤷

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.01     13.2±0.08ms    18.9 MB/sec    1.00     13.1±0.06ms    19.1 MB/sec
bool/cdc                                           1.01     16.0±0.08ms    15.6 MB/sec    1.00     15.8±0.26ms    15.8 MB/sec
bool/default                                       1.01     11.0±0.07ms    22.6 MB/sec    1.00     10.9±0.09ms    22.9 MB/sec
bool/parquet_2                                     1.00     14.7±0.05ms    17.0 MB/sec    1.00     14.7±0.07ms    17.0 MB/sec
bool/zstd                                          1.02     11.6±0.06ms    21.6 MB/sec    1.00     11.4±0.06ms    22.0 MB/sec
bool/zstd_parquet_2                                1.01     15.2±0.08ms    16.5 MB/sec    1.00     15.1±0.27ms    16.6 MB/sec
bool_non_null/bloom_filter                         1.00      7.1±0.04ms    17.6 MB/sec    1.00      7.1±0.15ms    17.6 MB/sec
bool_non_null/cdc                                  1.00      7.0±0.05ms    17.9 MB/sec    1.00      7.0±0.13ms    17.8 MB/sec
bool_non_null/default                              1.00      4.3±0.03ms    29.1 MB/sec    1.00      4.3±0.10ms    29.0 MB/sec
bool_non_null/parquet_2                            1.00      9.1±0.05ms    13.7 MB/sec    1.00      9.1±0.24ms    13.7 MB/sec
bool_non_null/zstd                                 1.00      4.7±0.02ms    26.9 MB/sec    1.00      4.6±0.03ms    27.0 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.5±0.05ms    13.1 MB/sec    1.00      9.5±0.24ms    13.1 MB/sec
float_with_nans/bloom_filter                       1.00     95.7±2.15ms   146.3 MB/sec    1.01     97.0±2.24ms   144.3 MB/sec
float_with_nans/cdc                                1.00     82.9±1.46ms   168.8 MB/sec    1.03     85.0±1.07ms   164.7 MB/sec
float_with_nans/default                            1.00     76.1±2.46ms   184.0 MB/sec    1.01     76.9±1.74ms   182.0 MB/sec
float_with_nans/parquet_2                          1.00     97.5±2.31ms   143.7 MB/sec    1.00     97.7±2.52ms   143.3 MB/sec
float_with_nans/zstd                               1.01    114.5±2.02ms   122.2 MB/sec    1.00    113.0±1.76ms   123.9 MB/sec
float_with_nans/zstd_parquet_2                     1.00    134.1±2.59ms   104.4 MB/sec    1.01    135.2±2.50ms   103.6 MB/sec
large_string_non_null/bloom_filter                                                        1.00     84.5±3.68ms     3.0 GB/sec
large_string_non_null/cdc                                                                 1.00    244.0±2.19ms  1049.1 MB/sec
large_string_non_null/default                                                             1.00     64.3±2.55ms     3.9 GB/sec
large_string_non_null/parquet_2                                                           1.00     63.7±3.92ms     3.9 GB/sec
large_string_non_null/zstd                                                                1.00     60.7±0.26ms     4.1 GB/sec
large_string_non_null/zstd_parquet_2                                                      1.00     62.2±1.88ms     4.0 GB/sec
list_primitive/bloom_filter                        1.00    340.8±6.92ms  1600.0 MB/sec    1.08   369.1±15.47ms  1477.7 MB/sec
list_primitive/cdc                                 1.00    364.0±3.08ms  1498.2 MB/sec    1.02    371.0±8.13ms  1469.8 MB/sec
list_primitive/default                             1.00    255.5±6.60ms     2.1 GB/sec    1.07    274.6±8.33ms  1986.2 MB/sec
list_primitive/parquet_2                           1.00    271.3±3.24ms  2010.0 MB/sec    1.06    288.7±2.44ms  1888.7 MB/sec
list_primitive/zstd                                1.00    506.5±6.71ms  1076.6 MB/sec    1.03    520.8±7.25ms  1047.1 MB/sec
list_primitive/zstd_parquet_2                      1.00    496.0±3.27ms  1099.5 MB/sec    1.00    496.6±4.31ms  1098.2 MB/sec
list_primitive_non_null/bloom_filter               1.00   447.4±21.93ms  1216.4 MB/sec    1.16   517.1±33.75ms  1052.5 MB/sec
list_primitive_non_null/cdc                        1.01   450.7±12.72ms  1207.4 MB/sec    1.00   447.8±11.71ms  1215.3 MB/sec
list_primitive_non_null/default                    1.00   303.8±11.10ms  1791.3 MB/sec    1.25   379.8±19.28ms  1432.9 MB/sec
list_primitive_non_null/parquet_2                  1.00   318.8±16.26ms  1707.3 MB/sec    1.33   422.5±16.94ms  1288.2 MB/sec
list_primitive_non_null/zstd                       1.00   735.5±14.23ms   740.0 MB/sec    1.07   783.7±19.04ms   694.4 MB/sec
list_primitive_non_null/zstd_parquet_2             1.00    702.1±6.10ms   775.1 MB/sec    1.06    747.6±4.61ms   728.0 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.3±0.24ms     3.2 GB/sec    1.04     11.7±0.06ms     3.1 GB/sec
list_primitive_sparse_99pct_null/cdc               1.02     23.0±0.23ms  1625.1 MB/sec    1.00     22.6±0.10ms  1652.1 MB/sec
list_primitive_sparse_99pct_null/default           1.03     11.2±0.05ms     3.3 GB/sec    1.00     10.9±0.04ms     3.4 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.2±0.14ms     3.3 GB/sec    1.02     11.3±0.07ms     3.2 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.1±0.29ms     2.8 GB/sec    1.01     13.2±0.29ms     2.8 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     10.9±0.05ms     3.3 GB/sec    1.03     11.3±0.31ms     3.2 GB/sec
primitive/bloom_filter                             1.02    156.1±3.23ms   287.4 MB/sec    1.00    153.2±2.93ms   293.0 MB/sec
primitive/cdc                                      1.00    161.7±3.06ms   277.5 MB/sec    1.01    162.6±3.18ms   276.1 MB/sec
primitive/default                                  1.02    120.6±0.82ms   372.0 MB/sec    1.00    118.3±1.10ms   379.3 MB/sec
primitive/parquet_2                                1.00    134.6±2.25ms   333.5 MB/sec    1.00    134.9±1.97ms   332.7 MB/sec
primitive/zstd                                     1.01    149.1±1.65ms   300.9 MB/sec    1.00    147.7±0.76ms   303.8 MB/sec
primitive/zstd_parquet_2                           1.00    168.8±1.53ms   265.9 MB/sec    1.00    168.8±1.52ms   265.8 MB/sec
primitive_all_null/bloom_filter                    1.00     11.9±0.18ms     3.7 GB/sec    1.00     11.8±0.23ms     3.7 GB/sec
primitive_all_null/cdc                             1.03     30.9±0.49ms  1450.1 MB/sec    1.00     30.1±0.51ms  1492.4 MB/sec
primitive_all_null/default                         1.00     10.9±0.11ms     4.0 GB/sec    1.00     11.0±0.16ms     4.0 GB/sec
primitive_all_null/parquet_2                       1.00     11.0±0.18ms     4.0 GB/sec    1.00     11.0±0.23ms     4.0 GB/sec
primitive_all_null/zstd                            1.00     11.0±0.13ms     4.0 GB/sec    1.00     11.0±0.17ms     4.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.01     11.0±0.15ms     4.0 GB/sec    1.00     10.9±0.10ms     4.0 GB/sec
primitive_non_null/bloom_filter                    1.09    117.1±2.94ms   375.6 MB/sec    1.00    107.7±1.65ms   408.5 MB/sec
primitive_non_null/cdc                             1.00     92.0±1.42ms   478.3 MB/sec    1.00     91.8±1.31ms   479.5 MB/sec
primitive_non_null/default                         1.03     69.7±1.09ms   631.7 MB/sec    1.00     67.7±0.30ms   649.9 MB/sec
primitive_non_null/parquet_2                       1.01     91.7±1.91ms   479.9 MB/sec    1.00     91.2±1.32ms   482.7 MB/sec
primitive_non_null/zstd                            1.07    107.1±2.41ms   410.8 MB/sec    1.00     99.8±1.92ms   441.0 MB/sec
primitive_non_null/zstd_parquet_2                  1.05    131.4±1.99ms   334.8 MB/sec    1.00    124.6±1.30ms   353.2 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     19.0±0.38ms     2.3 GB/sec    1.00     18.9±0.49ms     2.3 GB/sec
primitive_sparse_99pct_null/cdc                    1.01     37.5±0.40ms  1198.2 MB/sec    1.00     37.1±0.54ms  1208.8 MB/sec
primitive_sparse_99pct_null/default                1.02     17.3±0.16ms     2.5 GB/sec    1.00     16.9±0.06ms     2.6 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     17.4±0.09ms     2.5 GB/sec    1.00     17.5±0.08ms     2.5 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     20.4±0.24ms     2.1 GB/sec    1.02     20.7±0.28ms     2.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     19.2±0.38ms     2.3 GB/sec    1.01     19.4±0.40ms     2.3 GB/sec
short_string_non_null/bloom_filter                                                        1.00     29.7±0.21ms   404.3 MB/sec
short_string_non_null/cdc                                                                 1.00     20.6±0.17ms   581.8 MB/sec
short_string_non_null/default                                                             1.00     16.9±0.20ms   710.8 MB/sec
short_string_non_null/parquet_2                                                           1.00     26.5±0.24ms   452.8 MB/sec
short_string_non_null/zstd                                                                1.00     36.5±0.12ms   328.8 MB/sec
short_string_non_null/zstd_parquet_2                                                      1.00     29.2±0.17ms   410.8 MB/sec
string/bloom_filter                                1.09   231.5±23.89ms     2.2 GB/sec    1.00   211.7±14.75ms     2.4 GB/sec
string/cdc                                         1.01    226.1±9.11ms     2.3 GB/sec    1.00   224.7±11.94ms     2.3 GB/sec
string/default                                     1.12   146.7±24.93ms     3.5 GB/sec    1.00   131.6±11.00ms     3.9 GB/sec
string/parquet_2                                   1.07    129.2±2.88ms     4.0 GB/sec    1.00    120.6±6.92ms     4.2 GB/sec
string/zstd                                        1.00    430.5±8.49ms  1217.7 MB/sec    1.03    441.5±9.87ms  1187.4 MB/sec
string/zstd_parquet_2                              1.00    397.8±4.26ms  1318.0 MB/sec    1.02    406.3±4.56ms  1290.2 MB/sec
string_and_binary_view/bloom_filter                1.00     67.2±3.49ms   479.6 MB/sec    1.01     68.2±0.39ms   472.6 MB/sec
string_and_binary_view/cdc                         1.00     59.4±1.21ms   543.2 MB/sec    1.06     62.8±2.45ms   513.8 MB/sec
string_and_binary_view/default                     1.00     48.7±0.95ms   662.0 MB/sec    1.11     54.0±2.59ms   597.0 MB/sec
string_and_binary_view/parquet_2                   1.00     58.9±0.58ms   547.7 MB/sec    1.11     65.2±0.86ms   494.4 MB/sec
string_and_binary_view/zstd                        1.00     85.5±0.95ms   377.2 MB/sec    1.06     90.8±1.48ms   355.0 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     74.2±0.66ms   434.4 MB/sec    1.07     79.3±2.37ms   406.8 MB/sec
string_dictionary/bloom_filter                     1.03    104.5±0.90ms     2.5 GB/sec    1.00    101.1±5.73ms     2.6 GB/sec
string_dictionary/cdc                              1.38     78.4±2.15ms     3.3 GB/sec    1.00     56.7±3.11ms     4.6 GB/sec
string_dictionary/default                          1.29     65.3±3.55ms     3.9 GB/sec    1.00     50.6±0.56ms     5.1 GB/sec
string_dictionary/parquet_2                        1.19     67.8±0.44ms     3.8 GB/sec    1.00     56.8±1.57ms     4.5 GB/sec
string_dictionary/zstd                             1.02    218.7±3.32ms  1207.8 MB/sec    1.00    215.4±4.94ms  1226.0 MB/sec
string_dictionary/zstd_parquet_2                   1.00    200.1±2.51ms  1319.8 MB/sec    1.01    201.9±1.54ms  1308.5 MB/sec
string_non_null/bloom_filter                       1.03   270.4±28.27ms  1937.7 MB/sec    1.00   263.2±19.14ms  1990.8 MB/sec
string_non_null/cdc                                1.01   274.5±13.60ms  1909.1 MB/sec    1.00   272.9±11.94ms  1919.9 MB/sec
string_non_null/default                            1.00   148.1±14.93ms     3.5 GB/sec    1.03   152.1±16.41ms     3.4 GB/sec
string_non_null/parquet_2                          1.00    145.3±9.80ms     3.5 GB/sec    1.08    156.8±3.28ms     3.3 GB/sec
string_non_null/zstd                               1.00   573.6±17.33ms   913.5 MB/sec    1.02   584.3±20.28ms   896.8 MB/sec
string_non_null/zstd_parquet_2                     1.00   527.8±11.88ms   992.8 MB/sec    1.00   529.4±13.85ms   989.8 MB/sec
struct_all_null/bloom_filter                       1.00      2.6±0.04ms     6.1 GB/sec    1.01      2.6±0.04ms     6.1 GB/sec
struct_all_null/cdc                                1.00      9.9±0.17ms  1637.0 MB/sec    1.02     10.0±0.13ms  1612.6 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     47.1±0.89ms   339.4 MB/sec    1.03     48.4±1.17ms   330.9 MB/sec
struct_non_null/cdc                                1.00     46.4±0.36ms   344.8 MB/sec    1.00     46.3±0.38ms   345.9 MB/sec
struct_non_null/default                            1.01     32.8±0.62ms   487.6 MB/sec    1.00     32.6±0.23ms   490.3 MB/sec
struct_non_null/parquet_2                          1.00     40.9±0.33ms   391.4 MB/sec    1.01     41.4±0.79ms   386.5 MB/sec
struct_non_null/zstd                               1.02     41.3±0.53ms   387.0 MB/sec    1.00     40.7±0.23ms   392.8 MB/sec
struct_non_null/zstd_parquet_2                     1.01     55.3±0.45ms   289.4 MB/sec    1.00     54.9±0.14ms   291.6 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      7.9±0.36ms  2033.3 MB/sec    1.02      8.1±0.33ms  1993.7 MB/sec
struct_sparse_99pct_null/cdc                       1.04     16.0±0.15ms  1005.3 MB/sec    1.00     15.5±0.39ms  1041.4 MB/sec
struct_sparse_99pct_null/default                   1.00      7.2±0.18ms     2.2 GB/sec    1.03      7.4±0.08ms     2.1 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      7.0±0.12ms     2.2 GB/sec    1.03      7.3±0.22ms     2.2 GB/sec
struct_sparse_99pct_null/zstd                      1.05      8.9±0.27ms  1820.8 MB/sec    1.00      8.5±0.09ms  1903.6 MB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      7.8±0.10ms     2.0 GB/sec    1.03      8.1±0.22ms  1992.9 MB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 1970.4s
Peak memory 6.6 GiB
Avg memory 6.4 GiB
CPU user 1897.3s
CPU sys 71.4s
Peak spill 0 B

branch

Metric Value
Wall time 2145.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2083.9s
CPU sys 60.2s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

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-c4453799534-97-tqn4k 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 parquet-page-size-mid-batch (145ea5d) to 48fa8a7 (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

@alamb
Copy link
Copy Markdown
Contributor

alamb commented Jun 3, 2026

adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
The variable-width byte-budget walks returned the largest count whose
cumulative encoded size was *under* the budget, so each mini-batch
ended just short of the page threshold. When the input row batch did
not divide evenly into mini-batches, the remainder rolled into the
next page and produced a bimodal page-size pattern (e.g. 128B values,
64KB budget, 1024-row batches: 968 / 540 / 540 ... values per page).

Return the boundary value's index + 1 instead, so the mini-batch
crosses the threshold by exactly one value and the caller's page-flush
check trips immediately, with no leftover sliver carried into the next
page. The worst-case overshoot per page is one value's encoded size,
which already matched the previous behavior whenever a single value
alone exceeded the budget (the dropped .max(1) floor).

Reported by Ed Seidel in apache#9972 review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@adriangb adriangb force-pushed the parquet-page-size-mid-batch branch from 4769588 to bcdb878 Compare June 3, 2026 20:35
adriangb pushed a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
…dSizeBinary page sizing

Adds two `LayoutTest` cases to `arrow_writer_layout.rs` that exercise
byte-budget page-sizing paths introduced in apache#9972 through the real
`ArrowWriter` user path:

- `test_dictionary`: an arrow `DictionaryArray<Int32, Utf8>` input, which
  drives the dictionary-input arm of
  `ByteArrayEncoder::count_values_within_byte_budget_gather`
  (`DataType::Dictionary(_, _) => indices.len()`). Previously uncovered.

- `test_fixed_size_binary`: a non-dictionary `FixedSizeBinary` column,
  which the arrow writer routes through the generic
  `ColumnValueEncoderImpl<FixedLenByteArrayType>`. Covers the FLBA branch
  of `plain_encoded_byte_size` and the variable-width scan in
  `count_values_within_byte_budget` via the arrow path (only the raw
  column-writer test covered it before).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
alamb added a commit to alamb/arrow-rs that referenced this pull request Jun 3, 2026
…dSizeBinary page sizing

Adds two `LayoutTest` cases to `arrow_writer_layout.rs` that exercise
byte-budget page-sizing paths introduced in apache#9972 through the real
`ArrowWriter` user path:

- `test_dictionary`: an arrow `DictionaryArray<Int32, Utf8>` input, which
  drives the dictionary-input arm of
  `ByteArrayEncoder::count_values_within_byte_budget_gather`
  (`DataType::Dictionary(_, _) => indices.len()`). Previously uncovered.

- `test_fixed_size_binary`: a non-dictionary `FixedSizeBinary` column,
  which the arrow writer routes through the generic
  `ColumnValueEncoderImpl<FixedLenByteArrayType>`. Covers the FLBA branch
  of `plain_encoded_byte_size` and the variable-width scan in
  `count_values_within_byte_budget` via the arrow path (only the raw
  column-writer test covered it before).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.03     13.3±0.06ms    18.8 MB/sec    1.00     12.9±0.04ms    19.4 MB/sec
bool/cdc                                           1.03     16.0±0.07ms    15.6 MB/sec    1.00     15.5±0.06ms    16.1 MB/sec
bool/default                                       1.04     11.1±0.06ms    22.4 MB/sec    1.00     10.8±0.04ms    23.3 MB/sec
bool/parquet_2                                     1.02     14.8±0.06ms    16.9 MB/sec    1.00     14.6±0.04ms    17.2 MB/sec
bool/zstd                                          1.03     11.6±0.04ms    21.5 MB/sec    1.00     11.3±0.03ms    22.1 MB/sec
bool/zstd_parquet_2                                1.02     15.2±0.06ms    16.4 MB/sec    1.00     14.9±0.04ms    16.7 MB/sec
bool_non_null/bloom_filter                         1.02      7.0±0.03ms    17.8 MB/sec    1.00      6.9±0.02ms    18.1 MB/sec
bool_non_null/cdc                                  1.03      6.9±0.03ms    18.2 MB/sec    1.00      6.7±0.04ms    18.8 MB/sec
bool_non_null/default                              1.03      4.3±0.02ms    29.2 MB/sec    1.00      4.2±0.03ms    30.0 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.9 MB/sec    1.00      8.9±0.03ms    14.0 MB/sec
bool_non_null/zstd                                 1.03      4.6±0.02ms    27.0 MB/sec    1.00      4.5±0.02ms    27.7 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.4±0.03ms    13.3 MB/sec    1.00      9.4±0.04ms    13.4 MB/sec
float_with_nans/bloom_filter                       1.00     93.7±0.33ms   149.5 MB/sec    1.00     93.3±1.52ms   150.1 MB/sec
float_with_nans/cdc                                1.00     81.6±0.15ms   171.5 MB/sec    1.00     81.4±0.18ms   172.1 MB/sec
float_with_nans/default                            1.00     74.4±0.20ms   188.3 MB/sec    1.00     74.6±1.46ms   187.8 MB/sec
float_with_nans/parquet_2                          1.01     95.2±0.27ms   147.1 MB/sec    1.00     94.4±1.47ms   148.3 MB/sec
float_with_nans/zstd                               1.00    111.9±0.16ms   125.1 MB/sec    1.01    112.5±1.39ms   124.4 MB/sec
float_with_nans/zstd_parquet_2                     1.00    132.1±0.26ms   106.0 MB/sec    1.00    132.5±1.40ms   105.6 MB/sec
large_string_non_null/bloom_filter                 1.00     72.6±0.32ms     3.4 GB/sec    1.00     72.4±0.12ms     3.5 GB/sec
large_string_non_null/cdc                          1.00    239.6±1.15ms  1068.4 MB/sec    1.02    243.5±1.02ms  1051.3 MB/sec
large_string_non_null/default                      1.00     53.7±0.15ms     4.7 GB/sec    1.02     54.7±0.09ms     4.6 GB/sec
large_string_non_null/parquet_2                    1.00     53.8±0.22ms     4.6 GB/sec    1.02     54.6±0.10ms     4.6 GB/sec
large_string_non_null/zstd                         1.00     53.8±0.25ms     4.6 GB/sec    1.02     54.6±0.09ms     4.6 GB/sec
large_string_non_null/zstd_parquet_2               1.00     53.8±0.24ms     4.6 GB/sec    1.02     54.7±0.09ms     4.6 GB/sec
list_primitive/bloom_filter                        1.07    359.1±1.37ms  1518.6 MB/sec    1.00    335.4±0.63ms  1626.2 MB/sec
list_primitive/cdc                                 1.01    373.6±9.97ms  1459.8 MB/sec    1.00    369.6±1.24ms  1475.6 MB/sec
list_primitive/default                             1.08    277.2±2.22ms  1967.5 MB/sec    1.00    257.4±0.86ms     2.1 GB/sec
list_primitive/parquet_2                           1.07    297.0±0.51ms  1836.4 MB/sec    1.00    278.1±0.43ms  1960.9 MB/sec
list_primitive/zstd                                1.02    516.6±3.09ms  1055.6 MB/sec    1.00    508.4±1.47ms  1072.7 MB/sec
list_primitive/zstd_parquet_2                      1.00    500.4±0.57ms  1089.9 MB/sec    1.00    502.3±0.46ms  1085.7 MB/sec
list_primitive_non_null/bloom_filter               1.10   442.0±10.18ms  1231.2 MB/sec    1.00    401.0±4.05ms  1357.1 MB/sec
list_primitive_non_null/cdc                        1.00   436.6±10.37ms  1246.4 MB/sec    1.00    438.6±7.97ms  1240.8 MB/sec
list_primitive_non_null/default                    1.16   313.2±14.64ms  1737.7 MB/sec    1.00    269.7±3.42ms  2018.1 MB/sec
list_primitive_non_null/parquet_2                  1.22    362.0±0.78ms  1503.3 MB/sec    1.00    297.5±1.21ms  1829.4 MB/sec
list_primitive_non_null/zstd                       1.03   700.2±14.61ms   777.3 MB/sec    1.00    682.6±4.45ms   797.4 MB/sec
list_primitive_non_null/zstd_parquet_2             1.07   712.7±18.64ms   763.7 MB/sec    1.00    668.7±0.32ms   813.9 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     10.9±0.02ms     3.4 GB/sec    1.11     12.0±0.02ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.4±0.08ms  1667.6 MB/sec    1.06     23.7±0.05ms  1579.5 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.6±0.03ms     3.4 GB/sec    1.11     11.7±0.02ms     3.1 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     10.6±0.02ms     3.4 GB/sec    1.11     11.7±0.02ms     3.1 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.4±0.02ms     2.9 GB/sec    1.09     13.5±0.03ms     2.7 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     10.7±0.02ms     3.4 GB/sec    1.11     11.8±0.02ms     3.1 GB/sec
primitive/bloom_filter                             1.00    150.2±0.44ms   298.8 MB/sec    1.00    150.0±0.46ms   299.2 MB/sec
primitive/cdc                                      1.00    159.0±0.46ms   282.3 MB/sec    1.00    158.9±0.69ms   282.4 MB/sec
primitive/default                                  1.02    119.2±0.40ms   376.6 MB/sec    1.00    117.3±0.34ms   382.7 MB/sec
primitive/parquet_2                                1.01    133.6±0.33ms   335.8 MB/sec    1.00    132.1±0.20ms   339.8 MB/sec
primitive/zstd                                     1.01    148.1±0.34ms   303.0 MB/sec    1.00    146.8±0.23ms   305.7 MB/sec
primitive/zstd_parquet_2                           1.01    166.9±0.32ms   268.9 MB/sec    1.00    165.6±0.36ms   271.0 MB/sec
primitive_all_null/bloom_filter                    1.02    904.0±2.20µs    48.5 GB/sec    1.00    884.7±1.50µs    49.5 GB/sec
primitive_all_null/cdc                             1.02     19.2±0.29ms     2.3 GB/sec    1.00     18.8±0.32ms     2.3 GB/sec
primitive_all_null/default                         1.00    275.2±1.49µs   159.3 GB/sec    1.01    277.6±0.93µs   157.9 GB/sec
primitive_all_null/parquet_2                       1.01    279.7±1.82µs   156.7 GB/sec    1.00    278.2±1.34µs   157.5 GB/sec
primitive_all_null/zstd                            1.00    390.0±1.55µs   112.4 GB/sec    1.00    391.3±0.87µs   112.0 GB/sec
primitive_all_null/zstd_parquet_2                  1.00    355.1±1.98µs   123.4 GB/sec    1.00    356.4±1.40µs   123.0 GB/sec
primitive_non_null/bloom_filter                    1.00    106.6±0.34ms   412.7 MB/sec    1.02    108.6±0.34ms   405.2 MB/sec
primitive_non_null/cdc                             1.00     90.1±0.28ms   488.1 MB/sec    1.00     89.9±0.51ms   489.2 MB/sec
primitive_non_null/default                         1.00     67.2±0.18ms   654.9 MB/sec    1.01     67.7±0.24ms   649.9 MB/sec
primitive_non_null/parquet_2                       1.00     88.9±0.16ms   494.7 MB/sec    1.00     89.3±0.19ms   492.8 MB/sec
primitive_non_null/zstd                            1.00     97.9±0.17ms   449.4 MB/sec    1.00     98.3±0.19ms   447.7 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    122.7±0.20ms   358.5 MB/sec    1.00    123.0±0.25ms   357.8 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     11.9±0.08ms     3.7 GB/sec    1.00     11.9±0.06ms     3.7 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     29.1±0.25ms  1540.8 MB/sec    1.05     30.7±0.32ms  1463.7 MB/sec
primitive_sparse_99pct_null/default                1.00     10.5±0.05ms     4.2 GB/sec    1.00     10.6±0.03ms     4.1 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     10.6±0.06ms     4.1 GB/sec    1.00     10.6±0.03ms     4.1 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     13.8±0.09ms     3.2 GB/sec    1.00     13.9±0.03ms     3.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.5±0.04ms     3.5 GB/sec    1.00     12.5±0.04ms     3.5 GB/sec
short_string_non_null/bloom_filter                 1.04     27.5±0.06ms   436.0 MB/sec    1.00     26.5±0.08ms   452.2 MB/sec
short_string_non_null/cdc                          1.00     19.7±0.05ms   608.5 MB/sec    1.00     19.7±0.05ms   608.1 MB/sec
short_string_non_null/default                      1.00     15.6±0.04ms   769.5 MB/sec    1.00     15.6±0.06ms   768.5 MB/sec
short_string_non_null/parquet_2                    1.00     25.5±0.04ms   471.1 MB/sec    1.00     25.4±0.08ms   473.0 MB/sec
short_string_non_null/zstd                         1.00     35.2±0.09ms   340.7 MB/sec    1.00     35.3±0.09ms   340.1 MB/sec
short_string_non_null/zstd_parquet_2               1.00     28.3±0.05ms   424.0 MB/sec    1.00     28.2±0.11ms   425.6 MB/sec
string/bloom_filter                                1.08   223.3±24.83ms     2.3 GB/sec    1.00   207.1±12.87ms     2.5 GB/sec
string/cdc                                         1.00    213.8±7.06ms     2.4 GB/sec    1.02    217.6±9.34ms     2.4 GB/sec
string/default                                     1.03   127.1±22.07ms     4.0 GB/sec    1.00   123.9±14.79ms     4.1 GB/sec
string/parquet_2                                   1.00    108.6±5.26ms     4.7 GB/sec    1.64    178.2±0.47ms     2.9 GB/sec
string/zstd                                        1.00    415.7±1.51ms  1261.2 MB/sec    1.07   443.0±19.57ms  1183.3 MB/sec
string/zstd_parquet_2                              1.01   408.3±11.13ms  1283.9 MB/sec    1.00   403.9±15.35ms  1298.1 MB/sec
string_and_binary_view/bloom_filter                1.01     64.0±0.38ms   504.2 MB/sec    1.00     63.1±0.24ms   511.4 MB/sec
string_and_binary_view/cdc                         1.00     58.7±0.24ms   549.8 MB/sec    1.00     58.9±0.14ms   547.9 MB/sec
string_and_binary_view/default                     1.01     48.2±0.18ms   668.6 MB/sec    1.00     48.0±0.09ms   672.5 MB/sec
string_and_binary_view/parquet_2                   1.00     59.4±0.18ms   542.6 MB/sec    1.00     59.2±0.15ms   545.2 MB/sec
string_and_binary_view/zstd                        1.00     84.8±0.30ms   380.3 MB/sec    1.00     84.6±0.12ms   381.3 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.1±0.21ms   441.4 MB/sec    1.00     73.1±0.11ms   441.4 MB/sec
string_dictionary/bloom_filter                     1.00     90.1±0.70ms     2.9 GB/sec    1.01     91.1±0.25ms     2.8 GB/sec
string_dictionary/cdc                              1.00     53.2±0.53ms     4.8 GB/sec    1.02     54.2±0.64ms     4.8 GB/sec
string_dictionary/default                          1.00     48.9±0.43ms     5.3 GB/sec    1.01     49.6±0.19ms     5.2 GB/sec
string_dictionary/parquet_2                        1.01     54.1±0.16ms     4.8 GB/sec    1.00     53.8±0.43ms     4.8 GB/sec
string_dictionary/zstd                             1.00    208.6±0.43ms  1266.1 MB/sec    1.00    209.3±0.47ms  1262.1 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.3±0.17ms  1331.8 MB/sec    1.00    198.8±0.31ms  1328.7 MB/sec
string_non_null/bloom_filter                       1.01   250.6±15.35ms     2.0 GB/sec    1.00   249.2±16.81ms     2.1 GB/sec
string_non_null/cdc                                1.05   276.5±13.74ms  1895.4 MB/sec    1.00    263.4±2.58ms  1989.7 MB/sec
string_non_null/default                            1.00   135.8±14.39ms     3.8 GB/sec    1.01   137.5±15.18ms     3.7 GB/sec
string_non_null/parquet_2                          1.13    138.1±5.83ms     3.7 GB/sec    1.00    122.1±0.56ms     4.2 GB/sec
string_non_null/zstd                               1.07   565.7±13.46ms   926.2 MB/sec    1.00    530.0±1.61ms   988.7 MB/sec
string_non_null/zstd_parquet_2                     1.00    505.4±4.51ms  1036.8 MB/sec    1.00    503.2±0.64ms  1041.3 MB/sec
struct_all_null/bloom_filter                       1.01    377.0±1.72µs    41.8 GB/sec    1.00    374.1±0.98µs    42.1 GB/sec
struct_all_null/cdc                                1.02      7.8±0.08ms     2.0 GB/sec    1.00      7.6±0.07ms     2.1 GB/sec
struct_all_null/default                            1.00    119.5±0.65µs   131.8 GB/sec    1.01    120.6±0.45µs   130.5 GB/sec
struct_all_null/parquet_2                          1.00    120.4±0.68µs   130.8 GB/sec    1.00    120.5±0.61µs   130.7 GB/sec
struct_all_null/zstd                               1.00    168.1±0.82µs    93.7 GB/sec    1.00    167.5±0.43µs    94.0 GB/sec
struct_all_null/zstd_parquet_2                     1.00    153.4±0.85µs   102.7 GB/sec    1.00    152.9±0.68µs   103.0 GB/sec
struct_non_null/bloom_filter                       1.02     46.9±0.15ms   341.0 MB/sec    1.00     46.1±0.15ms   347.0 MB/sec
struct_non_null/cdc                                1.01     45.8±0.22ms   349.7 MB/sec    1.00     45.1±0.17ms   354.9 MB/sec
struct_non_null/default                            1.02     32.2±0.11ms   497.4 MB/sec    1.00     31.6±0.11ms   505.7 MB/sec
struct_non_null/parquet_2                          1.02     41.0±0.16ms   390.2 MB/sec    1.00     40.3±0.10ms   397.2 MB/sec
struct_non_null/zstd                               1.01     40.8±0.13ms   392.1 MB/sec    1.00     40.4±0.11ms   396.2 MB/sec
struct_non_null/zstd_parquet_2                     1.01     54.9±0.15ms   291.3 MB/sec    1.00     54.2±0.12ms   295.3 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      6.4±0.03ms     2.5 GB/sec    1.00      6.4±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/cdc                       1.00     13.4±0.20ms  1207.5 MB/sec    1.07     14.3±0.09ms  1127.3 MB/sec
struct_sparse_99pct_null/default                   1.00      5.9±0.01ms     2.7 GB/sec    1.00      5.9±0.01ms     2.7 GB/sec
struct_sparse_99pct_null/parquet_2                 1.00      5.9±0.02ms     2.7 GB/sec    1.00      5.9±0.01ms     2.7 GB/sec
struct_sparse_99pct_null/zstd                      1.00      7.2±0.01ms     2.2 GB/sec    1.00      7.2±0.02ms     2.2 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      6.6±0.01ms     2.4 GB/sec    1.01      6.7±0.01ms     2.4 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2085.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2009.1s
CPU sys 74.7s
Peak spill 0 B

branch

Metric Value
Wall time 2045.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2005.3s
CPU sys 39.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.02     13.2±0.05ms    18.9 MB/sec    1.00     12.9±0.04ms    19.4 MB/sec
bool/cdc                                           1.02     16.0±0.06ms    15.7 MB/sec    1.00     15.6±0.05ms    16.0 MB/sec
bool/default                                       1.03     11.1±0.04ms    22.5 MB/sec    1.00     10.8±0.04ms    23.1 MB/sec
bool/parquet_2                                     1.01     14.8±0.05ms    16.9 MB/sec    1.00     14.6±0.05ms    17.1 MB/sec
bool/zstd                                          1.02     11.6±0.05ms    21.6 MB/sec    1.00     11.3±0.03ms    22.1 MB/sec
bool/zstd_parquet_2                                1.02     15.2±0.04ms    16.4 MB/sec    1.00     15.0±0.04ms    16.7 MB/sec
bool_non_null/bloom_filter                         1.02      7.1±0.02ms    17.7 MB/sec    1.00      6.9±0.03ms    18.1 MB/sec
bool_non_null/cdc                                  1.02      6.9±0.03ms    18.2 MB/sec    1.00      6.7±0.04ms    18.7 MB/sec
bool_non_null/default                              1.04      4.3±0.02ms    29.1 MB/sec    1.00      4.2±0.02ms    30.1 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.9 MB/sec    1.00      8.9±0.03ms    14.0 MB/sec
bool_non_null/zstd                                 1.04      4.7±0.02ms    26.8 MB/sec    1.00      4.5±0.02ms    27.8 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.4±0.05ms    13.3 MB/sec    1.00      9.4±0.04ms    13.4 MB/sec
float_with_nans/bloom_filter                       1.00     93.0±0.37ms   150.5 MB/sec    1.00     92.7±0.34ms   151.1 MB/sec
float_with_nans/cdc                                1.00     82.1±0.24ms   170.6 MB/sec    1.00     81.8±0.31ms   171.2 MB/sec
float_with_nans/default                            1.01     74.9±0.42ms   186.8 MB/sec    1.00     74.2±0.24ms   188.6 MB/sec
float_with_nans/parquet_2                          1.01     95.4±0.35ms   146.7 MB/sec    1.00     94.5±0.32ms   148.2 MB/sec
float_with_nans/zstd                               1.00    112.6±0.31ms   124.4 MB/sec    1.00    112.4±0.27ms   124.6 MB/sec
float_with_nans/zstd_parquet_2                     1.01    132.9±0.62ms   105.3 MB/sec    1.00    132.0±0.42ms   106.1 MB/sec
large_string_non_null/bloom_filter                 1.11     81.0±0.72ms     3.1 GB/sec    1.00     73.2±0.17ms     3.4 GB/sec
large_string_non_null/cdc                          1.00    242.3±1.24ms  1056.6 MB/sec    1.01    245.2±1.42ms  1043.9 MB/sec
large_string_non_null/default                      1.11     61.0±0.34ms     4.1 GB/sec    1.00     54.9±0.11ms     4.5 GB/sec
large_string_non_null/parquet_2                    1.11     61.1±0.63ms     4.1 GB/sec    1.00     55.0±0.15ms     4.5 GB/sec
large_string_non_null/zstd                         1.11     61.6±0.69ms     4.1 GB/sec    1.00     55.5±0.23ms     4.5 GB/sec
large_string_non_null/zstd_parquet_2               1.11     61.4±0.31ms     4.1 GB/sec    1.00     55.3±0.19ms     4.5 GB/sec
list_primitive/bloom_filter                        1.08    360.5±3.58ms  1512.6 MB/sec    1.00    334.0±1.57ms  1633.0 MB/sec
list_primitive/cdc                                 1.02    374.8±9.83ms  1455.1 MB/sec    1.00    368.7±1.00ms  1479.3 MB/sec
list_primitive/default                             1.07    276.9±2.68ms  1969.4 MB/sec    1.00    258.2±1.83ms     2.1 GB/sec
list_primitive/parquet_2                           1.06    297.1±0.68ms  1835.5 MB/sec    1.00    279.1±0.72ms  1954.1 MB/sec
list_primitive/zstd                                1.02    518.6±3.92ms  1051.5 MB/sec    1.00    509.2±1.45ms  1071.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    499.8±0.53ms  1091.3 MB/sec    1.00    502.2±1.83ms  1086.0 MB/sec
list_primitive_non_null/bloom_filter               1.08   446.2±10.53ms  1219.7 MB/sec    1.00    412.6±5.52ms  1319.1 MB/sec
list_primitive_non_null/cdc                        1.00   438.7±10.52ms  1240.4 MB/sec    1.00    437.7±6.91ms  1243.4 MB/sec
list_primitive_non_null/default                    1.11   310.9±14.48ms  1750.8 MB/sec    1.00    279.9±4.21ms  1944.1 MB/sec
list_primitive_non_null/parquet_2                  1.19    362.3±1.20ms  1502.3 MB/sec    1.00    304.0±7.29ms  1790.5 MB/sec
list_primitive_non_null/zstd                       1.01   704.5±15.53ms   772.5 MB/sec    1.00    699.4±6.37ms   778.2 MB/sec
list_primitive_non_null/zstd_parquet_2             1.07   715.7±18.62ms   760.5 MB/sec    1.00    670.7±1.24ms   811.4 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     11.4±0.06ms     3.2 GB/sec    1.08     12.3±0.11ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     22.8±0.08ms  1635.9 MB/sec    1.06     24.1±0.10ms  1549.3 MB/sec
list_primitive_sparse_99pct_null/default           1.00     10.7±0.09ms     3.4 GB/sec    1.11     11.9±0.08ms     3.1 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     10.7±0.07ms     3.4 GB/sec    1.11     12.0±0.06ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     12.8±0.04ms     2.9 GB/sec    1.08     13.8±0.06ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     10.9±0.07ms     3.3 GB/sec    1.11     12.1±0.08ms     3.0 GB/sec
primitive/bloom_filter                             1.01    151.8±1.29ms   295.6 MB/sec    1.00    150.2±0.86ms   298.7 MB/sec
primitive/cdc                                      1.00    160.5±0.91ms   279.7 MB/sec    1.00    159.9±0.50ms   280.6 MB/sec
primitive/default                                  1.02    120.1±0.52ms   373.7 MB/sec    1.00    117.8±0.44ms   380.8 MB/sec
primitive/parquet_2                                1.01    134.0±0.33ms   335.0 MB/sec    1.00    132.6±0.28ms   338.4 MB/sec
primitive/zstd                                     1.00    148.6±0.42ms   302.0 MB/sec    1.00    147.9±0.85ms   303.3 MB/sec
primitive/zstd_parquet_2                           1.01    167.8±0.35ms   267.4 MB/sec    1.00    165.8±0.45ms   270.7 MB/sec
primitive_all_null/bloom_filter                    1.01    898.7±1.67µs    48.8 GB/sec    1.00    891.5±4.07µs    49.2 GB/sec
primitive_all_null/cdc                             1.01     19.1±0.33ms     2.3 GB/sec    1.00     18.8±0.30ms     2.3 GB/sec
primitive_all_null/default                         1.00    275.9±0.71µs   158.8 GB/sec    1.00    277.2±1.07µs   158.1 GB/sec
primitive_all_null/parquet_2                       1.01    283.3±0.97µs   154.7 GB/sec    1.00    279.8±1.46µs   156.6 GB/sec
primitive_all_null/zstd                            1.00    387.9±0.72µs   113.0 GB/sec    1.01    390.8±1.36µs   112.1 GB/sec
primitive_all_null/zstd_parquet_2                  1.00    355.8±1.05µs   123.2 GB/sec    1.00    355.3±1.33µs   123.3 GB/sec
primitive_non_null/bloom_filter                    1.00    108.6±0.35ms   405.3 MB/sec    1.01    109.1±0.33ms   403.2 MB/sec
primitive_non_null/cdc                             1.01     91.1±0.33ms   483.1 MB/sec    1.00     90.6±0.60ms   485.9 MB/sec
primitive_non_null/default                         1.00     68.1±0.39ms   646.2 MB/sec    1.00     67.9±0.25ms   648.4 MB/sec
primitive_non_null/parquet_2                       1.00     90.0±0.24ms   488.7 MB/sec    1.00     90.0±0.37ms   488.8 MB/sec
primitive_non_null/zstd                            1.00     98.7±0.33ms   445.8 MB/sec    1.00     98.9±0.21ms   445.1 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    123.5±0.34ms   356.1 MB/sec    1.00    123.4±0.19ms   356.6 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     12.3±0.19ms     3.6 GB/sec    1.03     12.6±0.12ms     3.5 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     29.9±0.37ms  1500.2 MB/sec    1.06     31.6±0.28ms  1421.4 MB/sec
primitive_sparse_99pct_null/default                1.01     10.9±0.06ms     4.0 GB/sec    1.00     10.8±0.09ms     4.1 GB/sec
primitive_sparse_99pct_null/parquet_2              1.02     10.9±0.07ms     4.0 GB/sec    1.00     10.7±0.12ms     4.1 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     14.0±0.09ms     3.1 GB/sec    1.02     14.4±0.07ms     3.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.7±0.07ms     3.4 GB/sec    1.00     12.7±0.14ms     3.4 GB/sec
short_string_non_null/bloom_filter                 1.01     27.5±0.05ms   436.3 MB/sec    1.00     27.2±0.07ms   440.6 MB/sec
short_string_non_null/cdc                          1.00     19.9±0.04ms   604.0 MB/sec    1.01     20.0±0.08ms   599.8 MB/sec
short_string_non_null/default                      1.00     15.8±0.05ms   761.8 MB/sec    1.01     15.9±0.05ms   754.7 MB/sec
short_string_non_null/parquet_2                    1.00     25.7±0.06ms   467.3 MB/sec    1.00     25.7±0.09ms   466.3 MB/sec
short_string_non_null/zstd                         1.00     35.3±0.10ms   339.7 MB/sec    1.00     35.5±0.08ms   338.2 MB/sec
short_string_non_null/zstd_parquet_2               1.00     28.4±0.05ms   422.0 MB/sec    1.00     28.5±0.06ms   420.6 MB/sec
string/bloom_filter                                1.06   227.9±24.90ms     2.2 GB/sec    1.00   215.1±16.67ms     2.4 GB/sec
string/cdc                                         1.00    217.1±6.57ms     2.4 GB/sec    1.03    223.2±9.25ms     2.3 GB/sec
string/default                                     1.07   127.6±21.20ms     4.0 GB/sec    1.00    119.1±8.06ms     4.3 GB/sec
string/parquet_2                                   1.00    110.4±5.27ms     4.6 GB/sec    1.70   187.3±10.52ms     2.7 GB/sec
string/zstd                                        1.00    420.3±2.27ms  1247.3 MB/sec    1.08   452.6±18.47ms  1158.3 MB/sec
string/zstd_parquet_2                              1.00   411.3±10.95ms  1274.8 MB/sec    1.01   417.3±18.43ms  1256.4 MB/sec
string_and_binary_view/bloom_filter                1.00     64.8±0.43ms   497.9 MB/sec    1.00     65.0±0.32ms   496.5 MB/sec
string_and_binary_view/cdc                         1.00     58.8±0.18ms   548.7 MB/sec    1.01     59.3±0.28ms   543.9 MB/sec
string_and_binary_view/default                     1.00     48.2±0.14ms   669.0 MB/sec    1.01     48.5±0.13ms   664.9 MB/sec
string_and_binary_view/parquet_2                   1.00     59.3±0.15ms   543.5 MB/sec    1.01     59.7±0.13ms   540.1 MB/sec
string_and_binary_view/zstd                        1.00     84.6±0.17ms   381.0 MB/sec    1.01     85.4±0.32ms   377.5 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.2±0.31ms   440.6 MB/sec    1.00     73.4±0.23ms   439.6 MB/sec
string_dictionary/bloom_filter                     1.02     93.0±1.80ms     2.8 GB/sec    1.00     91.0±0.42ms     2.8 GB/sec
string_dictionary/cdc                              1.00     54.5±0.71ms     4.7 GB/sec    1.01     55.0±1.08ms     4.7 GB/sec
string_dictionary/default                          1.02     50.5±0.63ms     5.1 GB/sec    1.00     49.7±1.22ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     54.4±0.37ms     4.7 GB/sec    1.01     55.0±0.30ms     4.7 GB/sec
string_dictionary/zstd                             1.00    211.7±1.31ms  1247.4 MB/sec    1.00    211.6±1.32ms  1248.0 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.7±0.37ms  1329.0 MB/sec    1.00    199.2±0.30ms  1325.9 MB/sec
string_non_null/bloom_filter                       1.06   251.1±15.74ms     2.0 GB/sec    1.00    236.8±2.33ms     2.2 GB/sec
string_non_null/cdc                                1.02   274.5±13.16ms  1908.9 MB/sec    1.00    270.4±6.30ms  1937.8 MB/sec
string_non_null/default                            1.00   136.3±13.66ms     3.8 GB/sec    1.01   138.0±14.21ms     3.7 GB/sec
string_non_null/parquet_2                          1.13    138.8±5.82ms     3.7 GB/sec    1.00    122.7±0.68ms     4.2 GB/sec
string_non_null/zstd                               1.06   570.1±13.70ms   919.2 MB/sec    1.00    538.4±1.90ms   973.2 MB/sec
string_non_null/zstd_parquet_2                     1.00    505.2±4.37ms  1037.3 MB/sec    1.00    504.5±0.62ms  1038.6 MB/sec
struct_all_null/bloom_filter                       1.00    377.8±1.04µs    41.7 GB/sec    1.00    376.9±1.37µs    41.8 GB/sec
struct_all_null/cdc                                1.03      7.9±0.10ms     2.0 GB/sec    1.00      7.7±0.08ms     2.1 GB/sec
struct_all_null/default                            1.00    118.3±0.36µs   133.1 GB/sec    1.02    121.0±0.46µs   130.1 GB/sec
struct_all_null/parquet_2                          1.00    120.8±0.37µs   130.4 GB/sec    1.00    120.9±0.51µs   130.3 GB/sec
struct_all_null/zstd                               1.00    166.9±0.51µs    94.4 GB/sec    1.00    166.4±0.51µs    94.6 GB/sec
struct_all_null/zstd_parquet_2                     1.00    153.1±0.45µs   102.9 GB/sec    1.00    153.8±0.76µs   102.4 GB/sec
struct_non_null/bloom_filter                       1.04     47.6±0.15ms   336.1 MB/sec    1.00     45.7±0.19ms   349.9 MB/sec
struct_non_null/cdc                                1.01     45.9±0.20ms   348.9 MB/sec    1.00     45.4±0.14ms   352.8 MB/sec
struct_non_null/default                            1.02     32.2±0.12ms   496.4 MB/sec    1.00     31.7±0.11ms   504.6 MB/sec
struct_non_null/parquet_2                          1.01     41.1±0.10ms   389.8 MB/sec    1.00     40.7±0.11ms   393.2 MB/sec
struct_non_null/zstd                               1.02     41.2±0.09ms   388.7 MB/sec    1.00     40.5±0.15ms   394.6 MB/sec
struct_non_null/zstd_parquet_2                     1.01     55.3±0.20ms   289.3 MB/sec    1.00     54.8±0.12ms   292.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.00      6.5±0.04ms     2.4 GB/sec    1.04      6.7±0.09ms     2.3 GB/sec
struct_sparse_99pct_null/cdc                       1.00     13.5±0.16ms  1191.7 MB/sec    1.07     14.5±0.14ms  1111.6 MB/sec
struct_sparse_99pct_null/default                   1.00      5.9±0.04ms     2.7 GB/sec    1.02      6.1±0.07ms     2.6 GB/sec
struct_sparse_99pct_null/parquet_2                 1.01      6.0±0.04ms     2.6 GB/sec    1.00      5.9±0.03ms     2.7 GB/sec
struct_sparse_99pct_null/zstd                      1.00      7.2±0.05ms     2.2 GB/sec    1.01      7.3±0.05ms     2.1 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.00      6.7±0.06ms     2.3 GB/sec    1.02      6.9±0.05ms     2.3 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2100.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2026.6s
CPU sys 72.8s
Peak spill 0 B

branch

Metric Value
Wall time 2055.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 2009.4s
CPU sys 44.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

adriangb commented Jun 3, 2026

@alamb the numbers look like they have a real regression now:

group                                              main                                   parquet-page-size-mid-batch
string/parquet_2                                   1.00    110.4±5.27ms     4.6 GB/sec    1.70   187.3±10.52ms     2.7 GB/sec

It wasn't the case in #9972 (comment) so I'll check if any of the changes since then may have caused it.

adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
Addresses the easy doc/comment items from alamb's review of apache#9972:

- byte_array.rs: trim the dictionary-arm comment to "values are already
  small and deduplicated"; demote max_view_value_len's prose to an inline
  comment; give count_within_budget_views / count_within_budget_offsets
  one-line "what it returns" doc summaries and explain that the
  + size_of::<u32>() is the 4-byte plain BYTE_ARRAY length prefix (not
  string content).
- encoder.rs: drop the parallel-English doc on plain_encoded_byte_size,
  moving the BYTE_ARRAY/FLBA/numeric rationale inline; fix the broken
  "dict_encoder.rs::push (line ~52)" reference to name KeyStorage::push.
- byte_budget_chunker.rs: move the module background onto ByteBudgetChunker;
  module doc now just links to it.
- column/writer/mod.rs: de-jargon the write_granular_chunk doc; reword the
  record-packing comment so it no longer reads like it describes a former
  implementation.
- drop the unresolvable "(see apache#9972 discussion)" references.

Comments only; no logic changes. fmt/clippy/rustdoc clean, tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
Follow-ups from alamb's review of apache#9972:

- write_batch_internal: add a comment marking pick_sub_batch_size as the key
  decision point (write whole mini-batch vs fall back to byte accounting).
- write_granular_chunk: drop the unreachable `sub_batch_size == 0` defensive
  branch. The chunker always sizes >= 1 level and the function is only entered
  when sub_batch_size < chunk_size, so `e > sub_start` always holds. Replaced
  with a debug_assert documenting the invariant.
- Extract a write_and_collect_pages test helper (+ CollectedPages) and rewrite
  the six page-size regression tests through it, so each only expresses its
  props, input, and assertions instead of repeating the
  TrackedWrite/SerializedPageWriter/reader boilerplate. ~130 fewer lines, no
  coverage change.

All column-writer + layout tests pass; fmt/clippy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
Addresses the easy doc/comment items from alamb's review of apache#9972:

- byte_array.rs: trim the dictionary-arm comment to "values are already
  small and deduplicated"; demote max_view_value_len's prose to an inline
  comment; give count_within_budget_views / count_within_budget_offsets
  one-line "what it returns" doc summaries and explain that the
  + size_of::<u32>() is the 4-byte plain BYTE_ARRAY length prefix (not
  string content).
- encoder.rs: drop the parallel-English doc on plain_encoded_byte_size,
  moving the BYTE_ARRAY/FLBA/numeric rationale inline; fix the broken
  "dict_encoder.rs::push (line ~52)" reference to name KeyStorage::push.
- byte_budget_chunker.rs: move the module background onto ByteBudgetChunker;
  module doc now just links to it.
- column/writer/mod.rs: de-jargon the write_granular_chunk doc; reword the
  record-packing comment so it no longer reads like it describes a former
  implementation.
- drop the unresolvable "(see apache#9972 discussion)" references.

Comments only; no logic changes. fmt/clippy/rustdoc clean, tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
Follow-ups from alamb's review of apache#9972:

- write_batch_internal: add a comment marking pick_sub_batch_size as the key
  decision point (write whole mini-batch vs fall back to byte accounting).
- write_granular_chunk: drop the unreachable `sub_batch_size == 0` defensive
  branch. The chunker always sizes >= 1 level and the function is only entered
  when sub_batch_size < chunk_size, so `e > sub_start` always holds. Replaced
  with a debug_assert documenting the invariant.
- Extract a write_and_collect_pages test helper (+ CollectedPages) and rewrite
  the six page-size regression tests through it, so each only expresses its
  props, input, and assertions instead of repeating the
  TrackedWrite/SerializedPageWriter/reader boilerplate. ~130 fewer lines, no
  coverage change.

All column-writer + layout tests pass; fmt/clippy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adriangb adriangb force-pushed the parquet-page-size-mid-batch branch from e79366b to 3e39ba1 Compare June 3, 2026 21:46
adriangb added a commit to pydantic/arrow-rs that referenced this pull request Jun 3, 2026
Addresses the last open review thread on apache#9972 (alamb, encoder.rs:329): the
contiguous and gather variants were near-identical copies of the fixed-width
O(1) shortcut and the variable-width cumulative scan. Extract the shared core
into a private `count_within_budget` helper over an `Iterator<Item =
Option<&T::T>>`; the contiguous path maps each value to `Some`, the gather
path maps each index through `values.get` (yielding `None`, counted but
zero-byte, for the defensive out-of-range case — preserving the original
`continue`-but-advance-`i` semantics exactly).

The helper is defined at the end of the module next to plain_encoded_byte_size
for the same code-placement reason documented there.

Benchmarked to confirm no regression from the documented placement sensitivity
(string / string_and_binary_view, cargo bench arrow_writer, vs pre-change
baseline): all cases within noise (string/default improved ~4%, the rest "no
change"/"within noise", max +0.9% on one view case that read "no change" on a
confirmation run). Correctness: column::writer tests (100) + arrow_writer_layout
(11) pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
adriangb and others added 3 commits June 3, 2026 17:09
- closes apache#10061

The column writer only checks the data/dictionary page byte limit *after*
each `write_batch_size` mini-batch, so a batch of large variable-width
values piles into a single oversized page before the check fires (we've
observed multi-GiB data pages and large dictionary-page overshoot at
default settings).

Make the mini-batch size byte-budget aware in the generic column writer:

- `ColumnValueEncoder::count_values_within_byte_budget{,_gather}` (default
  `None` = "no estimate, stay batched"), with a concrete impl on
  `ColumnValueEncoderImpl` driven by `plain_encoded_byte_size`. Fixed-width
  physical types answer in one division; only variable-width
  BYTE_ARRAY/FLBA walk values, stopping at the first that overruns.
- `LevelDataRef::value_count` converts a chunk's level span into a leaf
  value count (O(1) for flat columns, def-level scan when nullable/nested).
- `ByteBudgetChunker` picks the largest sub-batch that fits one page
  budget. The common case (small or fixed-width values) returns the whole
  chunk with no value inspection, so the hot path is unchanged. During
  dictionary encoding it sizes against the dictionary page's remaining
  budget instead, since the data page then holds only small RLE indices.
- `write_batch_internal` consults the chunker per chunk and, only when a
  chunk would overflow, routes through `write_granular_chunk`, which
  sub-batches so the post-write page check fires in time. Repeated/nested
  columns step on record (rep == 0) boundaries so a record never spans
  pages.

Includes the `ColumnWriterImpl`-level regression tests (data page, list,
nullable, FLBA, dictionary spill, dictionary page bound).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Implement `ColumnValueEncoder::count_values_within_byte_budget_gather`
for `ByteArrayEncoder`, the encoder real `ArrowWriter` users hit, so the
page-size bound from the previous commit also fires for arrow
string/binary columns (the generic path only covered `ColumnValueEncoderImpl`).

The impl stays off the hot path for small values via cheap O(1) upper
bounds before any per-value walk:

- Offset-backed arrays (`Utf8`/`LargeUtf8`/`Binary`/`LargeBinary`): the
  span `offsets[last+1] - offsets[first]` bounds the chunk payload in O(1);
  exact even for nullable columns (skipped positions add zero), so sparse
  `indices` skip the per-value walk too.
- View arrays (`Utf8View`/`BinaryView`): lengths live in the low 32 bits
  of each view word, so an O(1) `n * (max_value_len + 4)` bound skips the
  scan in the common case; otherwise scan lengths with no data-buffer deref.
- Dictionary input: treated as always-fitting — dict-encoded arrow input
  implies values small enough to dedup, the opposite of the blob case this
  targets, and a per-key walk measurably regressed the bench.

Includes the arrow-writer unit tests for granular-mode round-trip and the
all-null string column.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add declarative `LayoutTest` cases covering the arrow write path's page
layout under the new byte budget, replacing hand-rolled page-reading
loops with exact page counts/sizes:

- large `Utf8` strings and `Utf8View` strings (one page per value)
- large values inside a list column (record-by-record stepping)
- nullable large values (def-level value counting)
- dictionary spill then plain-encode transition
- FixedSizeBinary byte budget

Also updates the existing `test_string` dict-spill expectations: the
dictionary page is now bounded at its limit and spills one mini-batch
earlier instead of overshooting.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adriangb adriangb force-pushed the parquet-page-size-mid-batch branch from cacbd4b to c654237 Compare June 3, 2026 22:12
@adriangb
Copy link
Copy Markdown
Contributor Author

adriangb commented Jun 3, 2026

FYI I've rebased and rewritten the commit history to make it easier to review / for the history books once this merges.

@adriangb
Copy link
Copy Markdown
Contributor Author

adriangb commented Jun 3, 2026

run benchmark arrow_writer

1 similar comment
@adriangb
Copy link
Copy Markdown
Contributor Author

adriangb commented Jun 3, 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-c4617225924-427-p5zqz 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 parquet-page-size-mid-batch (c654237) to 2a1d40d (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-c4617225690-426-gqjhb 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 parquet-page-size-mid-batch (c654237) to 2a1d40d (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-highmem-16 (12 vCPU / 65 GiB)

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.01     13.1±0.03ms    19.1 MB/sec    1.00     13.0±0.04ms    19.3 MB/sec
bool/cdc                                           1.02     16.0±0.06ms    15.6 MB/sec    1.00     15.7±0.03ms    15.9 MB/sec
bool/default                                       1.01     11.0±0.03ms    22.8 MB/sec    1.00     10.8±0.04ms    23.1 MB/sec
bool/parquet_2                                     1.01     14.7±0.03ms    17.0 MB/sec    1.00     14.6±0.05ms    17.1 MB/sec
bool/zstd                                          1.02     11.5±0.02ms    21.7 MB/sec    1.00     11.3±0.04ms    22.1 MB/sec
bool/zstd_parquet_2                                1.01     15.1±0.02ms    16.5 MB/sec    1.00     15.0±0.04ms    16.7 MB/sec
bool_non_null/bloom_filter                         1.01      7.0±0.02ms    17.8 MB/sec    1.00      7.0±0.03ms    18.0 MB/sec
bool_non_null/cdc                                  1.02      6.8±0.03ms    18.4 MB/sec    1.00      6.7±0.05ms    18.7 MB/sec
bool_non_null/default                              1.03      4.3±0.02ms    29.0 MB/sec    1.00      4.2±0.03ms    29.9 MB/sec
bool_non_null/parquet_2                            1.01      9.0±0.03ms    13.8 MB/sec    1.00      8.9±0.04ms    14.0 MB/sec
bool_non_null/zstd                                 1.04      4.7±0.03ms    26.7 MB/sec    1.00      4.5±0.02ms    27.7 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.5±0.04ms    13.2 MB/sec    1.00      9.4±0.04ms    13.4 MB/sec
float_with_nans/bloom_filter                       1.00     92.0±0.20ms   152.1 MB/sec    1.00     91.7±0.28ms   152.7 MB/sec
float_with_nans/cdc                                1.01     81.1±0.16ms   172.6 MB/sec    1.00     80.6±0.19ms   173.7 MB/sec
float_with_nans/default                            1.00     73.8±0.14ms   189.7 MB/sec    1.00     73.5±0.17ms   190.4 MB/sec
float_with_nans/parquet_2                          1.00     93.8±0.19ms   149.2 MB/sec    1.00     93.5±0.31ms   149.7 MB/sec
float_with_nans/zstd                               1.00    111.4±0.13ms   125.7 MB/sec    1.00    111.5±0.37ms   125.6 MB/sec
float_with_nans/zstd_parquet_2                     1.00    130.6±0.20ms   107.2 MB/sec    1.00    130.5±0.20ms   107.3 MB/sec
large_string_non_null/bloom_filter                 1.00     72.2±0.16ms     3.5 GB/sec    1.02     73.4±0.29ms     3.4 GB/sec
large_string_non_null/cdc                          1.00    238.9±0.86ms  1071.6 MB/sec    1.03    245.2±0.90ms  1044.1 MB/sec
large_string_non_null/default                      1.00     52.4±0.13ms     4.8 GB/sec    1.06     55.4±0.08ms     4.5 GB/sec
large_string_non_null/parquet_2                    1.00     52.6±0.12ms     4.8 GB/sec    1.06     55.6±0.07ms     4.5 GB/sec
large_string_non_null/zstd                         1.00     52.6±0.13ms     4.8 GB/sec    1.06     55.7±0.07ms     4.5 GB/sec
large_string_non_null/zstd_parquet_2               1.00     53.1±0.11ms     4.7 GB/sec    1.05     55.7±0.08ms     4.5 GB/sec
list_primitive/bloom_filter                        1.09    311.6±3.15ms  1750.4 MB/sec    1.00    286.2±1.00ms  1905.6 MB/sec
list_primitive/cdc                                 1.03    330.8±9.41ms  1648.8 MB/sec    1.00    322.6±1.10ms  1690.7 MB/sec
list_primitive/default                             1.07    227.8±5.82ms     2.3 GB/sec    1.00    212.4±0.51ms     2.5 GB/sec
list_primitive/parquet_2                           1.08    252.2±0.47ms     2.1 GB/sec    1.00    234.1±0.25ms     2.3 GB/sec
list_primitive/zstd                                1.02    469.6±5.43ms  1161.4 MB/sec    1.00    461.9±0.77ms  1180.7 MB/sec
list_primitive/zstd_parquet_2                      1.00    455.7±0.21ms  1196.7 MB/sec    1.00    457.0±0.46ms  1193.3 MB/sec
list_primitive_non_null/bloom_filter               1.14   421.9±12.09ms  1290.0 MB/sec    1.00    369.3±3.90ms  1473.7 MB/sec
list_primitive_non_null/cdc                        1.01    413.5±9.70ms  1316.1 MB/sec    1.00    411.0±8.53ms  1324.3 MB/sec
list_primitive_non_null/default                    1.22   289.9±12.53ms  1877.0 MB/sec    1.00    238.6±3.98ms     2.2 GB/sec
list_primitive_non_null/parquet_2                  1.07    290.4±0.67ms  1874.0 MB/sec    1.00    271.2±0.29ms  2007.2 MB/sec
list_primitive_non_null/zstd                       1.04   683.4±29.71ms   796.3 MB/sec    1.00    655.3±4.12ms   830.6 MB/sec
list_primitive_non_null/zstd_parquet_2             1.09    702.4±2.38ms   774.8 MB/sec    1.00    642.8±0.58ms   846.7 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     12.1±0.11ms     3.0 GB/sec    1.02     12.3±0.02ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     23.7±0.04ms  1579.1 MB/sec    1.00     23.7±0.03ms  1575.2 MB/sec
list_primitive_sparse_99pct_null/default           1.00     11.8±0.19ms     3.1 GB/sec    1.02     12.0±0.02ms     3.0 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.8±0.02ms     3.1 GB/sec    1.02     12.0±0.01ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.6±0.02ms     2.7 GB/sec    1.01     13.8±0.02ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     11.9±0.02ms     3.1 GB/sec    1.02     12.1±0.02ms     3.0 GB/sec
primitive/bloom_filter                             1.02    151.2±0.58ms   296.7 MB/sec    1.00    147.8±0.36ms   303.6 MB/sec
primitive/cdc                                      1.00    158.5±0.59ms   283.1 MB/sec    1.00    158.3±0.43ms   283.4 MB/sec
primitive/default                                  1.01    117.8±0.30ms   380.9 MB/sec    1.00    116.8±0.16ms   384.0 MB/sec
primitive/parquet_2                                1.01    133.4±0.31ms   336.3 MB/sec    1.00    131.6±0.15ms   340.9 MB/sec
primitive/zstd                                     1.01    147.5±0.29ms   304.3 MB/sec    1.00    146.3±0.16ms   306.6 MB/sec
primitive/zstd_parquet_2                           1.01    166.3±0.26ms   269.9 MB/sec    1.00    165.1±0.19ms   271.9 MB/sec
primitive_all_null/bloom_filter                    1.00    892.2±1.18µs    49.1 GB/sec    1.00    888.3±1.63µs    49.3 GB/sec
primitive_all_null/cdc                             1.02     19.4±0.39ms     2.3 GB/sec    1.00     18.9±0.36ms     2.3 GB/sec
primitive_all_null/default                         1.00    272.5±0.71µs   160.8 GB/sec    1.02    277.8±1.42µs   157.8 GB/sec
primitive_all_null/parquet_2                       1.00    276.8±1.09µs   158.3 GB/sec    1.01    278.7±1.77µs   157.3 GB/sec
primitive_all_null/zstd                            1.00    385.2±0.94µs   113.8 GB/sec    1.01    390.9±1.46µs   112.1 GB/sec
primitive_all_null/zstd_parquet_2                  1.00    356.2±0.97µs   123.0 GB/sec    1.00    357.1±1.72µs   122.7 GB/sec
primitive_non_null/bloom_filter                    1.02    108.6±0.35ms   405.0 MB/sec    1.00    106.2±0.46ms   414.3 MB/sec
primitive_non_null/cdc                             1.01     90.2±0.40ms   487.8 MB/sec    1.00     89.1±0.52ms   493.7 MB/sec
primitive_non_null/default                         1.01     67.2±0.20ms   654.4 MB/sec    1.00     66.9±0.25ms   657.8 MB/sec
primitive_non_null/parquet_2                       1.01     88.8±0.26ms   495.4 MB/sec    1.00     88.3±0.15ms   498.1 MB/sec
primitive_non_null/zstd                            1.02     98.9±1.75ms   444.7 MB/sec    1.00     97.3±0.13ms   452.3 MB/sec
primitive_non_null/zstd_parquet_2                  1.01    122.8±0.20ms   358.4 MB/sec    1.00    121.8±0.12ms   361.1 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.01     11.8±0.04ms     3.7 GB/sec    1.00     11.7±0.04ms     3.7 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     29.3±0.24ms  1531.1 MB/sec    1.06     31.1±0.26ms  1442.2 MB/sec
primitive_sparse_99pct_null/default                1.00     10.5±0.02ms     4.2 GB/sec    1.00     10.5±0.02ms     4.2 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     10.5±0.02ms     4.2 GB/sec    1.00     10.5±0.02ms     4.2 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     13.8±0.03ms     3.2 GB/sec    1.00     13.8±0.03ms     3.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.01     12.4±0.03ms     3.5 GB/sec    1.00     12.4±0.02ms     3.5 GB/sec
short_string_non_null/bloom_filter                 1.04     27.9±0.06ms   429.9 MB/sec    1.00     27.0±0.08ms   445.0 MB/sec
short_string_non_null/cdc                          1.00     19.7±0.05ms   609.0 MB/sec    1.00     19.8±0.05ms   607.2 MB/sec
short_string_non_null/default                      1.00     15.6±0.04ms   769.8 MB/sec    1.00     15.7±0.05ms   766.0 MB/sec
short_string_non_null/parquet_2                    1.00     25.2±0.05ms   476.0 MB/sec    1.01     25.4±0.04ms   471.6 MB/sec
short_string_non_null/zstd                         1.00     35.2±0.10ms   340.9 MB/sec    1.01     35.4±0.09ms   339.2 MB/sec
short_string_non_null/zstd_parquet_2               1.00     28.1±0.06ms   427.6 MB/sec    1.01     28.3±0.04ms   424.7 MB/sec
string/bloom_filter                                1.09   226.4±25.77ms     2.3 GB/sec    1.00   208.0±13.89ms     2.5 GB/sec
string/cdc                                         1.00    214.1±7.36ms     2.4 GB/sec    1.03    220.1±9.71ms     2.3 GB/sec
string/default                                     1.02   128.5±22.87ms     4.0 GB/sec    1.00   125.4±15.92ms     4.1 GB/sec
string/parquet_2                                   1.00    107.7±5.59ms     4.8 GB/sec    1.66    178.9±1.20ms     2.9 GB/sec
string/zstd                                        1.00    415.8±1.42ms  1260.8 MB/sec    1.07   443.5±19.84ms  1182.0 MB/sec
string/zstd_parquet_2                              1.01   408.7±11.83ms  1282.7 MB/sec    1.00   405.4±15.70ms  1293.2 MB/sec
string_and_binary_view/bloom_filter                1.00     64.1±0.24ms   503.2 MB/sec    1.00     63.9±0.16ms   504.4 MB/sec
string_and_binary_view/cdc                         1.00     58.9±0.14ms   547.2 MB/sec    1.00     59.2±0.13ms   544.7 MB/sec
string_and_binary_view/default                     1.00     48.1±0.08ms   670.8 MB/sec    1.01     48.5±0.09ms   664.7 MB/sec
string_and_binary_view/parquet_2                   1.00     59.3±0.11ms   543.5 MB/sec    1.01     59.7±0.12ms   540.6 MB/sec
string_and_binary_view/zstd                        1.00     84.6±0.17ms   381.2 MB/sec    1.01     85.2±0.11ms   378.6 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     72.9±0.09ms   442.5 MB/sec    1.01     73.6±0.11ms   438.0 MB/sec
string_dictionary/bloom_filter                     1.00     92.4±0.66ms     2.8 GB/sec    1.01     93.0±0.12ms     2.8 GB/sec
string_dictionary/cdc                              1.00     52.9±0.49ms     4.9 GB/sec    1.03     54.7±0.57ms     4.7 GB/sec
string_dictionary/default                          1.00     49.7±0.42ms     5.2 GB/sec    1.00     49.8±0.07ms     5.2 GB/sec
string_dictionary/parquet_2                        1.01     54.5±0.17ms     4.7 GB/sec    1.00     54.0±0.22ms     4.8 GB/sec
string_dictionary/zstd                             1.00    207.9±0.51ms  1270.3 MB/sec    1.01    209.8±0.59ms  1259.2 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.1±0.19ms  1333.3 MB/sec    1.00    198.6±0.28ms  1330.1 MB/sec
string_non_null/bloom_filter                       1.00   250.1±16.34ms     2.0 GB/sec    1.03   258.8±16.89ms  2024.8 MB/sec
string_non_null/cdc                                1.04   274.6±14.48ms  1908.4 MB/sec    1.00    264.5±2.70ms  1980.9 MB/sec
string_non_null/default                            1.00   137.0±15.40ms     3.7 GB/sec    1.02   140.1±15.80ms     3.7 GB/sec
string_non_null/parquet_2                          1.12    138.8±6.16ms     3.7 GB/sec    1.00    123.7±0.76ms     4.1 GB/sec
string_non_null/zstd                               1.06   566.7±14.75ms   924.7 MB/sec    1.00    533.1±1.63ms   982.9 MB/sec
string_non_null/zstd_parquet_2                     1.00    503.2±4.89ms  1041.2 MB/sec    1.00    505.4±0.60ms  1036.7 MB/sec
struct_all_null/bloom_filter                       1.00    372.0±1.26µs    42.3 GB/sec    1.02    379.0±1.02µs    41.5 GB/sec
struct_all_null/cdc                                1.03      8.0±0.16ms  2026.7 MB/sec    1.00      7.7±0.14ms     2.0 GB/sec
struct_all_null/default                            1.00    118.7±0.30µs   132.7 GB/sec    1.02    120.8±0.69µs   130.3 GB/sec
struct_all_null/parquet_2                          1.00    120.3±0.36µs   130.9 GB/sec    1.00    120.5±1.09µs   130.7 GB/sec
struct_all_null/zstd                               1.00    165.3±0.71µs    95.2 GB/sec    1.02    168.7±0.69µs    93.3 GB/sec
struct_all_null/zstd_parquet_2                     1.00    153.1±0.66µs   102.9 GB/sec    1.00    153.5±1.00µs   102.6 GB/sec
struct_non_null/bloom_filter                       1.00     46.0±0.21ms   347.6 MB/sec    1.02     47.0±0.12ms   340.5 MB/sec
struct_non_null/cdc                                1.00     45.0±0.17ms   355.6 MB/sec    1.01     45.3±0.17ms   353.2 MB/sec
struct_non_null/default                            1.00     31.5±0.14ms   507.6 MB/sec    1.01     31.7±0.10ms   504.2 MB/sec
struct_non_null/parquet_2                          1.00     40.3±0.15ms   396.7 MB/sec    1.00     40.3±0.08ms   397.2 MB/sec
struct_non_null/zstd                               1.00     40.3±0.15ms   396.9 MB/sec    1.00     40.4±0.11ms   395.6 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.4±0.18ms   294.1 MB/sec    1.00     54.4±0.12ms   294.1 MB/sec
struct_sparse_99pct_null/bloom_filter              1.07      6.7±0.01ms     2.3 GB/sec    1.00      6.3±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/cdc                       1.00     13.7±0.08ms  1173.6 MB/sec    1.05     14.4±0.07ms  1118.2 MB/sec
struct_sparse_99pct_null/default                   1.07      6.2±0.01ms     2.5 GB/sec    1.00      5.8±0.01ms     2.7 GB/sec
struct_sparse_99pct_null/parquet_2                 1.07      6.2±0.01ms     2.5 GB/sec    1.00      5.8±0.02ms     2.7 GB/sec
struct_sparse_99pct_null/zstd                      1.05      7.6±0.01ms     2.1 GB/sec    1.00      7.2±0.03ms     2.2 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.06      7.0±0.01ms     2.2 GB/sec    1.00      6.6±0.02ms     2.4 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2030.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1952.9s
CPU sys 74.2s
Peak spill 0 B

branch

Metric Value
Wall time 2010.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1965.1s
CPU sys 40.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark completed (GKE) | trigger

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

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.01     13.2±0.03ms    19.0 MB/sec    1.00     13.0±0.05ms    19.3 MB/sec
bool/cdc                                           1.02     16.0±0.03ms    15.6 MB/sec    1.00     15.7±0.03ms    15.9 MB/sec
bool/default                                       1.01     11.0±0.02ms    22.8 MB/sec    1.00     10.9±0.05ms    23.0 MB/sec
bool/parquet_2                                     1.01     14.8±0.03ms    17.0 MB/sec    1.00     14.6±0.06ms    17.1 MB/sec
bool/zstd                                          1.01     11.5±0.02ms    21.8 MB/sec    1.00     11.4±0.05ms    22.0 MB/sec
bool/zstd_parquet_2                                1.01     15.1±0.03ms    16.5 MB/sec    1.00     15.0±0.06ms    16.6 MB/sec
bool_non_null/bloom_filter                         1.01      7.0±0.02ms    17.8 MB/sec    1.00      7.0±0.02ms    18.0 MB/sec
bool_non_null/cdc                                  1.02      6.8±0.02ms    18.4 MB/sec    1.00      6.7±0.05ms    18.7 MB/sec
bool_non_null/default                              1.03      4.3±0.02ms    29.2 MB/sec    1.00      4.2±0.03ms    30.0 MB/sec
bool_non_null/parquet_2                            1.01      9.0±0.03ms    13.9 MB/sec    1.00      8.9±0.03ms    14.0 MB/sec
bool_non_null/zstd                                 1.03      4.6±0.02ms    26.9 MB/sec    1.00      4.5±0.02ms    27.7 MB/sec
bool_non_null/zstd_parquet_2                       1.01      9.4±0.03ms    13.3 MB/sec    1.00      9.3±0.03ms    13.4 MB/sec
float_with_nans/bloom_filter                       1.00     93.5±0.30ms   149.8 MB/sec    1.00     93.0±0.30ms   150.5 MB/sec
float_with_nans/cdc                                1.00     81.7±0.16ms   171.4 MB/sec    1.00     81.4±0.17ms   172.0 MB/sec
float_with_nans/default                            1.01     74.3±0.14ms   188.5 MB/sec    1.00     73.8±0.19ms   189.6 MB/sec
float_with_nans/parquet_2                          1.01     94.9±0.22ms   147.5 MB/sec    1.00     94.2±0.21ms   148.7 MB/sec
float_with_nans/zstd                               1.00    111.9±0.14ms   125.1 MB/sec    1.00    111.6±0.19ms   125.4 MB/sec
float_with_nans/zstd_parquet_2                     1.00    131.9±0.19ms   106.1 MB/sec    1.00    131.3±0.20ms   106.6 MB/sec
large_string_non_null/bloom_filter                 1.14     84.5±0.16ms     3.0 GB/sec    1.00     73.9±0.12ms     3.4 GB/sec
large_string_non_null/cdc                          1.00    243.8±1.13ms  1049.9 MB/sec    1.01    246.2±1.16ms  1039.9 MB/sec
large_string_non_null/default                      1.16     64.8±0.15ms     3.9 GB/sec    1.00     56.1±0.09ms     4.5 GB/sec
large_string_non_null/parquet_2                    1.15     64.8±0.13ms     3.9 GB/sec    1.00     56.1±0.11ms     4.5 GB/sec
large_string_non_null/zstd                         1.15     64.8±0.17ms     3.9 GB/sec    1.00     56.1±0.08ms     4.5 GB/sec
large_string_non_null/zstd_parquet_2               1.16     64.9±0.17ms     3.9 GB/sec    1.00     56.1±0.09ms     4.5 GB/sec
list_primitive/bloom_filter                        1.08    313.8±1.57ms  1738.1 MB/sec    1.00    291.1±0.87ms  1873.3 MB/sec
list_primitive/cdc                                 1.01    330.9±9.40ms  1648.3 MB/sec    1.00    327.4±3.78ms  1665.9 MB/sec
list_primitive/default                             1.07    229.1±5.71ms     2.3 GB/sec    1.00    213.4±1.40ms     2.5 GB/sec
list_primitive/parquet_2                           1.07    252.1±0.31ms     2.1 GB/sec    1.00    234.8±0.33ms     2.3 GB/sec
list_primitive/zstd                                1.01    470.0±5.35ms  1160.4 MB/sec    1.00    463.8±1.26ms  1176.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    456.7±0.33ms  1194.1 MB/sec    1.00    458.7±1.24ms  1188.9 MB/sec
list_primitive_non_null/bloom_filter               1.00   417.7±11.94ms  1303.1 MB/sec    1.00    419.0±9.51ms  1299.0 MB/sec
list_primitive_non_null/cdc                        1.00    409.5±8.72ms  1329.1 MB/sec    1.01    414.3±9.14ms  1313.7 MB/sec
list_primitive_non_null/default                    1.02   287.2±12.31ms  1895.2 MB/sec    1.00    280.3±8.85ms  1941.4 MB/sec
list_primitive_non_null/parquet_2                  1.00    290.8±1.11ms  1871.6 MB/sec    1.10    320.7±0.52ms  1696.9 MB/sec
list_primitive_non_null/zstd                       1.00   682.3±29.45ms   797.7 MB/sec    1.03   700.3±15.45ms   777.2 MB/sec
list_primitive_non_null/zstd_parquet_2             1.03    702.4±1.97ms   774.8 MB/sec    1.00    683.8±1.75ms   796.0 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     12.1±0.03ms     3.0 GB/sec    1.02     12.4±0.03ms     3.0 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     23.9±0.06ms  1563.3 MB/sec    1.00     23.9±0.05ms  1565.9 MB/sec
list_primitive_sparse_99pct_null/default           1.00     11.8±0.02ms     3.1 GB/sec    1.02     12.0±0.02ms     3.0 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     11.8±0.03ms     3.1 GB/sec    1.02     12.1±0.02ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.6±0.02ms     2.7 GB/sec    1.02     13.9±0.03ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     12.0±0.03ms     3.1 GB/sec    1.02     12.2±0.02ms     3.0 GB/sec
primitive/bloom_filter                             1.01    150.5±0.43ms   298.1 MB/sec    1.00    149.7±0.76ms   299.7 MB/sec
primitive/cdc                                      1.00    158.3±0.54ms   283.4 MB/sec    1.00    159.0±0.41ms   282.3 MB/sec
primitive/default                                  1.00    117.8±0.29ms   381.1 MB/sec    1.00    117.5±0.19ms   381.9 MB/sec
primitive/parquet_2                                1.00    132.8±0.29ms   337.8 MB/sec    1.00    132.2±0.19ms   339.3 MB/sec
primitive/zstd                                     1.00    147.4±0.25ms   304.4 MB/sec    1.00    147.0±0.23ms   305.3 MB/sec
primitive/zstd_parquet_2                           1.00    166.3±0.25ms   269.9 MB/sec    1.00    165.6±0.19ms   271.0 MB/sec
primitive_all_null/bloom_filter                    1.00    905.2±1.41µs    48.4 GB/sec    1.00    902.9±2.06µs    48.5 GB/sec
primitive_all_null/cdc                             1.03     19.3±0.30ms     2.3 GB/sec    1.00     18.7±0.27ms     2.3 GB/sec
primitive_all_null/default                         1.00    272.8±0.64µs   160.6 GB/sec    1.01    276.9±0.53µs   158.3 GB/sec
primitive_all_null/parquet_2                       1.01    278.8±0.92µs   157.2 GB/sec    1.00    277.0±1.10µs   158.2 GB/sec
primitive_all_null/zstd                            1.00    386.6±0.93µs   113.4 GB/sec    1.01    391.7±0.68µs   111.9 GB/sec
primitive_all_null/zstd_parquet_2                  1.00    355.6±1.06µs   123.2 GB/sec    1.00    355.5±1.04µs   123.3 GB/sec
primitive_non_null/bloom_filter                    1.01    108.2±0.35ms   406.6 MB/sec    1.00    106.9±0.25ms   411.7 MB/sec
primitive_non_null/cdc                             1.01     90.3±0.38ms   487.4 MB/sec    1.00     89.6±0.58ms   490.9 MB/sec
primitive_non_null/default                         1.00     67.3±0.24ms   653.9 MB/sec    1.00     67.2±0.15ms   654.7 MB/sec
primitive_non_null/parquet_2                       1.00     89.0±0.24ms   494.4 MB/sec    1.00     88.6±0.14ms   496.6 MB/sec
primitive_non_null/zstd                            1.00     98.0±0.23ms   448.8 MB/sec    1.00     97.8±0.17ms   449.8 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    122.9±0.22ms   358.0 MB/sec    1.00    122.4±0.16ms   359.5 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     11.9±0.07ms     3.7 GB/sec    1.00     11.9±0.06ms     3.7 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     29.3±0.26ms  1529.3 MB/sec    1.07     31.3±0.27ms  1435.3 MB/sec
primitive_sparse_99pct_null/default                1.00     10.5±0.03ms     4.2 GB/sec    1.00     10.5±0.02ms     4.2 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     10.5±0.03ms     4.2 GB/sec    1.00     10.6±0.03ms     4.2 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     13.8±0.04ms     3.2 GB/sec    1.00     13.8±0.03ms     3.2 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.4±0.03ms     3.5 GB/sec    1.00     12.4±0.03ms     3.5 GB/sec
short_string_non_null/bloom_filter                 1.02     28.3±0.06ms   424.2 MB/sec    1.00     27.8±0.08ms   432.1 MB/sec
short_string_non_null/cdc                          1.00     19.9±0.05ms   604.5 MB/sec    1.01     20.0±0.08ms   600.7 MB/sec
short_string_non_null/default                      1.00     15.7±0.04ms   764.3 MB/sec    1.01     15.8±0.03ms   757.5 MB/sec
short_string_non_null/parquet_2                    1.00     25.5±0.04ms   471.0 MB/sec    1.00     25.5±0.05ms   471.5 MB/sec
short_string_non_null/zstd                         1.00     35.3±0.09ms   339.6 MB/sec    1.00     35.5±0.10ms   338.0 MB/sec
short_string_non_null/zstd_parquet_2               1.00     28.2±0.04ms   426.2 MB/sec    1.01     28.4±0.07ms   422.8 MB/sec
string/bloom_filter                                1.03   229.3±25.70ms     2.2 GB/sec    1.00   223.1±16.83ms     2.3 GB/sec
string/cdc                                         1.00    215.1±7.29ms     2.4 GB/sec    1.04    223.7±9.46ms     2.3 GB/sec
string/default                                     1.07   129.1±22.59ms     4.0 GB/sec    1.00    121.2±8.43ms     4.2 GB/sec
string/parquet_2                                   1.00    109.6±5.65ms     4.7 GB/sec    1.75    191.5±9.96ms     2.7 GB/sec
string/zstd                                        1.00    417.5±1.59ms  1255.7 MB/sec    1.09   453.9±19.50ms  1155.0 MB/sec
string/zstd_parquet_2                              1.00   410.0±11.69ms  1278.8 MB/sec    1.02   418.7±19.18ms  1252.1 MB/sec
string_and_binary_view/bloom_filter                1.00     64.8±0.34ms   497.8 MB/sec    1.01     65.6±0.21ms   491.9 MB/sec
string_and_binary_view/cdc                         1.00     59.1±0.13ms   545.6 MB/sec    1.01     60.0±0.16ms   537.6 MB/sec
string_and_binary_view/default                     1.00     48.5±0.09ms   664.6 MB/sec    1.02     49.5±0.20ms   651.7 MB/sec
string_and_binary_view/parquet_2                   1.00     59.7±0.10ms   540.3 MB/sec    1.01     60.3±0.12ms   534.8 MB/sec
string_and_binary_view/zstd                        1.00     85.1±0.16ms   379.1 MB/sec    1.01     85.9±0.12ms   375.5 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.3±0.12ms   439.8 MB/sec    1.01     74.3±0.15ms   433.8 MB/sec
string_dictionary/bloom_filter                     1.00     92.2±0.68ms     2.8 GB/sec    1.04     95.8±0.23ms     2.7 GB/sec
string_dictionary/cdc                              1.00     54.0±0.49ms     4.8 GB/sec    1.02     54.9±0.72ms     4.7 GB/sec
string_dictionary/default                          1.00     49.6±0.45ms     5.2 GB/sec    1.00     49.8±1.00ms     5.2 GB/sec
string_dictionary/parquet_2                        1.00     54.3±0.15ms     4.7 GB/sec    1.02     55.5±0.20ms     4.7 GB/sec
string_dictionary/zstd                             1.00    209.5±0.41ms  1260.5 MB/sec    1.01    211.1±0.84ms  1251.4 MB/sec
string_dictionary/zstd_parquet_2                   1.00    198.9±0.15ms  1327.7 MB/sec    1.01    200.1±0.23ms  1320.2 MB/sec
string_non_null/bloom_filter                       1.01   258.6±15.86ms  2026.0 MB/sec    1.00    255.3±5.29ms     2.0 GB/sec
string_non_null/cdc                                1.03   276.7±13.91ms  1894.1 MB/sec    1.00    268.4±3.05ms  1952.4 MB/sec
string_non_null/default                            1.00   138.0±14.64ms     3.7 GB/sec    1.04   143.4±11.05ms     3.6 GB/sec
string_non_null/parquet_2                          1.02    139.8±5.90ms     3.7 GB/sec    1.00    136.7±6.34ms     3.7 GB/sec
string_non_null/zstd                               1.06   569.6±13.91ms   919.9 MB/sec    1.00    535.2±1.10ms   979.1 MB/sec
string_non_null/zstd_parquet_2                     1.00    505.1±4.83ms  1037.3 MB/sec    1.00    505.5±1.37ms  1036.7 MB/sec
struct_all_null/bloom_filter                       1.00    377.4±1.56µs    41.7 GB/sec    1.01    379.8±1.46µs    41.5 GB/sec
struct_all_null/cdc                                1.03      7.9±0.09ms  2040.0 MB/sec    1.00      7.7±0.26ms     2.0 GB/sec
struct_all_null/default                            1.00    118.2±0.31µs   133.2 GB/sec    1.02    120.8±0.24µs   130.4 GB/sec
struct_all_null/parquet_2                          1.00    119.6±0.39µs   131.6 GB/sec    1.01    120.6±0.43µs   130.6 GB/sec
struct_all_null/zstd                               1.00    164.5±0.42µs    95.8 GB/sec    1.03    168.6±0.23µs    93.4 GB/sec
struct_all_null/zstd_parquet_2                     1.00    152.6±0.44µs   103.2 GB/sec    1.01    154.2±0.46µs   102.1 GB/sec
struct_non_null/bloom_filter                       1.00     46.4±0.16ms   344.8 MB/sec    1.00     46.6±0.15ms   343.6 MB/sec
struct_non_null/cdc                                1.00     45.3±0.17ms   353.1 MB/sec    1.01     45.6±0.24ms   351.0 MB/sec
struct_non_null/default                            1.00     31.8±0.16ms   502.4 MB/sec    1.00     31.9±0.09ms   501.4 MB/sec
struct_non_null/parquet_2                          1.00     40.6±0.15ms   394.4 MB/sec    1.00     40.7±0.11ms   392.8 MB/sec
struct_non_null/zstd                               1.00     40.6±0.15ms   394.2 MB/sec    1.00     40.6±0.08ms   393.9 MB/sec
struct_non_null/zstd_parquet_2                     1.00     54.6±0.17ms   293.2 MB/sec    1.01     54.9±0.23ms   291.6 MB/sec
struct_sparse_99pct_null/bloom_filter              1.06      6.8±0.02ms     2.3 GB/sec    1.00      6.4±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/cdc                       1.00     13.7±0.10ms  1173.1 MB/sec    1.05     14.5±0.08ms  1114.3 MB/sec
struct_sparse_99pct_null/default                   1.06      6.3±0.01ms     2.5 GB/sec    1.00      5.9±0.01ms     2.7 GB/sec
struct_sparse_99pct_null/parquet_2                 1.06      6.3±0.01ms     2.5 GB/sec    1.00      5.9±0.01ms     2.7 GB/sec
struct_sparse_99pct_null/zstd                      1.05      7.6±0.02ms     2.1 GB/sec    1.00      7.2±0.01ms     2.2 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.06      7.0±0.01ms     2.2 GB/sec    1.00      6.6±0.01ms     2.4 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2050.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1973.7s
CPU sys 72.7s
Peak spill 0 B

branch

Metric Value
Wall time 2035.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1965.7s
CPU sys 67.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb
Copy link
Copy Markdown
Contributor Author

adriangb commented Jun 4, 2026

run benchmark arrow_writer


baseline:
  ref: main
changed:
  ref: main

@adriangbot
Copy link
Copy Markdown

🤖 Arrow criterion benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4617903504-429-s75tq 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 main (2a1d40d) to main 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-highmem-16 (12 vCPU / 65 GiB)

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

group                                              main                                   parquet-page-size-mid-batch
-----                                              ----                                   ---------------------------
bool/bloom_filter                                  1.00     13.2±0.04ms    19.0 MB/sec    1.00     13.1±0.04ms    19.0 MB/sec
bool/cdc                                           1.00     16.1±0.04ms    15.5 MB/sec    1.00     16.1±0.04ms    15.5 MB/sec
bool/default                                       1.00     11.0±0.03ms    22.7 MB/sec    1.00     11.0±0.03ms    22.7 MB/sec
bool/parquet_2                                     1.00     14.8±0.04ms    16.9 MB/sec    1.00     14.8±0.04ms    16.8 MB/sec
bool/zstd                                          1.00     11.5±0.03ms    21.7 MB/sec    1.00     11.6±0.03ms    21.6 MB/sec
bool/zstd_parquet_2                                1.00     15.2±0.03ms    16.5 MB/sec    1.00     15.2±0.04ms    16.4 MB/sec
bool_non_null/bloom_filter                         1.00      7.1±0.03ms    17.7 MB/sec    1.00      7.0±0.02ms    17.8 MB/sec
bool_non_null/cdc                                  1.00      6.9±0.03ms    18.2 MB/sec    1.00      6.9±0.03ms    18.2 MB/sec
bool_non_null/default                              1.00      4.3±0.02ms    29.1 MB/sec    1.00      4.3±0.02ms    29.2 MB/sec
bool_non_null/parquet_2                            1.00      9.0±0.03ms    13.9 MB/sec    1.00      9.0±0.03ms    13.9 MB/sec
bool_non_null/zstd                                 1.00      4.6±0.02ms    26.9 MB/sec    1.00      4.6±0.02ms    27.0 MB/sec
bool_non_null/zstd_parquet_2                       1.00      9.4±0.04ms    13.2 MB/sec    1.00      9.4±0.03ms    13.3 MB/sec
float_with_nans/bloom_filter                       1.00     94.2±0.19ms   148.7 MB/sec    1.00     94.5±0.32ms   148.1 MB/sec
float_with_nans/cdc                                1.00     82.1±0.12ms   170.5 MB/sec    1.00     82.3±0.17ms   170.2 MB/sec
float_with_nans/default                            1.00     74.7±0.16ms   187.4 MB/sec    1.01     75.1±0.14ms   186.4 MB/sec
float_with_nans/parquet_2                          1.00     95.9±0.20ms   146.0 MB/sec    1.00     95.8±0.24ms   146.1 MB/sec
float_with_nans/zstd                               1.00    112.6±0.12ms   124.3 MB/sec    1.00    112.8±0.16ms   124.1 MB/sec
float_with_nans/zstd_parquet_2                     1.00    133.0±0.17ms   105.3 MB/sec    1.00    133.1±0.45ms   105.2 MB/sec
large_string_non_null/bloom_filter                 1.00     83.1±0.14ms     3.0 GB/sec    1.00     83.1±0.16ms     3.0 GB/sec
large_string_non_null/cdc                          1.00    243.4±0.87ms  1051.6 MB/sec    1.00    243.2±1.18ms  1052.6 MB/sec
large_string_non_null/default                      1.00     63.3±0.18ms     3.9 GB/sec    1.00     63.4±0.10ms     3.9 GB/sec
large_string_non_null/parquet_2                    1.00     63.6±0.10ms     3.9 GB/sec    1.00     63.5±0.13ms     3.9 GB/sec
large_string_non_null/zstd                         1.00     63.5±0.09ms     3.9 GB/sec    1.00     63.6±0.15ms     3.9 GB/sec
large_string_non_null/zstd_parquet_2               1.00     63.6±0.09ms     3.9 GB/sec    1.00     63.5±0.10ms     3.9 GB/sec
list_primitive/bloom_filter                        1.12    333.8±0.74ms  1634.0 MB/sec    1.00    296.8±1.71ms  1837.6 MB/sec
list_primitive/cdc                                 1.00    329.4±8.36ms  1655.5 MB/sec    1.02    334.9±7.43ms  1628.7 MB/sec
list_primitive/default                             1.15    248.5±1.20ms     2.1 GB/sec    1.00    216.1±0.38ms     2.5 GB/sec
list_primitive/parquet_2                           1.13    264.3±5.29ms     2.0 GB/sec    1.00    234.6±0.33ms     2.3 GB/sec
list_primitive/zstd                                1.03    480.1±5.02ms  1135.9 MB/sec    1.00    466.9±0.69ms  1168.0 MB/sec
list_primitive/zstd_parquet_2                      1.00    459.2±1.73ms  1187.6 MB/sec    1.00    457.8±0.31ms  1191.4 MB/sec
list_primitive_non_null/bloom_filter               1.00   424.3±11.72ms  1282.5 MB/sec    1.03   437.5±10.25ms  1243.9 MB/sec
list_primitive_non_null/cdc                        1.00    409.2±9.11ms  1330.1 MB/sec    1.01    414.8±6.94ms  1312.1 MB/sec
list_primitive_non_null/default                    1.00   281.0±13.90ms  1936.8 MB/sec    1.05    294.5±8.24ms  1848.2 MB/sec
list_primitive_non_null/parquet_2                  1.15    327.9±3.56ms  1659.6 MB/sec    1.00   284.5±23.22ms  1912.8 MB/sec
list_primitive_non_null/zstd                       1.00   684.4±18.04ms   795.2 MB/sec    1.03   704.0±19.77ms   773.1 MB/sec
list_primitive_non_null/zstd_parquet_2             1.02    688.5±5.46ms   790.5 MB/sec    1.00    675.4±7.70ms   805.9 MB/sec
list_primitive_sparse_99pct_null/bloom_filter      1.00     12.3±0.04ms     3.0 GB/sec    1.01     12.5±0.04ms     2.9 GB/sec
list_primitive_sparse_99pct_null/cdc               1.00     24.3±0.09ms  1539.6 MB/sec    1.00     24.2±0.05ms  1543.8 MB/sec
list_primitive_sparse_99pct_null/default           1.00     12.0±0.03ms     3.0 GB/sec    1.00     12.0±0.03ms     3.0 GB/sec
list_primitive_sparse_99pct_null/parquet_2         1.00     12.0±0.03ms     3.0 GB/sec    1.00     12.0±0.04ms     3.0 GB/sec
list_primitive_sparse_99pct_null/zstd              1.00     13.8±0.04ms     2.6 GB/sec    1.00     13.9±0.04ms     2.6 GB/sec
list_primitive_sparse_99pct_null/zstd_parquet_2    1.00     12.2±0.06ms     3.0 GB/sec    1.00     12.2±0.04ms     3.0 GB/sec
primitive/bloom_filter                             1.00    152.3±0.41ms   294.7 MB/sec    1.00    152.8±0.59ms   293.6 MB/sec
primitive/cdc                                      1.00    159.9±0.58ms   280.6 MB/sec    1.00    160.2±0.76ms   280.1 MB/sec
primitive/default                                  1.00    118.8±0.29ms   377.6 MB/sec    1.00    119.2±0.33ms   376.4 MB/sec
primitive/parquet_2                                1.00    133.9±0.27ms   335.1 MB/sec    1.00    134.2±0.30ms   334.5 MB/sec
primitive/zstd                                     1.00    149.1±0.48ms   301.0 MB/sec    1.00    148.9±0.32ms   301.3 MB/sec
primitive/zstd_parquet_2                           1.00    167.5±0.29ms   267.9 MB/sec    1.00    167.6±0.29ms   267.8 MB/sec
primitive_all_null/bloom_filter                    1.01    905.8±1.88µs    48.4 GB/sec    1.00    899.2±2.73µs    48.7 GB/sec
primitive_all_null/cdc                             1.00     19.4±0.32ms     2.3 GB/sec    1.00     19.4±0.41ms     2.3 GB/sec
primitive_all_null/default                         1.00    273.4±0.73µs   160.3 GB/sec    1.00    273.7±1.32µs   160.1 GB/sec
primitive_all_null/parquet_2                       1.00    279.2±0.77µs   156.9 GB/sec    1.00    278.2±1.14µs   157.5 GB/sec
primitive_all_null/zstd                            1.00    387.6±1.02µs   113.1 GB/sec    1.00    386.1±0.89µs   113.5 GB/sec
primitive_all_null/zstd_parquet_2                  1.00    357.1±1.07µs   122.7 GB/sec    1.00    356.9±0.92µs   122.8 GB/sec
primitive_non_null/bloom_filter                    1.00    109.3±0.38ms   402.5 MB/sec    1.00    109.4±0.34ms   402.1 MB/sec
primitive_non_null/cdc                             1.00     91.0±0.31ms   483.6 MB/sec    1.00     91.3±0.51ms   482.0 MB/sec
primitive_non_null/default                         1.00     68.0±0.22ms   647.0 MB/sec    1.01     68.9±0.55ms   638.4 MB/sec
primitive_non_null/parquet_2                       1.00     89.8±0.29ms   490.1 MB/sec    1.00     89.8±0.25ms   489.7 MB/sec
primitive_non_null/zstd                            1.00     98.9±0.23ms   444.7 MB/sec    1.00     99.1±0.36ms   443.8 MB/sec
primitive_non_null/zstd_parquet_2                  1.00    123.7±0.23ms   355.7 MB/sec    1.00    124.0±0.36ms   354.9 MB/sec
primitive_sparse_99pct_null/bloom_filter           1.00     12.6±0.09ms     3.5 GB/sec    1.00     12.6±0.06ms     3.5 GB/sec
primitive_sparse_99pct_null/cdc                    1.00     30.3±0.28ms  1481.0 MB/sec    1.00     30.3±0.32ms  1479.8 MB/sec
primitive_sparse_99pct_null/default                1.00     10.8±0.05ms     4.1 GB/sec    1.00     10.8±0.04ms     4.1 GB/sec
primitive_sparse_99pct_null/parquet_2              1.00     10.8±0.04ms     4.1 GB/sec    1.01     10.8±0.04ms     4.0 GB/sec
primitive_sparse_99pct_null/zstd                   1.00     14.2±0.04ms     3.1 GB/sec    1.00     14.2±0.04ms     3.1 GB/sec
primitive_sparse_99pct_null/zstd_parquet_2         1.00     12.8±0.04ms     3.4 GB/sec    1.00     12.8±0.04ms     3.4 GB/sec
short_string_non_null/bloom_filter                 1.04     28.3±0.04ms   424.1 MB/sec    1.00     27.3±0.06ms   439.2 MB/sec
short_string_non_null/cdc                          1.00     20.0±0.04ms   599.9 MB/sec    1.01     20.3±0.07ms   591.6 MB/sec
short_string_non_null/default                      1.00     15.8±0.06ms   759.4 MB/sec    1.01     15.9±0.03ms   753.3 MB/sec
short_string_non_null/parquet_2                    1.00     25.4±0.04ms   471.9 MB/sec    1.01     25.8±0.33ms   465.4 MB/sec
short_string_non_null/zstd                         1.00     35.4±0.10ms   339.0 MB/sec    1.00     35.5±0.10ms   338.1 MB/sec
short_string_non_null/zstd_parquet_2               1.00     28.3±0.08ms   424.1 MB/sec    1.00     28.4±0.04ms   422.6 MB/sec
string/bloom_filter                                1.05   229.1±24.25ms     2.2 GB/sec    1.00   218.8±14.40ms     2.3 GB/sec
string/cdc                                         1.00    216.2±6.98ms     2.4 GB/sec    1.03    221.6±9.09ms     2.3 GB/sec
string/default                                     1.03   127.1±20.37ms     4.0 GB/sec    1.00    122.9±7.71ms     4.2 GB/sec
string/parquet_2                                   1.00    108.9±5.58ms     4.7 GB/sec    1.18    128.8±1.40ms     4.0 GB/sec
string/zstd                                        1.00    420.4±1.93ms  1247.2 MB/sec    1.06   444.8±19.33ms  1178.7 MB/sec
string/zstd_parquet_2                              1.01   410.0±11.44ms  1278.6 MB/sec    1.00    404.2±5.41ms  1297.2 MB/sec
string_and_binary_view/bloom_filter                1.01     65.9±0.15ms   489.4 MB/sec    1.00     65.0±0.21ms   496.0 MB/sec
string_and_binary_view/cdc                         1.00     59.4±0.12ms   542.7 MB/sec    1.00     59.5±0.14ms   541.6 MB/sec
string_and_binary_view/default                     1.00     48.9±0.10ms   659.8 MB/sec    1.00     48.6±0.16ms   663.0 MB/sec
string_and_binary_view/parquet_2                   1.01     60.4±0.11ms   533.7 MB/sec    1.00     59.7±0.11ms   540.1 MB/sec
string_and_binary_view/zstd                        1.00     85.4±0.16ms   377.6 MB/sec    1.00     85.2±0.12ms   378.7 MB/sec
string_and_binary_view/zstd_parquet_2              1.00     73.7±0.15ms   437.7 MB/sec    1.00     73.6±0.13ms   438.0 MB/sec
string_dictionary/bloom_filter                     1.00     93.7±0.79ms     2.8 GB/sec    1.02     95.2±0.77ms     2.7 GB/sec
string_dictionary/cdc                              1.00     54.1±1.24ms     4.8 GB/sec    1.00     54.0±1.43ms     4.8 GB/sec
string_dictionary/default                          1.00     50.2±0.82ms     5.1 GB/sec    1.00     50.3±1.07ms     5.1 GB/sec
string_dictionary/parquet_2                        1.00     54.5±0.16ms     4.7 GB/sec    1.01     55.1±0.24ms     4.7 GB/sec
string_dictionary/zstd                             1.00    211.3±0.86ms  1249.9 MB/sec    1.00    211.3±1.51ms  1250.3 MB/sec
string_dictionary/zstd_parquet_2                   1.00    199.8±0.17ms  1322.2 MB/sec    1.00    200.1±0.60ms  1319.8 MB/sec
string_non_null/bloom_filter                       1.00   256.5±11.90ms  2043.0 MB/sec    1.03   265.4±15.03ms  1974.2 MB/sec
string_non_null/cdc                                1.00   275.1±12.84ms  1904.5 MB/sec    1.00    275.7±9.83ms  1900.7 MB/sec
string_non_null/default                            1.00   131.7±11.11ms     3.9 GB/sec    1.06   139.5±12.95ms     3.7 GB/sec
string_non_null/parquet_2                          1.21    149.4±0.36ms     3.4 GB/sec    1.00    123.0±0.44ms     4.2 GB/sec
string_non_null/zstd                               1.01   579.7±10.04ms   904.0 MB/sec    1.00    576.6±8.72ms   908.8 MB/sec
string_non_null/zstd_parquet_2                     1.00    507.4±4.43ms  1032.7 MB/sec    1.02    517.3±6.39ms  1013.0 MB/sec
struct_all_null/bloom_filter                       1.01    375.9±1.13µs    41.9 GB/sec    1.00    373.9±1.23µs    42.1 GB/sec
struct_all_null/cdc                                1.00      7.9±0.13ms  2033.2 MB/sec    1.00      7.9±0.14ms  2041.2 MB/sec
struct_all_null/default                            1.00    118.6±0.37µs   132.8 GB/sec    1.00    118.6±0.29µs   132.7 GB/sec
struct_all_null/parquet_2                          1.00    120.6±0.44µs   130.6 GB/sec    1.00    120.3±0.40µs   130.9 GB/sec
struct_all_null/zstd                               1.00    165.9±0.34µs    94.9 GB/sec    1.00    166.6±0.43µs    94.5 GB/sec
struct_all_null/zstd_parquet_2                     1.00    153.5±0.57µs   102.6 GB/sec    1.00    153.3±0.46µs   102.7 GB/sec
struct_non_null/bloom_filter                       1.02     46.8±0.13ms   342.0 MB/sec    1.00     45.7±0.13ms   349.9 MB/sec
struct_non_null/cdc                                1.01     46.0±0.20ms   347.9 MB/sec    1.00     45.5±0.17ms   351.7 MB/sec
struct_non_null/default                            1.01     32.1±0.14ms   498.4 MB/sec    1.00     31.9±0.14ms   501.1 MB/sec
struct_non_null/parquet_2                          1.01     40.9±0.15ms   391.2 MB/sec    1.00     40.5±0.13ms   395.0 MB/sec
struct_non_null/zstd                               1.00     40.9±0.16ms   391.5 MB/sec    1.00     40.7±0.14ms   393.3 MB/sec
struct_non_null/zstd_parquet_2                     1.01     54.9±0.17ms   291.3 MB/sec    1.00     54.5±0.14ms   293.6 MB/sec
struct_sparse_99pct_null/bloom_filter              1.01      6.9±0.02ms     2.3 GB/sec    1.00      6.8±0.02ms     2.3 GB/sec
struct_sparse_99pct_null/cdc                       1.00     14.0±0.08ms  1151.8 MB/sec    1.00     13.9±0.11ms  1156.3 MB/sec
struct_sparse_99pct_null/default                   1.01      6.4±0.03ms     2.5 GB/sec    1.00      6.3±0.01ms     2.5 GB/sec
struct_sparse_99pct_null/parquet_2                 1.01      6.4±0.02ms     2.5 GB/sec    1.00      6.3±0.02ms     2.5 GB/sec
struct_sparse_99pct_null/zstd                      1.01      7.7±0.02ms     2.0 GB/sec    1.00      7.7±0.02ms     2.0 GB/sec
struct_sparse_99pct_null/zstd_parquet_2            1.01      7.1±0.03ms     2.2 GB/sec    1.00      7.1±0.02ms     2.2 GB/sec

Resource Usage

base (merge-base)

Metric Value
Wall time 2060.5s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1976.2s
CPU sys 80.0s
Peak spill 0 B

branch

Metric Value
Wall time 2040.4s
Peak memory 6.8 GiB
Avg memory 6.6 GiB
CPU user 1978.3s
CPU sys 57.5s
Peak spill 0 B

File an issue against this benchmark runner

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.

Parquet writer can produce massively oversized data pages for large variable-width values

4 participants