Skip to content

perf(arrow-buffer): use unsigned high products for signed divisors - #11979

Draft
sdf-jkl wants to merge 19 commits into
apache:mainfrom
sdf-jkl:codex/signed-divisor-unsigned-mulhi
Draft

sdf-jkl wants to merge 19 commits into
apache:mainfrom
sdf-jkl:codex/signed-divisor-unsigned-mulhi

Conversation

@sdf-jkl

@sdf-jkl sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member

Draft benchmarking follow-up to #11467 and this discussion. This branch is stacked on its head, 46ab603e26b22d444203d660602605e53a2a8733. Until the parent is merged and this branch is rebased, the main-relative PR diff includes the parent changes; the incremental diff is just the signed-arithmetic rewrite.

Which issue does this PR close?

Relates to #11421; depends on #11467.

Rationale for this change

The signed high-product expression can generate expensive scalar or vector multiplication sequences. This draft tries an equivalent unsigned high product with explicit sign correction for both i32 and i64, and requests measurements against #11467's exact head before deciding whether the tradeoffs are worthwhile.

What changes are included in this PR?

For the always-negative multiplier m, replace n + signed_high(m * n) with unsigned_high(bits(m) * bits(n)) - ((n >> (BITS - 1)) & m), using wrapping subtraction. The signed macro gains matching unsigned narrow/wide types. Constructors, quotient rounding, remainder calculation, public APIs and the benchmark source are unchanged relative to #11467.

The correction follows libdivide's signed high-product implementation, specialized so its -n cancels the existing +n. This follows devanbenz and mbutrovich's codegen discussion; mightsleep's absolute-dividend approach is a related, different alternative.

Are these changes tested?

The existing 376 arrow-buffer unit tests pass. An external Hegel harness compared all four divisor types with Rust's integer operations, including negative divisors, boundary values, overflow behavior, const evaluation, and batches, with overflow checks on/off across five x86-64 target settings. No new test dependency or benchmark cases are added here. Scoped Clippy, formatting and spelling checks pass; the full workspace suite was not run locally.

All 48 unchanged divisor benchmark cases were run on an AMD Ryzen AI 9 HX PRO 470 with Rust 1.99.1 / LLVM 23.1.1 and thin LTO. Below are original/rewrite time ratios for divisors 7 and 13; above 1 is faster:

Target i32 division i32 remainder i64 division i64 remainder
x86-64 1.72–1.89 1.75–1.79 1.38–1.39 0.86–0.94
x86-64-v2 1.94–2.16 1.76–1.99 1.39–1.55 0.85–0.92
x86-64-v3 0.96–1.02 1.15–1.18 1.91–1.97 1.53–1.54
x86-64-v4 0.99–1.01 0.97 1.79–1.85 1.77–1.78
native 0.91–0.95 0.92–1.01 1.36–1.43 1.52–1.57

These are exploratory measurements: four interleaved processes per case, 0.25 s warmup / 0.75 s measurement, with some substantial repeat noise. Unchanged controls also regressed (for example AVX2 u32 % 7 by about 27%); those effects are unresolved. The draft is for independent bot measurements, not a claim of a universal improvement. Bot requests pin both commits and apply identical flags to both sides.

Are there any significant user-facing changes?

No additional public API or intended behavior changes relative to #11467.

AI assistance was used to develop and test this experiment.

mbutrovich and others added 19 commits October 8, 2026 15:27
…benchmark bot

Temporary. Adds experiment types and benchmark groups so the bot can compare
figure 4.1 and 5.1 with Up, Down and devanbenz's remainder in one run. The next
commit removes them.
…benchmark bot

Temporary. Adds experiment types and benchmark groups so the bot can compare
figure 4.1 and 5.1 with Up, Down and devanbenz's remainder in one run. The next
commit removes them.
@github-actions github-actions Bot added the arrow-core Core crates related to representing arrow data label Oct 28, 2026
@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=x86-64"
resources:
  arch: amd64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=x86-64-v2"
resources:
  arch: amd64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=x86-64-v3"
resources:
  arch: amd64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=x86-64-v4"
resources:
  arch: amd64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=native"
resources:
  arch: amd64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v2
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
  arch: arm64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
  arch: arm64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=native
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v4
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
  arch: arm64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00      2.1±0.00µs  3.6 GElem/sec      1.13      2.4±0.00µs  3.2 GElem/sec
divisor_i32/div 13/operator    1.00     30.0±0.03µs 260.1 MElem/sec     1.00     30.0±0.01µs 260.3 MElem/sec
divisor_i32/div 16/divisor     1.01   1330.6±0.56ns  5.7 GElem/sec      1.00   1321.0±3.07ns  5.8 GElem/sec
divisor_i32/div 16/operator    1.00     13.7±0.01µs 568.3 MElem/sec     1.00     13.8±0.03µs 567.5 MElem/sec
divisor_i32/div 7/divisor      1.00      2.1±0.00µs  3.6 GElem/sec      1.13      2.4±0.00µs  3.2 GElem/sec
divisor_i32/div 7/operator     1.00     31.5±0.03µs 247.9 MElem/sec     1.00     31.5±0.02µs 247.9 MElem/sec
divisor_i32/rem 13/divisor     1.00   1781.3±2.19ns  4.3 GElem/sec      1.17      2.1±0.00µs  3.7 GElem/sec
divisor_i32/rem 13/operator    1.00     30.7±0.02µs 254.3 MElem/sec     1.00     30.7±0.02µs 254.3 MElem/sec
divisor_i32/rem 16/divisor     1.01   1113.7±1.02ns  6.9 GElem/sec      1.00   1101.6±0.48ns  6.9 GElem/sec
divisor_i32/rem 16/operator    1.00     14.4±0.02µs 541.0 MElem/sec     1.00     14.4±0.02µs 541.4 MElem/sec
divisor_i32/rem 7/divisor      1.00   1781.1±1.05ns  4.3 GElem/sec      1.17      2.1±0.00µs  3.7 GElem/sec
divisor_i32/rem 7/operator     1.00     32.2±0.02µs 242.5 MElem/sec     1.00     32.2±0.01µs 242.6 MElem/sec
divisor_i64/div 13/divisor     1.00      6.0±0.00µs 1305.5 MElem/sec    1.01      6.0±0.01µs 1296.5 MElem/sec
divisor_i64/div 13/operator    1.00     52.0±0.02µs 150.2 MElem/sec     1.00     52.0±0.02µs 150.3 MElem/sec
divisor_i64/div 16/divisor     1.00      2.6±0.00µs  2.9 GElem/sec      1.00      2.6±0.00µs  2.9 GElem/sec
divisor_i64/div 16/operator    1.00     13.7±0.01µs 568.6 MElem/sec     1.00     13.7±0.01µs 568.6 MElem/sec
divisor_i64/div 7/divisor      1.00      6.0±0.00µs 1305.6 MElem/sec    1.01      6.0±0.00µs 1297.7 MElem/sec
divisor_i64/div 7/operator     1.01     53.8±0.03µs 145.3 MElem/sec     1.00     53.5±0.02µs 146.1 MElem/sec
divisor_i64/rem 13/divisor     1.00      5.1±0.02µs 1518.8 MElem/sec    1.31      6.7±0.02µs 1159.4 MElem/sec
divisor_i64/rem 13/operator    1.00     54.7±0.02µs 142.7 MElem/sec     1.00     54.7±0.02µs 142.7 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.2±0.00µs  3.5 GElem/sec      1.00      2.2±0.00µs  3.5 GElem/sec
divisor_i64/rem 16/operator    1.00     16.5±0.01µs 473.9 MElem/sec     1.00     16.5±0.01µs 473.9 MElem/sec
divisor_i64/rem 7/divisor      1.00      5.1±0.01µs 1534.6 MElem/sec    1.32      6.7±0.02µs 1160.1 MElem/sec
divisor_i64/rem 7/operator     1.00     56.2±0.02µs 138.9 MElem/sec     1.00     56.2±0.02µs 139.0 MElem/sec
divisor_u32/div 13/divisor     1.00   1049.7±0.44ns  7.3 GElem/sec      1.00   1051.3±1.01ns  7.3 GElem/sec
divisor_u32/div 13/operator    1.00     31.5±0.02µs 248.1 MElem/sec     1.00     31.5±0.01µs 247.9 MElem/sec
divisor_u32/div 16/divisor     1.00    407.6±0.25ns 18.7 GElem/sec      1.00    407.9±0.63ns 18.7 GElem/sec
divisor_u32/div 16/operator    1.00     13.7±0.01µs 568.9 MElem/sec     1.00     13.7±0.01µs 568.6 MElem/sec
divisor_u32/div 7/divisor      1.00   1337.0±0.37ns  5.7 GElem/sec      1.00   1338.1±0.89ns  5.7 GElem/sec
divisor_u32/div 7/operator     1.00     32.2±0.02µs 242.4 MElem/sec     1.00     32.2±0.01µs 242.4 MElem/sec
divisor_u32/rem 13/divisor     1.00   1393.2±0.50ns  5.5 GElem/sec      1.00   1395.6±0.80ns  5.5 GElem/sec
divisor_u32/rem 13/operator    1.00     32.2±0.01µs 242.6 MElem/sec     1.00     32.2±0.02µs 242.4 MElem/sec
divisor_u32/rem 16/divisor     1.00    408.6±1.28ns 18.7 GElem/sec      1.00    407.8±0.33ns 18.7 GElem/sec
divisor_u32/rem 16/operator    1.00     14.4±0.01µs 541.6 MElem/sec     1.00     14.4±0.01µs 540.9 MElem/sec
divisor_u32/rem 7/divisor      1.00   1463.4±3.36ns  5.2 GElem/sec      1.00   1463.0±0.84ns  5.2 GElem/sec
divisor_u32/rem 7/operator     1.00     33.1±0.01µs 236.3 MElem/sec     1.00     33.0±0.08µs 237.0 MElem/sec
divisor_u64/div 13/divisor     1.00      3.6±0.01µs  2.1 GElem/sec      1.03      3.7±0.15µs  2.1 GElem/sec
divisor_u64/div 13/operator    1.00     53.5±0.02µs 146.1 MElem/sec     1.00     53.4±0.02µs 146.2 MElem/sec
divisor_u64/div 16/divisor     1.00    806.8±0.92ns  9.5 GElem/sec      1.05   849.2±19.86ns  9.0 GElem/sec
divisor_u64/div 16/operator    1.00     13.8±0.01µs 568.1 MElem/sec     1.00     13.7±0.01µs 568.5 MElem/sec
divisor_u64/div 7/divisor      1.00      5.2±0.00µs 1512.3 MElem/sec    1.00      5.2±0.00µs 1514.4 MElem/sec
divisor_u64/div 7/operator     1.00     54.2±0.02µs 144.1 MElem/sec     1.00     54.2±0.01µs 144.2 MElem/sec
divisor_u64/rem 13/divisor     1.01      3.9±0.01µs 2008.0 MElem/sec    1.00      3.9±0.01µs 2018.2 MElem/sec
divisor_u64/rem 13/operator    1.00     56.2±0.03µs 139.0 MElem/sec     1.00     56.2±0.02µs 139.1 MElem/sec
divisor_u64/rem 16/divisor     1.01    808.3±5.93ns  9.4 GElem/sec      1.00    799.9±1.25ns  9.5 GElem/sec
divisor_u64/rem 16/operator    1.00     16.5±0.01µs 473.3 MElem/sec     1.00     16.5±0.01µs 474.0 MElem/sec
divisor_u64/rem 7/divisor      1.15      6.0±0.01µs 1299.5 MElem/sec    1.00      5.2±0.01µs 1489.8 MElem/sec
divisor_u64/rem 7/operator     1.00     57.0±0.02µs 137.1 MElem/sec     1.00     56.9±0.03µs 137.2 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-jnjp

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

uname:

Linux bench-c6482264608-4095-vcwmf 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
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
Resource Usage

base (merge-base)

Metric Value
Wall time 450.1s
Peak memory 10.2 MiB
Avg memory 9.8 MiB
CPU user 448.2s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 455.1s
Peak memory 10.1 MiB
Avg memory 9.7 MiB
CPU user 448.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v2
resources:
  arch: amd64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.97      5.7±0.07µs 1370.0 MElem/sec    1.00      2.9±0.06µs  2.6 GElem/sec
divisor_i32/div 13/operator    1.01     15.9±0.16µs 490.4 MElem/sec     1.00     15.8±0.24µs 494.7 MElem/sec
divisor_i32/div 16/divisor     1.02  1577.4±27.06ns  4.8 GElem/sec      1.00  1539.4±47.37ns  5.0 GElem/sec
divisor_i32/div 16/operator    1.00     15.9±0.07µs 489.9 MElem/sec     1.00     15.9±0.13µs 491.9 MElem/sec
divisor_i32/div 7/divisor      1.85      5.5±0.10µs 1429.7 MElem/sec    1.00      3.0±0.02µs  2.6 GElem/sec
divisor_i32/div 7/operator     1.00     15.3±0.24µs 511.2 MElem/sec     1.02     15.6±0.36µs 500.9 MElem/sec
divisor_i32/rem 13/divisor     1.81      5.9±0.07µs 1313.5 MElem/sec    1.00      3.3±0.05µs  2.3 GElem/sec
divisor_i32/rem 13/operator    1.02     15.9±0.10µs 490.4 MElem/sec     1.00     15.6±0.37µs 501.1 MElem/sec
divisor_i32/rem 16/divisor     1.02  1144.0±39.32ns  6.7 GElem/sec      1.00  1118.1±19.76ns  6.8 GElem/sec
divisor_i32/rem 16/operator    1.02     15.6±0.34µs 500.6 MElem/sec     1.00     15.3±0.23µs 509.7 MElem/sec
divisor_i32/rem 7/divisor      1.87      6.0±0.09µs 1304.4 MElem/sec    1.00      3.2±0.02µs  2.4 GElem/sec
divisor_i32/rem 7/operator     1.00     15.7±0.31µs 498.3 MElem/sec     1.01     15.8±0.18µs 493.6 MElem/sec
divisor_i64/div 13/divisor     1.16      9.7±0.12µs 802.4 MElem/sec     1.00      8.4±0.31µs 932.6 MElem/sec
divisor_i64/div 13/operator    1.00     25.3±0.41µs 308.8 MElem/sec     1.01     25.5±0.48µs 305.8 MElem/sec
divisor_i64/div 16/divisor     1.00      4.1±0.15µs 1903.0 MElem/sec    1.02      4.2±0.11µs 1863.0 MElem/sec
divisor_i64/div 16/operator    1.00     25.1±0.26µs 310.9 MElem/sec     1.05     26.5±0.26µs 295.3 MElem/sec
divisor_i64/div 7/divisor      1.18      9.8±0.13µs 798.9 MElem/sec     1.00      8.3±0.16µs 939.8 MElem/sec
divisor_i64/div 7/operator     1.00     25.3±0.34µs 309.2 MElem/sec     1.02     25.8±0.61µs 303.2 MElem/sec
divisor_i64/rem 13/divisor     1.70     13.2±0.20µs 590.1 MElem/sec     1.00      7.8±0.19µs 1002.4 MElem/sec
divisor_i64/rem 13/operator    1.00     25.3±0.39µs 309.2 MElem/sec     1.02     25.7±0.40µs 304.6 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.5±0.04µs  3.1 GElem/sec      1.00      2.5±0.04µs  3.0 GElem/sec
divisor_i64/rem 16/operator    1.00     26.2±0.39µs 298.1 MElem/sec     1.00     26.2±0.59µs 298.4 MElem/sec
divisor_i64/rem 7/divisor      1.72     13.3±0.23µs 588.2 MElem/sec     1.00      7.7±0.14µs 1012.1 MElem/sec
divisor_i64/rem 7/operator     1.03     26.1±0.66µs 299.4 MElem/sec     1.00     25.4±0.34µs 308.2 MElem/sec
divisor_u32/div 13/divisor     1.02  1597.0±32.47ns  4.8 GElem/sec      1.00  1573.1±63.03ns  4.8 GElem/sec
divisor_u32/div 13/operator    1.02     15.6±0.27µs 501.0 MElem/sec     1.00     15.3±0.28µs 510.8 MElem/sec
divisor_u32/div 16/divisor     1.00   782.5±16.28ns  9.8 GElem/sec      1.04   814.5±20.25ns  9.4 GElem/sec
divisor_u32/div 16/operator    1.00     15.3±0.25µs 511.1 MElem/sec     1.01     15.5±0.40µs 504.5 MElem/sec
divisor_u32/div 7/divisor      1.00  1987.8±34.59ns  3.8 GElem/sec      1.01      2.0±0.04µs  3.8 GElem/sec
divisor_u32/div 7/operator     1.01     15.8±0.24µs 493.3 MElem/sec     1.00     15.7±0.26µs 497.3 MElem/sec
divisor_u32/rem 13/divisor     1.01      2.2±0.04µs  3.4 GElem/sec      1.00      2.2±0.04µs  3.5 GElem/sec
divisor_u32/rem 13/operator    1.00     15.3±0.23µs 512.1 MElem/sec     1.00     15.3±0.25µs 511.1 MElem/sec
divisor_u32/rem 16/divisor     1.07   849.4±10.24ns  9.0 GElem/sec      1.00   790.3±18.72ns  9.7 GElem/sec
divisor_u32/rem 16/operator    1.00     15.2±0.21µs 514.5 MElem/sec     1.03     15.7±0.37µs 497.2 MElem/sec
divisor_u32/rem 7/divisor      1.02      2.7±0.04µs  2.8 GElem/sec      1.00      2.6±0.05µs  2.9 GElem/sec
divisor_u32/rem 7/operator     1.02     15.8±0.23µs 495.9 MElem/sec     1.00     15.4±0.31µs 507.3 MElem/sec
divisor_u64/div 13/divisor     1.05      5.4±0.05µs 1445.2 MElem/sec    1.00      5.1±0.09µs 1523.6 MElem/sec
divisor_u64/div 13/operator    1.05     26.6±0.04µs 293.3 MElem/sec     1.00     25.3±0.44µs 308.4 MElem/sec
divisor_u64/div 16/divisor     1.00  1555.2±23.54ns  4.9 GElem/sec      1.00  1552.6±44.16ns  4.9 GElem/sec
divisor_u64/div 16/operator    1.03     26.0±0.58µs 299.9 MElem/sec     1.00     25.2±0.28µs 309.8 MElem/sec
divisor_u64/div 7/divisor      1.03      6.8±0.03µs 1148.5 MElem/sec    1.00      6.6±0.12µs 1178.8 MElem/sec
divisor_u64/div 7/operator     1.00     25.7±0.49µs 304.4 MElem/sec     1.00     25.8±0.45µs 303.1 MElem/sec
divisor_u64/rem 13/divisor     1.00      9.0±0.20µs 866.2 MElem/sec     1.03      9.3±0.18µs 842.1 MElem/sec
divisor_u64/rem 13/operator    1.05     26.4±0.30µs 295.8 MElem/sec     1.00     25.3±0.40µs 309.3 MElem/sec
divisor_u64/rem 16/divisor     1.00  1506.1±24.75ns  5.1 GElem/sec      1.02   1539.5±8.16ns  5.0 GElem/sec
divisor_u64/rem 16/operator    1.00     25.4±0.38µs 307.2 MElem/sec     1.01     25.8±0.56µs 302.7 MElem/sec
divisor_u64/rem 7/divisor      1.03     10.7±0.44µs 727.4 MElem/sec     1.00     10.5±0.18µs 745.8 MElem/sec
divisor_u64/rem 7/operator     1.05     26.6±0.07µs 293.6 MElem/sec     1.00     25.3±0.32µs 309.2 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-k33w7onn-e576f1d7-jww2

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

uname:

Linux bench-c6482263075-4093-w6hbr 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 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; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 450.1s
Peak memory 11.6 MiB
Avg memory 10.8 MiB
CPU user 444.0s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 445.1s
Peak memory 11.0 MiB
Avg memory 10.7 MiB
CPU user 439.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
  arch: amd64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00  1399.8±25.06ns  5.5 GElem/sec      1.24  1730.4±14.56ns  4.4 GElem/sec
divisor_i32/div 13/operator    1.05     14.9±0.37µs 524.0 MElem/sec     1.00     14.2±0.76µs 550.2 MElem/sec
divisor_i32/div 16/divisor     1.05   780.7±40.94ns  9.8 GElem/sec      1.00   744.6±49.49ns 10.2 GElem/sec
divisor_i32/div 16/operator    1.10     14.8±0.41µs 528.0 MElem/sec     1.00     13.5±0.67µs 579.8 MElem/sec
divisor_i32/div 7/divisor      1.00  1306.0±69.80ns  5.8 GElem/sec      1.32  1727.3±37.17ns  4.4 GElem/sec
divisor_i32/div 7/operator     1.00     13.4±0.69µs 584.4 MElem/sec     1.12     14.9±0.22µs 523.8 MElem/sec
divisor_i32/rem 13/divisor     1.00  1510.2±37.10ns  5.1 GElem/sec      1.11  1681.2±68.37ns  4.5 GElem/sec
divisor_i32/rem 13/operator    1.00     14.9±0.24µs 524.0 MElem/sec     1.00     15.0±0.09µs 522.0 MElem/sec
divisor_i32/rem 16/divisor     1.08   792.6±11.99ns  9.6 GElem/sec      1.00   736.9±41.68ns 10.4 GElem/sec
divisor_i32/rem 16/operator    1.07     14.0±0.75µs 558.6 MElem/sec     1.00     13.1±0.66µs 595.0 MElem/sec
divisor_i32/rem 7/divisor      1.00  1510.6±67.15ns  5.1 GElem/sec      1.03  1549.6±70.16ns  4.9 GElem/sec
divisor_i32/rem 7/operator     1.00     14.6±0.66µs 534.8 MElem/sec     1.01     14.8±0.46µs 529.2 MElem/sec
divisor_i64/div 13/divisor     1.07      7.9±0.55µs 988.6 MElem/sec     1.00      7.4±0.08µs 1057.3 MElem/sec
divisor_i64/div 13/operator    1.00     21.8±1.17µs 357.9 MElem/sec     1.16     25.3±0.33µs 308.9 MElem/sec
divisor_i64/div 16/divisor     1.03      2.1±0.07µs  3.7 GElem/sec      1.00      2.0±0.03µs  3.8 GElem/sec
divisor_i64/div 16/operator    1.00     22.2±1.32µs 352.2 MElem/sec     1.14     25.4±0.47µs 308.1 MElem/sec
divisor_i64/div 7/divisor      1.06      7.8±0.42µs 1002.4 MElem/sec    1.00      7.4±0.10µs 1061.8 MElem/sec
divisor_i64/div 7/operator     1.00     22.4±1.18µs 349.5 MElem/sec     1.09     24.4±0.96µs 319.9 MElem/sec
divisor_i64/rem 13/divisor     1.03      8.9±0.46µs 874.1 MElem/sec     1.00      8.7±0.14µs 900.5 MElem/sec
divisor_i64/rem 13/operator    1.00     21.6±1.10µs 361.3 MElem/sec     1.16     25.2±0.68µs 310.2 MElem/sec
divisor_i64/rem 16/divisor     1.19  1953.4±61.14ns  3.9 GElem/sec      1.00  1635.8±34.15ns  4.7 GElem/sec
divisor_i64/rem 16/operator    1.00     24.4±0.73µs 320.3 MElem/sec     1.03     25.1±0.23µs 311.1 MElem/sec
divisor_i64/rem 7/divisor      1.07      9.3±0.47µs 837.9 MElem/sec     1.00      8.7±0.12µs 894.1 MElem/sec
divisor_i64/rem 7/operator     1.00     21.8±0.87µs 358.8 MElem/sec     1.15     25.0±0.17µs 312.1 MElem/sec
divisor_u32/div 13/divisor     1.01   960.7±42.81ns  7.9 GElem/sec      1.00   953.0±54.28ns  8.0 GElem/sec
divisor_u32/div 13/operator    1.05     14.3±0.57µs 546.1 MElem/sec     1.00     13.7±0.68µs 571.7 MElem/sec
divisor_u32/div 16/divisor     1.00   735.8±37.19ns 10.4 GElem/sec      1.12   827.7±38.14ns  9.2 GElem/sec
divisor_u32/div 16/operator    1.00     14.7±0.40µs 532.3 MElem/sec     1.01     14.8±0.40µs 526.1 MElem/sec
divisor_u32/div 7/divisor      1.02  1276.7±89.22ns  6.0 GElem/sec      1.00  1250.0±35.38ns  6.1 GElem/sec
divisor_u32/div 7/operator     1.00     14.6±0.89µs 536.6 MElem/sec     1.01     14.7±0.44µs 533.0 MElem/sec
divisor_u32/rem 13/divisor     1.06  1394.0±42.55ns  5.5 GElem/sec      1.00  1317.3±88.07ns  5.8 GElem/sec
divisor_u32/rem 13/operator    1.03     14.4±0.58µs 541.2 MElem/sec     1.00     14.0±0.68µs 558.1 MElem/sec
divisor_u32/rem 16/divisor     1.00   788.3±35.25ns  9.7 GElem/sec      1.08   854.0±11.43ns  8.9 GElem/sec
divisor_u32/rem 16/operator    1.00     13.2±0.73µs 589.6 MElem/sec     1.11     14.7±0.58µs 529.8 MElem/sec
divisor_u32/rem 7/divisor      1.02  1633.3±42.35ns  4.7 GElem/sec      1.00  1598.7±58.41ns  4.8 GElem/sec
divisor_u32/rem 7/operator     1.01     14.9±0.24µs 525.6 MElem/sec     1.00     14.7±0.38µs 530.9 MElem/sec
divisor_u64/div 13/divisor     1.00      6.6±0.28µs 1180.6 MElem/sec    1.07      7.1±0.24µs 1107.4 MElem/sec
divisor_u64/div 13/operator    1.00     21.7±0.87µs 359.9 MElem/sec     1.12     24.3±0.79µs 321.8 MElem/sec
divisor_u64/div 16/divisor     1.00  1434.0±69.92ns  5.3 GElem/sec      1.04  1488.7±16.94ns  5.1 GElem/sec
divisor_u64/div 16/operator    1.00     22.6±1.16µs 346.2 MElem/sec     1.10     24.8±0.40µs 314.8 MElem/sec
divisor_u64/div 7/divisor      1.06      6.3±0.04µs 1249.6 MElem/sec    1.00      5.9±0.02µs 1318.6 MElem/sec
divisor_u64/div 7/operator     1.02     25.0±0.10µs 312.4 MElem/sec     1.00     24.5±0.68µs 319.3 MElem/sec
divisor_u64/rem 13/divisor     1.00      6.1±0.31µs 1276.1 MElem/sec    1.10      6.7±0.13µs 1157.6 MElem/sec
divisor_u64/rem 13/operator    1.00     22.5±1.21µs 347.9 MElem/sec     1.07     24.0±1.16µs 325.2 MElem/sec
divisor_u64/rem 16/divisor     1.00  1391.0±62.09ns  5.5 GElem/sec      1.07  1488.6±14.89ns  5.1 GElem/sec
divisor_u64/rem 16/operator    1.00     22.6±1.11µs 346.0 MElem/sec     1.11     25.0±0.41µs 312.2 MElem/sec
divisor_u64/rem 7/divisor      1.00      6.7±0.26µs 1164.2 MElem/sec    1.13      7.6±0.25µs 1032.7 MElem/sec
divisor_u64/rem 7/operator     1.05     24.8±0.69µs 315.2 MElem/sec     1.00     23.6±1.27µs 331.4 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-k33w7onn-e576f1d7-mqdc

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

uname:

Linux bench-c6482263475-4098-57w72 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 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; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 470.1s
Peak memory 11.7 MiB
Avg memory 10.9 MiB
CPU user 459.9s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 435.1s
Peak memory 10.8 MiB
Avg memory 10.5 MiB
CPU user 429.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64-v4
resources:
  arch: amd64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00  1412.6±25.58ns  5.4 GElem/sec      1.10  1556.3±21.33ns  4.9 GElem/sec
divisor_i32/div 13/operator    1.00     12.4±0.14µs 631.4 MElem/sec     1.00     12.4±0.21µs 632.3 MElem/sec
divisor_i32/div 16/divisor     1.05   679.0±24.10ns 11.2 GElem/sec      1.00   644.0±10.93ns 11.8 GElem/sec
divisor_i32/div 16/operator    1.00     12.3±0.20µs 633.2 MElem/sec     1.00     12.4±0.17µs 631.2 MElem/sec
divisor_i32/div 7/divisor      1.00  1432.1±23.67ns  5.3 GElem/sec      1.09  1554.1±26.66ns  4.9 GElem/sec
divisor_i32/div 7/operator     1.00     12.4±0.20µs 629.5 MElem/sec     1.00     12.4±0.14µs 632.4 MElem/sec
divisor_i32/rem 13/divisor     1.00  1562.0±27.07ns  4.9 GElem/sec      1.09  1695.5±29.54ns  4.5 GElem/sec
divisor_i32/rem 13/operator    1.01     12.4±0.22µs 628.1 MElem/sec     1.00     12.3±0.16µs 635.3 MElem/sec
divisor_i32/rem 16/divisor     1.05   656.5±13.47ns 11.6 GElem/sec      1.00   622.4±14.11ns 12.3 GElem/sec
divisor_i32/rem 16/operator    1.00     12.4±0.15µs 631.4 MElem/sec     1.00     12.4±0.19µs 629.4 MElem/sec
divisor_i32/rem 7/divisor      1.00  1577.1±25.14ns  4.8 GElem/sec      1.07  1688.3±22.68ns  4.5 GElem/sec
divisor_i32/rem 7/operator     1.00     12.4±0.15µs 630.7 MElem/sec     1.00     12.3±0.15µs 633.6 MElem/sec
divisor_i64/div 13/divisor     1.28      6.9±0.09µs 1129.1 MElem/sec    1.00      5.4±0.09µs 1440.5 MElem/sec
divisor_i64/div 13/operator    1.01     20.6±0.25µs 379.9 MElem/sec     1.00     20.4±0.28µs 382.3 MElem/sec
divisor_i64/div 16/divisor     1.33  1675.5±25.94ns  4.6 GElem/sec      1.00  1258.5±38.22ns  6.1 GElem/sec
divisor_i64/div 16/operator    1.00     20.7±0.29µs 377.3 MElem/sec     1.00     20.6±0.30µs 378.5 MElem/sec
divisor_i64/div 7/divisor      1.27      6.9±0.09µs 1134.7 MElem/sec    1.00      5.4±0.06µs 1438.2 MElem/sec
divisor_i64/div 7/operator     1.01     20.8±0.28µs 375.6 MElem/sec     1.00     20.6±0.24µs 379.4 MElem/sec
divisor_i64/rem 13/divisor     1.35      7.4±0.12µs 1052.1 MElem/sec    1.00      5.5±0.10µs 1417.2 MElem/sec
divisor_i64/rem 13/operator    1.00     20.4±0.23µs 382.8 MElem/sec     1.01     20.6±0.25µs 379.9 MElem/sec
divisor_i64/rem 16/divisor     1.38  1902.3±31.06ns  4.0 GElem/sec      1.00  1379.6±25.60ns  5.5 GElem/sec
divisor_i64/rem 16/operator    1.00     20.7±0.31µs 377.9 MElem/sec     1.00     20.7±0.34µs 376.7 MElem/sec
divisor_i64/rem 7/divisor      1.34      7.4±0.09µs 1054.1 MElem/sec    1.00      5.5±0.08µs 1414.6 MElem/sec
divisor_i64/rem 7/operator     1.00     20.3±0.25µs 383.9 MElem/sec     1.02     20.7±0.26µs 377.4 MElem/sec
divisor_u32/div 13/divisor     1.00   765.2±13.95ns 10.0 GElem/sec      1.07   815.2±14.12ns  9.4 GElem/sec
divisor_u32/div 13/operator    1.00     12.4±0.15µs 631.8 MElem/sec     1.00     12.4±0.17µs 631.3 MElem/sec
divisor_u32/div 16/divisor     1.00    657.5±8.00ns 11.6 GElem/sec      1.07   701.5±10.21ns 10.9 GElem/sec
divisor_u32/div 16/operator    1.00     12.4±0.16µs 632.0 MElem/sec     1.00     12.4±0.15µs 629.1 MElem/sec
divisor_u32/div 7/divisor      1.01  1021.5±16.45ns  7.5 GElem/sec      1.00  1014.0±15.61ns  7.5 GElem/sec
divisor_u32/div 7/operator     1.00     12.3±0.17µs 634.8 MElem/sec     1.01     12.4±0.17µs 629.0 MElem/sec
divisor_u32/rem 13/divisor     1.01  1203.4±18.71ns  6.3 GElem/sec      1.00  1191.5±14.95ns  6.4 GElem/sec
divisor_u32/rem 13/operator    1.00     12.3±0.19µs 635.2 MElem/sec     1.00     12.3±0.16µs 633.2 MElem/sec
divisor_u32/rem 16/divisor     1.00   649.1±10.66ns 11.8 GElem/sec      1.16    751.4±9.46ns 10.2 GElem/sec
divisor_u32/rem 16/operator    1.00     12.3±0.19µs 633.5 MElem/sec     1.01     12.4±0.17µs 629.5 MElem/sec
divisor_u32/rem 7/divisor      1.00  1444.3±26.55ns  5.3 GElem/sec      1.00  1447.7±23.91ns  5.3 GElem/sec
divisor_u32/rem 7/operator     1.01     12.5±0.24µs 627.5 MElem/sec     1.00     12.3±0.17µs 633.6 MElem/sec
divisor_u64/div 13/divisor     1.04      6.2±0.09µs 1264.2 MElem/sec    1.00      5.9±0.11µs 1318.4 MElem/sec
divisor_u64/div 13/operator    1.00     20.5±0.25µs 380.8 MElem/sec     1.00     20.5±0.37µs 381.9 MElem/sec
divisor_u64/div 16/divisor     1.00  1253.2±18.66ns  6.1 GElem/sec      1.01  1268.7±17.09ns  6.0 GElem/sec
divisor_u64/div 16/operator    1.00     20.6±0.24µs 379.9 MElem/sec     1.01     20.7±0.28µs 377.2 MElem/sec
divisor_u64/div 7/divisor      1.05      5.1±0.08µs 1530.7 MElem/sec    1.00      4.8±0.11µs 1612.5 MElem/sec
divisor_u64/div 7/operator     1.01     20.6±0.37µs 378.4 MElem/sec     1.00     20.5±0.30µs 380.3 MElem/sec
divisor_u64/rem 13/divisor     1.01      4.9±0.06µs 1609.0 MElem/sec    1.00      4.8±0.12µs 1617.6 MElem/sec
divisor_u64/rem 13/operator    1.02     20.8±0.28µs 375.8 MElem/sec     1.00     20.5±0.37µs 381.4 MElem/sec
divisor_u64/rem 16/divisor     1.00  1248.6±20.77ns  6.1 GElem/sec      1.01  1259.5±16.66ns  6.1 GElem/sec
divisor_u64/rem 16/operator    1.00     20.6±0.24µs 378.6 MElem/sec     1.00     20.6±0.26µs 378.4 MElem/sec
divisor_u64/rem 7/divisor      1.00      5.6±0.07µs 1394.6 MElem/sec    1.02      5.7±0.13µs 1372.1 MElem/sec
divisor_u64/rem 7/operator     1.00     20.6±0.26µs 379.2 MElem/sec     1.00     20.7±0.30µs 377.9 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-k33w7onn-9caddbb8-bsbv

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

uname:

Linux bench-c6482263940-4097-tmm6s 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 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; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 465.1s
Peak memory 11.5 MiB
Avg memory 11.0 MiB
CPU user 463.4s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 470.1s
Peak memory 11.0 MiB
Avg memory 10.7 MiB
CPU user 466.6s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=x86-64
resources:
  arch: amd64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     2.08      4.5±0.02µs 1729.8 MElem/sec    1.00      2.2±0.00µs  3.5 GElem/sec
divisor_i32/div 13/operator    1.00     11.8±0.02µs 662.6 MElem/sec     1.00     11.8±0.01µs 664.3 MElem/sec
divisor_i32/div 16/divisor     1.01  1174.1±10.25ns  6.5 GElem/sec      1.00   1163.3±4.47ns  6.6 GElem/sec
divisor_i32/div 16/operator    1.00     11.8±0.01µs 662.7 MElem/sec     1.00     11.8±0.01µs 664.3 MElem/sec
divisor_i32/div 7/divisor      2.09      4.5±0.02µs 1732.0 MElem/sec    1.00      2.2±0.00µs  3.5 GElem/sec
divisor_i32/div 7/operator     1.00     11.8±0.02µs 662.4 MElem/sec     1.00     11.8±0.00µs 664.5 MElem/sec
divisor_i32/rem 13/divisor     1.73      5.5±0.04µs 1410.9 MElem/sec    1.00      3.2±0.01µs  2.4 GElem/sec
divisor_i32/rem 13/operator    1.00     11.8±0.01µs 662.8 MElem/sec     1.00     11.8±0.02µs 664.1 MElem/sec
divisor_i32/rem 16/divisor     1.01   873.8±17.21ns  8.7 GElem/sec      1.00    863.9±2.06ns  8.8 GElem/sec
divisor_i32/rem 16/operator    1.00     11.8±0.01µs 662.7 MElem/sec     1.00     11.8±0.01µs 664.0 MElem/sec
divisor_i32/rem 7/divisor      1.76      5.5±0.01µs 1413.2 MElem/sec    1.00      3.1±0.01µs  2.4 GElem/sec
divisor_i32/rem 7/operator     1.00     11.8±0.01µs 662.8 MElem/sec     1.00     11.8±0.02µs 664.2 MElem/sec
divisor_i64/div 13/divisor     1.13      7.7±0.01µs 1019.5 MElem/sec    1.00      6.8±0.02µs 1147.8 MElem/sec
divisor_i64/div 13/operator    1.00     19.6±0.01µs 398.6 MElem/sec     1.00     19.6±0.03µs 398.6 MElem/sec
divisor_i64/div 16/divisor     1.00      3.4±0.00µs  2.3 GElem/sec      1.00      3.4±0.01µs  2.3 GElem/sec
divisor_i64/div 16/operator    1.00     19.6±0.05µs 398.1 MElem/sec     1.00     19.6±0.01µs 398.7 MElem/sec
divisor_i64/div 7/divisor      1.13      7.7±0.01µs 1018.5 MElem/sec    1.00      6.8±0.01µs 1148.1 MElem/sec
divisor_i64/div 7/operator     1.00     19.6±0.02µs 398.6 MElem/sec     1.00     19.6±0.02µs 398.6 MElem/sec
divisor_i64/rem 13/divisor     1.00      5.3±0.09µs 1470.7 MElem/sec    1.04      5.5±0.13µs 1410.7 MElem/sec
divisor_i64/rem 13/operator    1.00     19.6±0.03µs 398.5 MElem/sec     1.00     19.6±0.02µs 398.6 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.0±0.00µs  3.7 GElem/sec      1.00      2.0±0.00µs  3.8 GElem/sec
divisor_i64/rem 16/operator    1.00     19.6±0.01µs 398.6 MElem/sec     1.00     19.6±0.02µs 398.6 MElem/sec
divisor_i64/rem 7/divisor      1.00      5.3±0.02µs 1473.4 MElem/sec    1.04      5.5±0.02µs 1412.4 MElem/sec
divisor_i64/rem 7/operator     1.00     19.6±0.02µs 398.5 MElem/sec     1.00     19.6±0.02µs 398.6 MElem/sec
divisor_u32/div 13/divisor     1.00   1212.8±2.42ns  6.3 GElem/sec      1.00   1211.2±1.49ns  6.3 GElem/sec
divisor_u32/div 13/operator    1.00     11.8±0.01µs 664.1 MElem/sec     1.00     11.8±0.01µs 664.3 MElem/sec
divisor_u32/div 16/divisor     1.00    639.2±3.47ns 11.9 GElem/sec      1.00    637.8±3.89ns 12.0 GElem/sec
divisor_u32/div 16/operator    1.00     11.8±0.01µs 664.3 MElem/sec     1.00     11.8±0.02µs 664.3 MElem/sec
divisor_u32/div 7/divisor      1.00  1725.3±19.65ns  4.4 GElem/sec      1.00   1721.8±3.29ns  4.4 GElem/sec
divisor_u32/div 7/operator     1.00     11.8±0.01µs 663.9 MElem/sec     1.00     11.8±0.01µs 664.3 MElem/sec
divisor_u32/rem 13/divisor     1.01      2.5±0.04µs  3.1 GElem/sec      1.00      2.5±0.01µs  3.1 GElem/sec
divisor_u32/rem 13/operator    1.00     11.8±0.01µs 664.2 MElem/sec     1.00     11.8±0.01µs 664.2 MElem/sec
divisor_u32/rem 16/divisor     1.05    665.2±1.63ns 11.5 GElem/sec      1.00    631.5±1.56ns 12.1 GElem/sec
divisor_u32/rem 16/operator    1.00     11.8±0.01µs 664.3 MElem/sec     1.00     11.8±0.01µs 664.1 MElem/sec
divisor_u32/rem 7/divisor      1.00      3.1±0.02µs  2.4 GElem/sec      1.00      3.1±0.01µs  2.4 GElem/sec
divisor_u32/rem 7/operator     1.00     11.8±0.01µs 664.2 MElem/sec     1.00     11.8±0.01µs 664.0 MElem/sec
divisor_u64/div 13/divisor     1.00      4.0±0.00µs 1976.7 MElem/sec    1.00      3.9±0.01µs 1982.8 MElem/sec
divisor_u64/div 13/operator    1.00     19.6±0.01µs 398.1 MElem/sec     1.00     19.6±0.01µs 398.6 MElem/sec
divisor_u64/div 16/divisor     1.02   1278.4±3.72ns  6.0 GElem/sec      1.00  1250.0±18.97ns  6.1 GElem/sec
divisor_u64/div 16/operator    1.00     19.6±0.02µs 398.0 MElem/sec     1.00     19.6±0.01µs 398.7 MElem/sec
divisor_u64/div 7/divisor      1.00      4.6±0.06µs 1680.4 MElem/sec    1.05      4.9±0.01µs 1601.6 MElem/sec
divisor_u64/div 7/operator     1.04     20.5±0.03µs 381.7 MElem/sec     1.00     19.6±0.01µs 398.6 MElem/sec
divisor_u64/rem 13/divisor     1.01      4.0±0.01µs 1970.5 MElem/sec    1.00      3.9±0.01µs 1981.7 MElem/sec
divisor_u64/rem 13/operator    1.00     19.6±0.03µs 398.0 MElem/sec     1.00     19.6±0.02µs 398.5 MElem/sec
divisor_u64/rem 16/divisor     1.02  1269.6±12.38ns  6.0 GElem/sec      1.00   1239.0±2.04ns  6.2 GElem/sec
divisor_u64/rem 16/operator    1.00     19.6±0.02µs 398.0 MElem/sec     1.00     19.6±0.02µs 398.6 MElem/sec
divisor_u64/rem 7/divisor      1.00      7.6±0.01µs 1027.6 MElem/sec    1.07      8.1±0.01µs 959.8 MElem/sec
divisor_u64/rem 7/operator     1.00     19.6±0.03µs 398.0 MElem/sec     1.00     19.6±0.04µs 398.5 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-k33w7onn-56f094e3-r4wz

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

uname:

Linux bench-c6482262582-4094-8sspb 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 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; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 465.1s
Peak memory 11.7 MiB
Avg memory 11.1 MiB
CPU user 461.5s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 460.1s
Peak memory 11.0 MiB
Avg memory 10.7 MiB
CPU user 454.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=native
resources:
  arch: amd64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00  1343.1±36.95ns  5.7 GElem/sec      1.10  1475.8±61.77ns  5.2 GElem/sec
divisor_i32/div 13/operator    1.01     12.7±0.41µs 615.4 MElem/sec     1.00     12.6±0.33µs 621.5 MElem/sec
divisor_i32/div 16/divisor     1.02   648.5±20.86ns 11.8 GElem/sec      1.00   638.0±23.27ns 12.0 GElem/sec
divisor_i32/div 16/operator    1.02     12.9±0.62µs 605.8 MElem/sec     1.00     12.7±0.46µs 616.8 MElem/sec
divisor_i32/div 7/divisor      1.00  1388.9±95.89ns  5.5 GElem/sec      1.05  1465.1±39.44ns  5.2 GElem/sec
divisor_i32/div 7/operator     1.01     12.8±0.63µs 610.9 MElem/sec     1.00     12.6±0.43µs 618.5 MElem/sec
divisor_i32/rem 13/divisor     1.00  1499.6±60.90ns  5.1 GElem/sec      1.06  1596.8±52.42ns  4.8 GElem/sec
divisor_i32/rem 13/operator    1.02     12.9±0.65µs 605.0 MElem/sec     1.00     12.7±0.50µs 614.0 MElem/sec
divisor_i32/rem 16/divisor     1.04   656.4±27.81ns 11.6 GElem/sec      1.00   633.3±20.84ns 12.0 GElem/sec
divisor_i32/rem 16/operator    1.00     12.8±0.61µs 609.6 MElem/sec     1.00     12.8±0.48µs 609.4 MElem/sec
divisor_i32/rem 7/divisor      1.00  1499.6±51.00ns  5.1 GElem/sec      1.08  1613.8±64.01ns  4.7 GElem/sec
divisor_i32/rem 7/operator     1.01     12.8±0.54µs 610.4 MElem/sec     1.00     12.6±0.37µs 618.4 MElem/sec
divisor_i64/div 13/divisor     1.22      7.0±0.24µs 1119.2 MElem/sec    1.00      5.7±0.16µs 1361.7 MElem/sec
divisor_i64/div 13/operator    1.00     21.1±0.75µs 370.6 MElem/sec     1.00     21.0±0.68µs 372.2 MElem/sec
divisor_i64/div 16/divisor     1.22  1664.9±56.71ns  4.6 GElem/sec      1.00  1364.5±59.27ns  5.6 GElem/sec
divisor_i64/div 16/operator    1.01     21.2±0.63µs 368.2 MElem/sec     1.00     21.1±0.72µs 370.5 MElem/sec
divisor_i64/div 7/divisor      1.20      7.0±0.23µs 1119.0 MElem/sec    1.00      5.8±0.28µs 1347.9 MElem/sec
divisor_i64/div 7/operator     1.01     21.1±0.63µs 369.7 MElem/sec     1.00     21.0±0.62µs 372.5 MElem/sec
divisor_i64/rem 13/divisor     1.33      7.5±0.30µs 1038.5 MElem/sec    1.00      5.7±0.16µs 1382.1 MElem/sec
divisor_i64/rem 13/operator    1.01     21.1±0.71µs 369.7 MElem/sec     1.00     21.0±0.54µs 372.9 MElem/sec
divisor_i64/rem 16/divisor     1.39  1835.6±182.12ns  4.2 GElem/sec     1.00  1323.3±55.45ns  5.8 GElem/sec
divisor_i64/rem 16/operator    1.18     24.9±1.21µs 313.8 MElem/sec     1.00     21.1±0.55µs 370.9 MElem/sec
divisor_i64/rem 7/divisor      1.32      7.5±0.27µs 1043.2 MElem/sec    1.00      5.7±0.18µs 1377.3 MElem/sec
divisor_i64/rem 7/operator     1.00     21.2±0.82µs 369.2 MElem/sec     1.00     21.1±0.76µs 369.7 MElem/sec
divisor_u32/div 13/divisor     1.00   760.6±37.52ns 10.0 GElem/sec      1.04   792.2±37.34ns  9.6 GElem/sec
divisor_u32/div 13/operator    1.01     12.9±0.61µs 607.3 MElem/sec     1.00     12.8±0.48µs 612.2 MElem/sec
divisor_u32/div 16/divisor     1.00   662.0±23.11ns 11.5 GElem/sec      1.15   760.1±53.57ns 10.0 GElem/sec
divisor_u32/div 16/operator    1.00     13.3±0.77µs 588.6 MElem/sec     1.06     14.1±0.97µs 555.6 MElem/sec
divisor_u32/div 7/divisor      1.00   982.4±33.96ns  7.8 GElem/sec      1.09  1073.5±102.41ns  7.1 GElem/sec
divisor_u32/div 7/operator     1.01     12.8±0.58µs 608.8 MElem/sec     1.00     12.7±0.43µs 613.2 MElem/sec
divisor_u32/rem 13/divisor     1.00  1123.7±41.38ns  6.8 GElem/sec      1.16  1301.1±100.16ns  5.9 GElem/sec
divisor_u32/rem 13/operator    1.00     13.4±0.84µs 583.1 MElem/sec     1.08     14.5±0.56µs 538.9 MElem/sec
divisor_u32/rem 16/divisor     1.00   715.1±20.32ns 10.7 GElem/sec      1.02   728.3±18.12ns 10.5 GElem/sec
divisor_u32/rem 16/operator    1.01     12.8±0.60µs 609.7 MElem/sec     1.00     12.7±0.43µs 616.1 MElem/sec
divisor_u32/rem 7/divisor      1.00  1375.1±55.87ns  5.5 GElem/sec      1.10  1513.7±92.40ns  5.0 GElem/sec
divisor_u32/rem 7/operator     1.00     13.2±0.81µs 593.4 MElem/sec     1.08     14.2±1.40µs 551.7 MElem/sec
divisor_u64/div 13/divisor     1.04      6.4±0.18µs 1219.1 MElem/sec    1.00      6.1±0.18µs 1272.6 MElem/sec
divisor_u64/div 13/operator    1.00     21.1±0.59µs 370.9 MElem/sec     1.02     21.5±1.35µs 364.0 MElem/sec
divisor_u64/div 16/divisor     1.06  1338.8±55.48ns  5.7 GElem/sec      1.00  1257.7±48.12ns  6.1 GElem/sec
divisor_u64/div 16/operator    1.00     21.0±0.55µs 371.4 MElem/sec     1.00     21.1±0.61µs 369.8 MElem/sec
divisor_u64/div 7/divisor      1.02      5.1±0.14µs 1523.4 MElem/sec    1.00      5.0±0.15µs 1558.7 MElem/sec
divisor_u64/div 7/operator     1.01     21.2±0.78µs 367.9 MElem/sec     1.00     21.1±0.61µs 369.8 MElem/sec
divisor_u64/rem 13/divisor     1.00      5.0±0.25µs 1563.4 MElem/sec    1.04      5.2±0.27µs 1510.2 MElem/sec
divisor_u64/rem 13/operator    1.00     21.1±0.58µs 370.9 MElem/sec     1.01     21.2±0.84µs 367.9 MElem/sec
divisor_u64/rem 16/divisor     1.06  1321.8±43.65ns  5.8 GElem/sec      1.00  1244.7±36.13ns  6.1 GElem/sec
divisor_u64/rem 16/operator    1.01     21.5±1.00µs 363.4 MElem/sec     1.00     21.3±0.81µs 367.3 MElem/sec
divisor_u64/rem 7/divisor      1.00      5.8±0.21µs 1351.7 MElem/sec    1.03      6.0±0.28µs 1307.7 MElem/sec
divisor_u64/rem 7/operator     1.00     21.2±0.79µs 368.0 MElem/sec     1.00     21.1±0.66µs 369.6 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-k33w7onn-7bca84a4-mhsn

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

uname:

Linux bench-c6482264265-4096-fqwr5 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 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; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 465.1s
Peak memory 11.6 MiB
Avg memory 10.9 MiB
CPU user 461.4s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 465.1s
Peak memory 11.0 MiB
Avg memory 10.8 MiB
CPU user 460.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-feature=+sve"
resources:
  arch: arm64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-feature=+sve2"
resources:
  arch: arm64

@sdf-jkl

sdf-jkl commented Oct 28, 2026

Copy link
Copy Markdown
Member Author

run benchmark divisor

baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: "-C target-cpu=neoverse-v2"
resources:
  arch: arm64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-feature=+sve2
resources:
  arch: arm64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-feature=+sve
resources:
  arch: arm64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: divisor

Sharding factor: 1 (1 workers).

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=neoverse-v2
resources:
  arch: arm64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-cpu=neoverse-v2
resources:
  arch: arm64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00      2.4±0.00µs  3.2 GElem/sec      1.04      2.4±0.00µs  3.1 GElem/sec
divisor_i32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/div 16/divisor     1.01   1289.4±0.49ns  5.9 GElem/sec      1.00   1281.3±0.44ns  6.0 GElem/sec
divisor_i32/div 16/operator    1.01      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_i32/div 7/divisor      1.00      2.4±0.00µs  3.2 GElem/sec      1.04      2.4±0.00µs  3.1 GElem/sec
divisor_i32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/rem 13/divisor     1.00      2.1±0.00µs  3.6 GElem/sec      1.04      2.2±0.00µs  3.5 GElem/sec
divisor_i32/rem 13/operator    1.77      5.3±0.04µs 1482.2 MElem/sec    1.00      3.0±0.05µs  2.6 GElem/sec
divisor_i32/rem 16/divisor     1.01   1083.3±0.61ns  7.0 GElem/sec      1.00   1070.2±0.32ns  7.1 GElem/sec
divisor_i32/rem 16/operator    1.39      4.0±0.02µs 1964.1 MElem/sec    1.00      2.9±0.07µs  2.7 GElem/sec
divisor_i32/rem 7/divisor      1.00      2.1±0.01µs  3.6 GElem/sec      1.04      2.2±0.00µs  3.5 GElem/sec
divisor_i32/rem 7/operator     1.79      5.3±0.04µs 1480.5 MElem/sec    1.00      3.0±0.04µs  2.6 GElem/sec
divisor_i64/div 13/divisor     1.00      6.0±0.00µs 1306.4 MElem/sec    1.01      6.0±0.00µs 1293.2 MElem/sec
divisor_i64/div 13/operator    1.00      8.9±0.00µs 874.4 MElem/sec     1.00      8.9±0.00µs 874.4 MElem/sec
divisor_i64/div 16/divisor     1.00      2.6±0.00µs  3.0 GElem/sec      1.00      2.6±0.00µs  3.0 GElem/sec
divisor_i64/div 16/operator    1.00      4.1±0.00µs 1890.4 MElem/sec    1.00      4.1±0.00µs 1891.2 MElem/sec
divisor_i64/div 7/divisor      1.00      6.0±0.00µs 1306.6 MElem/sec    1.01      6.0±0.00µs 1298.6 MElem/sec
divisor_i64/div 7/operator     1.00      8.9±0.00µs 874.5 MElem/sec     1.00      8.9±0.00µs 874.4 MElem/sec
divisor_i64/rem 13/divisor     1.06      5.6±0.01µs 1384.0 MElem/sec    1.00      5.3±0.00µs 1460.6 MElem/sec
divisor_i64/rem 13/operator    1.00     10.7±1.33µs 730.8 MElem/sec     1.03     11.0±2.00µs 711.7 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.1±0.00µs  3.6 GElem/sec      1.00      2.1±0.00µs  3.6 GElem/sec
divisor_i64/rem 16/operator    1.00      6.4±0.39µs 1213.8 MElem/sec    1.05      6.7±0.55µs 1157.4 MElem/sec
divisor_i64/rem 7/divisor      1.06      5.6±0.00µs 1384.4 MElem/sec    1.00      5.3±0.00µs 1460.8 MElem/sec
divisor_i64/rem 7/operator     1.00     10.5±1.16µs 746.0 MElem/sec     1.08     11.3±1.88µs 689.2 MElem/sec
divisor_u32/div 13/divisor     1.00   1221.9±0.33ns  6.2 GElem/sec      1.00   1222.9±0.62ns  6.2 GElem/sec
divisor_u32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/div 16/divisor     1.00    363.2±0.13ns 21.0 GElem/sec      1.00    365.0±0.50ns 20.9 GElem/sec
divisor_u32/div 16/operator    1.00      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_u32/div 7/divisor      1.00   1461.3±1.48ns  5.2 GElem/sec      1.00   1460.7±0.58ns  5.2 GElem/sec
divisor_u32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/rem 13/divisor     1.00   1407.1±1.15ns  5.4 GElem/sec      1.00   1408.4±0.77ns  5.4 GElem/sec
divisor_u32/rem 13/operator    1.00      3.0±0.09µs  2.5 GElem/sec      1.00      3.0±0.09µs  2.5 GElem/sec
divisor_u32/rem 16/divisor     1.00    364.6±0.22ns 20.9 GElem/sec      1.00    363.8±0.21ns 21.0 GElem/sec
divisor_u32/rem 16/operator    1.00      2.9±0.07µs  2.6 GElem/sec      1.01      2.9±0.10µs  2.6 GElem/sec
divisor_u32/rem 7/divisor      1.00   1671.0±0.52ns  4.6 GElem/sec      1.00   1670.6±0.92ns  4.6 GElem/sec
divisor_u32/rem 7/operator     1.00      3.0±0.12µs  2.6 GElem/sec      1.00      3.0±0.13µs  2.6 GElem/sec
divisor_u64/div 13/divisor     1.02      2.2±0.00µs  3.5 GElem/sec      1.00      2.1±0.00µs  3.6 GElem/sec
divisor_u64/div 13/operator    1.00      8.9±0.00µs 873.6 MElem/sec     1.00      8.9±0.00µs 874.4 MElem/sec
divisor_u64/div 16/divisor     1.01    737.7±2.25ns 10.3 GElem/sec      1.00    728.4±1.20ns 10.5 GElem/sec
divisor_u64/div 16/operator    1.00      4.1±0.00µs 1886.8 MElem/sec    1.00      4.1±0.00µs 1891.1 MElem/sec
divisor_u64/div 7/divisor      1.02      5.2±0.00µs 1514.6 MElem/sec    1.00      5.0±0.02µs 1550.5 MElem/sec
divisor_u64/div 7/operator     1.00      9.5±0.00µs 826.4 MElem/sec     1.00      9.4±0.00µs 827.3 MElem/sec
divisor_u64/rem 13/divisor     1.00      4.7±0.00µs 1654.7 MElem/sec    1.00      4.7±0.00µs 1658.8 MElem/sec
divisor_u64/rem 13/operator    1.16     11.4±0.74µs 687.4 MElem/sec     1.00      9.8±0.79µs 799.8 MElem/sec
divisor_u64/rem 16/divisor     1.02    744.7±1.55ns 10.2 GElem/sec      1.00    733.1±1.15ns 10.4 GElem/sec
divisor_u64/rem 16/operator    1.20      8.0±0.13µs 973.1 MElem/sec     1.00      6.7±0.57µs 1165.3 MElem/sec
divisor_u64/rem 7/divisor      1.00      5.7±0.00µs 1372.0 MElem/sec    1.00      5.7±0.00µs 1374.8 MElem/sec
divisor_u64/rem 7/operator     1.02     14.2±0.51µs 551.1 MElem/sec     1.00     13.9±1.07µs 562.4 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-12q2mp2q-cbfb8ed3-jvsm

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

uname:

Linux bench-c6483181259-4101-fccjf 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
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
Resource Usage

base (merge-base)

Metric Value
Wall time 470.1s
Peak memory 10.3 MiB
Avg memory 9.9 MiB
CPU user 467.3s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 475.1s
Peak memory 10.2 MiB
Avg memory 9.8 MiB
CPU user 468.5s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-feature=+sve2
resources:
  arch: arm64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00      2.3±0.00µs  3.2 GElem/sec      1.08      2.5±0.00µs  3.0 GElem/sec
divisor_i32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/div 16/divisor     1.02   1382.2±2.35ns  5.5 GElem/sec      1.00   1350.6±3.33ns  5.6 GElem/sec
divisor_i32/div 16/operator    1.01      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_i32/div 7/divisor      1.00      2.3±0.00µs  3.2 GElem/sec      1.08      2.5±0.00µs  3.0 GElem/sec
divisor_i32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/rem 13/divisor     1.00      2.1±0.00µs  3.7 GElem/sec      1.10      2.3±0.00µs  3.3 GElem/sec
divisor_i32/rem 13/operator    1.00      2.9±0.00µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_i32/rem 16/divisor     1.03   1417.7±3.90ns  5.4 GElem/sec      1.00   1376.0±3.28ns  5.5 GElem/sec
divisor_i32/rem 16/operator    1.00      2.2±0.00µs  3.5 GElem/sec      1.01      2.2±0.00µs  3.5 GElem/sec
divisor_i32/rem 7/divisor      1.00      2.1±0.00µs  3.7 GElem/sec      1.10      2.3±0.00µs  3.3 GElem/sec
divisor_i32/rem 7/operator     1.00      2.9±0.00µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_i64/div 13/divisor     1.00      6.0±0.00µs 1305.1 MElem/sec    1.01      6.0±0.00µs 1297.6 MElem/sec
divisor_i64/div 13/operator    1.00      8.9±0.00µs 874.7 MElem/sec     1.00      8.9±0.02µs 874.1 MElem/sec
divisor_i64/div 16/divisor     1.02      2.7±0.01µs  2.8 GElem/sec      1.00      2.7±0.02µs  2.9 GElem/sec
divisor_i64/div 16/operator    1.00      4.1±0.00µs 1891.5 MElem/sec    1.00      4.1±0.00µs 1892.0 MElem/sec
divisor_i64/div 7/divisor      1.00      6.0±0.00µs 1306.3 MElem/sec    1.01      6.0±0.00µs 1297.3 MElem/sec
divisor_i64/div 7/operator     1.00      8.9±0.00µs 874.6 MElem/sec     1.00      8.9±0.00µs 874.8 MElem/sec
divisor_i64/rem 13/divisor     1.00      5.3±0.03µs 1461.8 MElem/sec    1.04      5.6±0.01µs 1402.5 MElem/sec
divisor_i64/rem 13/operator    1.00     10.0±0.02µs 777.5 MElem/sec     1.00     10.0±0.03µs 778.1 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.9±0.05µs  2.7 GElem/sec      1.01      2.9±0.07µs  2.6 GElem/sec
divisor_i64/rem 16/operator    1.00      4.3±0.04µs 1822.2 MElem/sec    1.00      4.3±0.03µs 1818.9 MElem/sec
divisor_i64/rem 7/divisor      1.01      5.6±0.00µs 1385.3 MElem/sec    1.00      5.6±0.06µs 1395.7 MElem/sec
divisor_i64/rem 7/operator     1.00     10.1±0.02µs 776.7 MElem/sec     1.00     10.1±0.03µs 777.1 MElem/sec
divisor_u32/div 13/divisor     1.00   1323.6±0.40ns  5.8 GElem/sec      1.00   1323.9±0.75ns  5.8 GElem/sec
divisor_u32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/div 16/divisor     1.00    707.6±0.39ns 10.8 GElem/sec      1.00    707.9±0.29ns 10.8 GElem/sec
divisor_u32/div 16/operator    1.00      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_u32/div 7/divisor      1.00   1488.7±0.65ns  5.1 GElem/sec      1.00   1486.9±2.68ns  5.1 GElem/sec
divisor_u32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/rem 13/divisor     1.00   1398.1±0.40ns  5.5 GElem/sec      1.00   1396.2±0.40ns  5.5 GElem/sec
divisor_u32/rem 13/operator    1.00      2.9±0.01µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_u32/rem 16/divisor     1.00    535.7±0.17ns 14.2 GElem/sec      1.00    535.7±0.29ns 14.2 GElem/sec
divisor_u32/rem 16/operator    1.00      2.2±0.00µs  3.5 GElem/sec      1.00      2.2±0.01µs  3.5 GElem/sec
divisor_u32/rem 7/divisor      1.00   1697.1±0.53ns  4.5 GElem/sec      1.00   1698.8±0.63ns  4.5 GElem/sec
divisor_u32/rem 7/operator     1.00      2.9±0.01µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_u64/div 13/divisor     1.00      3.6±0.00µs  2.1 GElem/sec      1.00      3.6±0.00µs  2.1 GElem/sec
divisor_u64/div 13/operator    1.00      8.9±0.00µs 873.8 MElem/sec     1.00      8.9±0.00µs 874.8 MElem/sec
divisor_u64/div 16/divisor     1.01   1563.4±0.97ns  4.9 GElem/sec      1.00   1543.8±1.59ns  4.9 GElem/sec
divisor_u64/div 16/operator    1.00      4.1±0.00µs 1887.1 MElem/sec    1.00      4.1±0.00µs 1892.1 MElem/sec
divisor_u64/div 7/divisor      1.00      5.2±0.01µs 1511.1 MElem/sec    1.00      5.2±0.00µs 1515.0 MElem/sec
divisor_u64/div 7/operator     1.00      9.5±0.02µs 825.8 MElem/sec     1.00      9.4±0.00µs 827.4 MElem/sec
divisor_u64/rem 13/divisor     1.00      4.7±0.00µs 1655.3 MElem/sec    1.00      4.7±0.00µs 1657.3 MElem/sec
divisor_u64/rem 13/operator    1.00      9.6±0.13µs 816.6 MElem/sec     1.04     10.0±0.10µs 784.4 MElem/sec
divisor_u64/rem 16/divisor     1.05  1517.9±12.36ns  5.0 GElem/sec      1.00  1443.9±25.99ns  5.3 GElem/sec
divisor_u64/rem 16/operator    1.00      4.2±0.04µs 1839.0 MElem/sec    1.01      4.3±0.03µs 1823.6 MElem/sec
divisor_u64/rem 7/divisor      1.00      5.4±0.01µs 1446.7 MElem/sec    1.05      5.7±0.05µs 1379.9 MElem/sec
divisor_u64/rem 7/operator     1.00     10.4±0.08µs 748.0 MElem/sec     1.02     10.7±0.03µs 732.6 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-ms5g

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

uname:

Linux bench-c6483180928-4099-84ml8 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
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
Resource Usage

base (merge-base)

Metric Value
Wall time 475.1s
Peak memory 10.1 MiB
Avg memory 9.8 MiB
CPU user 473.3s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 480.1s
Peak memory 10.1 MiB
Avg memory 9.8 MiB
CPU user 477.6s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: divisor

Comparing 4641eda (4641eda) to 46ab603 diff

Run configuration
run benchmark divisor
baseline:
  ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
  ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
  RUSTFLAGS: -C target-feature=+sve
resources:
  arch: arm64
shards: 1
Details
group                          base                                     changed
-----                          ----                                     -------
divisor_i32/div 13/divisor     1.00      2.3±0.00µs  3.2 GElem/sec      1.08      2.5±0.00µs  3.0 GElem/sec
divisor_i32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/div 16/divisor     1.04   1366.9±1.88ns  5.6 GElem/sec      1.00   1311.1±1.57ns  5.8 GElem/sec
divisor_i32/div 16/operator    1.00      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_i32/div 7/divisor      1.00      2.3±0.00µs  3.2 GElem/sec      1.08      2.5±0.00µs  3.0 GElem/sec
divisor_i32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_i32/rem 13/divisor     1.00      2.1±0.00µs  3.7 GElem/sec      1.09      2.3±0.00µs  3.3 GElem/sec
divisor_i32/rem 13/operator    1.00      2.9±0.00µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_i32/rem 16/divisor     1.04  1378.7±18.02ns  5.5 GElem/sec      1.00   1323.0±9.13ns  5.8 GElem/sec
divisor_i32/rem 16/operator    1.00      2.2±0.00µs  3.5 GElem/sec      1.01      2.2±0.00µs  3.5 GElem/sec
divisor_i32/rem 7/divisor      1.00      2.1±0.00µs  3.7 GElem/sec      1.09      2.3±0.00µs  3.3 GElem/sec
divisor_i32/rem 7/operator     1.00      2.9±0.01µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_i64/div 13/divisor     1.00      6.0±0.00µs 1306.3 MElem/sec    1.01      6.0±0.00µs 1296.9 MElem/sec
divisor_i64/div 13/operator    1.00      8.9±0.00µs 874.6 MElem/sec     1.00      8.9±0.00µs 874.7 MElem/sec
divisor_i64/div 16/divisor     1.00      2.6±0.01µs  2.9 GElem/sec      1.01      2.6±0.01µs  2.9 GElem/sec
divisor_i64/div 16/operator    1.00      4.1±0.00µs 1891.2 MElem/sec    1.00      4.1±0.01µs 1891.0 MElem/sec
divisor_i64/div 7/divisor      1.00      6.0±0.00µs 1305.9 MElem/sec    1.01      6.0±0.00µs 1297.5 MElem/sec
divisor_i64/div 7/operator     1.00      8.9±0.00µs 874.6 MElem/sec     1.00      8.9±0.00µs 874.7 MElem/sec
divisor_i64/rem 13/divisor     1.02      5.6±0.00µs 1385.2 MElem/sec    1.00      5.5±0.04µs 1408.4 MElem/sec
divisor_i64/rem 13/operator    1.01      9.8±0.16µs 795.5 MElem/sec     1.00      9.8±0.21µs 799.9 MElem/sec
divisor_i64/rem 16/divisor     1.00      2.3±0.00µs  3.3 GElem/sec      1.00      2.3±0.02µs  3.3 GElem/sec
divisor_i64/rem 16/operator    1.01      4.2±0.02µs 1838.3 MElem/sec    1.00      4.2±0.03µs 1853.7 MElem/sec
divisor_i64/rem 7/divisor      1.02      5.6±0.00µs 1385.4 MElem/sec    1.00      5.5±0.04µs 1407.7 MElem/sec
divisor_i64/rem 7/operator     1.00      9.7±0.19µs 805.9 MElem/sec     1.00      9.7±0.19µs 808.3 MElem/sec
divisor_u32/div 13/divisor     1.00   1327.3±0.58ns  5.7 GElem/sec      1.00   1327.8±0.87ns  5.7 GElem/sec
divisor_u32/div 13/operator    1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/div 16/divisor     1.00    706.3±0.22ns 10.8 GElem/sec      1.00    706.7±0.25ns 10.8 GElem/sec
divisor_u32/div 16/operator    1.00      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_u32/div 7/divisor      1.00   1531.6±0.63ns  5.0 GElem/sec      1.00   1531.5±0.75ns  5.0 GElem/sec
divisor_u32/div 7/operator     1.00      2.8±0.00µs  2.8 GElem/sec      1.00      2.8±0.00µs  2.8 GElem/sec
divisor_u32/rem 13/divisor     1.00   1397.7±0.53ns  5.5 GElem/sec      1.00   1398.0±0.92ns  5.5 GElem/sec
divisor_u32/rem 13/operator    1.00      2.9±0.00µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_u32/rem 16/divisor     1.00    536.8±0.24ns 14.2 GElem/sec      1.00    537.3±0.48ns 14.2 GElem/sec
divisor_u32/rem 16/operator    1.00      2.1±0.00µs  3.7 GElem/sec      1.00      2.1±0.00µs  3.7 GElem/sec
divisor_u32/rem 7/divisor      1.00   1687.0±0.44ns  4.5 GElem/sec      1.00   1687.4±1.01ns  4.5 GElem/sec
divisor_u32/rem 7/operator     1.00      2.9±0.00µs  2.6 GElem/sec      1.00      2.9±0.01µs  2.6 GElem/sec
divisor_u64/div 13/divisor     1.00      3.6±0.00µs  2.1 GElem/sec      1.01      3.6±0.01µs  2.1 GElem/sec
divisor_u64/div 13/operator    1.00      8.9±0.00µs 873.7 MElem/sec     1.00      9.0±0.01µs 870.2 MElem/sec
divisor_u64/div 16/divisor     1.01   1566.6±1.15ns  4.9 GElem/sec      1.00   1554.6±1.27ns  4.9 GElem/sec
divisor_u64/div 16/operator    1.00      4.1±0.00µs 1886.4 MElem/sec    1.00      4.1±0.00µs 1890.2 MElem/sec
divisor_u64/div 7/divisor      1.03      5.2±0.01µs 1511.1 MElem/sec    1.00      5.0±0.04µs 1549.4 MElem/sec
divisor_u64/div 7/operator     1.00      9.5±0.00µs 826.5 MElem/sec     1.00      9.4±0.01µs 827.0 MElem/sec
divisor_u64/rem 13/divisor     1.00      4.7±0.00µs 1653.2 MElem/sec    1.00      4.7±0.01µs 1657.8 MElem/sec
divisor_u64/rem 13/operator    1.01      9.6±0.14µs 809.6 MElem/sec     1.00      9.5±0.16µs 819.4 MElem/sec
divisor_u64/rem 16/divisor     1.00   1401.8±1.59ns  5.4 GElem/sec      1.08   1512.4±4.59ns  5.0 GElem/sec
divisor_u64/rem 16/operator    1.00      4.3±0.04µs 1836.0 MElem/sec    1.00      4.3±0.04µs 1832.5 MElem/sec
divisor_u64/rem 7/divisor      1.00      5.4±0.02µs 1438.2 MElem/sec    1.01      5.5±0.01µs 1419.3 MElem/sec
divisor_u64/rem 7/operator     1.00     10.6±0.09µs 740.1 MElem/sec     1.00     10.6±0.09µs 739.2 MElem/sec

Per-runner information
divisor — shard 1/1

Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-6k77

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

uname:

Linux bench-c6483180567-4100-222c9 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisor
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
Resource Usage

base (merge-base)

Metric Value
Wall time 480.1s
Peak memory 10.2 MiB
Avg memory 9.8 MiB
CPU user 477.3s
CPU sys 0.0s
Peak spill 0 B

branch

Metric Value
Wall time 480.1s
Peak memory 10.1 MiB
Avg memory 9.8 MiB
CPU user 475.6s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

@sdf-jkl

sdf-jkl commented Oct 29, 2026 •

Copy link
Copy Markdown
Member Author

🤖 💬 : All nine bot comparisons have completed, including the additional SVE, SVE2, and Neoverse-V2 runs. The rewrite has substantial x86 wins, but the ARM results remain mixed.

Target i32 division i32 remainder i64 division i64 remainder
x86-64 2.08–2.09× 1.73–1.76× 1.13× 0.96×
x86-64-v2 1.85–1.97× 1.81–1.87× 1.16–1.18× 1.70–1.72×
x86-64-v3 0.76–0.81× 0.90–0.97× 1.06–1.07× 1.03–1.07×
x86-64-v4 0.91–0.92× 0.92–0.93× 1.27–1.28× 1.34–1.35×
x86 native 0.91–0.95× 0.93–0.94× 1.20–1.22× 1.32–1.33×
ARM default (NEON) 0.88× 0.85× 0.99× 0.76×
ARM +sve 0.93× 0.92× 0.99× 1.02×
ARM +sve2 0.93× 0.91× 0.99× 0.96–1.01×
ARM neoverse-v2 0.96× 0.96× 0.99× 1.06×

This branch has not been deployed

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

Labels

arrow-core Core crates related to representing arrow data

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants