Recorded 2026-09-08 , reducers 0.4.0 + overflow fix (eb27fc0) . Environment and setup · Complete output · Excluded baselines
uv run --no-sync python benchmarks/benchmark_axis.py --repeats 15 --warmups 3
Times are median milliseconds per call over 15 samples after 3 warmups; the lowest and highest samples are discarded. Ratios above 1 favor reducers; bold means a ratio above 0.95 (within 5%). - means unavailable; n/a means the baseline failed the accuracy check. Ratios use unrounded times.
Inputs are prebuilt contiguous arrays; reducers uses its default validation. var uses ddof=0, std uses ddof=1. Averages use one weight per reduced-axis position, uniform on [0.5, 1.5). NumPy nanaverage uses a masked array prepared before timing. Percentile requests [16, 50, 84]; quantile requests [0.16, 0.50, 0.84]. NaN-aware inputs have a NaN every 97 elements. Axis nanpercentile/nanquantile are outside this matrix; no speed claim is made for them. Cheap calls can be sensitive to scheduling noise.
Plain, float64
(100, 100, 100), axis=0 (100, 100, 100), axis=-1 (11, 100, 100), axis=0 (31, 100, 100), axis=0 (11, 512, 512), axis=0
mean
0.16
-
0.10
1.57x
-
average
0.28
-
0.38
0.74x
-
median
8.68
7.77
0.66
13.24x
11.84x
var
0.61
-
0.17
3.53x
-
std
0.61
-
0.17
3.66x
-
min
0.17
-
0.11
1.53x
-
max
0.17
-
0.13
1.30x
-
minmax
0.34
-
0.14
2.51x
-
sum
0.15
-
0.10
1.56x
-
percentile
14.30
-
1.70
8.43x
-
quantile
14.21
-
1.64
8.65x
-
mean
0.18
-
0.07
2.49x
-
average
0.48
-
0.15
3.24x
-
median
8.36
7.43
0.62
13.49x
11.99x
var
0.69
-
0.19
3.55x
-
std
0.70
-
0.20
3.55x
-
min
0.12
-
0.15
0.81x
-
max
0.12
-
0.15
0.80x
-
minmax
0.26
-
0.19
1.36x
-
sum
0.17
-
0.07
2.41x
-
percentile
13.65
-
1.55
8.79x
-
quantile
13.83
-
1.57
8.80x
-
mean
0.02
-
0.02
0.91x
-
average
0.04
-
0.06
0.78x
-
median
0.84
0.64
0.23
3.69x
2.82x
var
0.07
-
0.07
0.99x
-
std
0.08
-
0.08
1.00x
-
min
0.02
-
0.03
0.77x
-
max
0.02
-
0.03
0.77x
-
minmax
0.04
-
0.04
1.00x
-
sum
0.02
-
0.03
0.84x
-
percentile
1.26
-
0.61
2.05x
-
quantile
1.23
-
0.63
1.97x
-
mean
0.06
-
0.06
0.99x
-
average
0.10
-
0.14
0.77x
-
median
2.99
2.42
0.31
9.50x
7.69x
var
0.19
-
0.17
1.11x
-
std
0.20
-
0.17
1.13x
-
min
0.05
-
0.06
0.84x
-
max
0.05
-
0.06
0.84x
-
minmax
0.11
-
0.10
1.08x
-
sum
0.05
-
0.06
0.82x
-
percentile
4.99
-
0.83
6.03x
-
quantile
4.96
-
0.83
5.95x
-
mean
0.52
-
0.24
2.20x
-
average
0.89
-
0.90
0.99x
-
median
29.77
23.44
3.29
9.06x
7.13x
var
1.97
-
0.44
4.44x
-
std
1.97
-
0.45
4.37x
-
min
0.51
-
0.21
2.42x
-
max
0.49
-
0.24
2.06x
-
minmax
0.99
-
0.34
2.91x
-
sum
0.54
-
0.23
2.38x
-
percentile
35.83
-
10.26
3.49x
-
quantile
35.90
-
10.12
3.55x
-
Plain, float32
(100, 100, 100), axis=0 (100, 100, 100), axis=-1 (11, 100, 100), axis=0 (31, 100, 100), axis=0 (11, 512, 512), axis=0
mean
0.07
-
0.08
0.87x
-
average
0.13
-
0.34
0.39x
-
median
8.79
7.88
0.67
13.20x
11.82x
var
0.25
-
0.15
1.66x
-
std
0.26
-
0.15
1.74x
-
min
0.07
-
0.09
0.73x
-
max
0.06
-
0.09
0.71x
-
minmax
0.13
-
0.11
1.21x
-
sum
0.06
-
0.10
0.60x
-
percentile
14.54
-
1.77
8.21x
-
quantile
15.01
-
1.72
8.73x
-
mean
0.17
-
0.10
1.66x
-
average
0.31
-
0.20
1.60x
-
median
8.25
7.67
0.65
12.76x
11.86x
var
0.52
-
0.23
2.23x
-
std
0.52
-
0.25
2.09x
-
min
0.10
-
0.10
1.01x
-
max
0.11
-
0.10
1.04x
-
minmax
0.20
-
0.12
1.67x
-
sum
0.17
-
0.11
1.54x
-
percentile
13.97
-
1.60
8.75x
-
quantile
13.77
-
1.64
8.37x
-
mean
0.01
-
0.02
0.79x
-
average
0.02
-
0.05
0.46x
-
median
0.89
0.72
0.19
4.74x
3.79x
var
0.04
-
0.06
0.67x
-
std
0.04
-
0.07
0.65x
-
min
0.01
-
0.01
0.64x
-
max
0.01
-
0.01
0.63x
-
minmax
0.02
-
0.02
0.89x
-
sum
0.01
-
0.02
0.57x
-
percentile
1.25
-
0.59
2.12x
-
quantile
1.25
-
0.60
2.06x
-
mean
0.03
-
0.04
0.72x
-
average
0.05
-
0.13
0.40x
-
median
3.02
2.59
0.28
10.94x
9.41x
var
0.09
-
0.15
0.60x
-
std
0.09
-
0.18
0.53x
-
min
0.02
-
0.03
0.80x
-
max
0.02
-
0.03
0.65x
-
minmax
0.04
-
0.05
0.92x
-
sum
0.02
-
0.04
0.60x
-
percentile
5.15
-
0.74
6.93x
-
quantile
5.08
-
0.74
6.84x
-
mean
0.37
-
0.20
1.85x
-
average
0.44
-
0.87
0.50x
-
median
29.52
23.52
2.30
12.85x
10.24x
var
1.17
-
0.37
3.12x
-
std
1.15
-
0.39
2.92x
-
min
0.25
-
0.15
1.65x
-
max
0.25
-
0.14
1.70x
-
minmax
0.48
-
0.20
2.37x
-
sum
0.27
-
0.17
1.62x
-
percentile
36.05
-
13.33
2.70x
-
quantile
35.99
-
13.45
2.68x
-
NaN-aware, float64
(100, 100, 100), axis=0 (100, 100, 100), axis=-1 (11, 100, 100), axis=0 (31, 100, 100), axis=0 (11, 512, 512), axis=0
nanmean
0.94
0.73
0.17
5.37x
4.18x
nanaverage
3.70
-
0.45
8.31x
-
nanmedian
28.10
7.50
0.47
59.39x
15.85x
nanvar
2.10
1.66
0.27
7.74x
6.12x
nanstd
2.10
1.69
0.28
7.54x
6.05x
nanmin
0.17
0.65
0.09
1.88x
7.12x
nanmax
0.17
0.66
0.09
1.84x
6.99x
nanminmax
0.35
1.33
0.13
2.61x
9.98x
nansum
0.49
0.64
0.19
2.63x
3.40x
nanmean
0.71
0.66
0.15
4.70x
4.39x
nanaverage
3.95
-
0.16
25.07x
-
nanmedian
25.48
8.04
0.96
26.48x
8.35x
nanvar
1.96
1.62
0.32
6.12x
5.06x
nanstd
1.95
1.65
0.32
6.02x
5.08x
nanmin
0.12
0.64
0.12
1.06x
5.50x
nanmax
0.13
0.64
0.12
1.05x
5.27x
nanminmax
0.25
1.32
0.17
1.50x
7.87x
nansum
0.50
0.63
0.15
3.38x
4.26x
nanmean
0.12
0.03
0.05
2.11x
0.62x
nanaverage
0.49
-
0.08
6.30x
-
nanmedian
1.80
0.71
0.20
8.99x
3.55x
nanvar
0.25
0.09
0.10
2.46x
0.92x
nanstd
0.26
0.10
0.10
2.50x
0.98x
nanmin
0.02
0.04
0.02
1.05x
2.08x
nanmax
0.02
0.04
0.02
1.04x
2.07x
nanminmax
0.04
0.08
0.03
1.24x
2.45x
nansum
0.06
0.04
0.05
1.09x
0.72x
nanmean
0.29
0.14
0.14
2.14x
0.99x
nanaverage
1.18
-
0.20
5.88x
-
nanmedian
6.48
2.56
0.31
20.56x
8.14x
nanvar
0.66
0.37
0.25
2.62x
1.45x
nanstd
0.67
0.38
0.25
2.63x
1.48x
nanmin
0.06
0.13
0.05
1.03x
2.43x
nanmax
0.06
0.13
0.05
1.02x
2.43x
nanminmax
0.11
0.26
0.09
1.22x
2.91x
nansum
0.16
0.13
0.13
1.16x
0.98x
nanmean
2.92
1.45
0.39
7.49x
3.72x
nanaverage
11.75
-
1.09
10.77x
-
nanmedian
57.99
24.46
2.93
19.78x
8.34x
nanvar
6.45
5.43
0.59
10.96x
9.23x
nanstd
6.78
5.13
0.64
10.61x
8.03x
nanmin
0.51
1.37
0.18
2.78x
7.52x
nanmax
0.52
1.39
0.20
2.55x
6.78x
nanminmax
0.98
2.76
0.67
1.47x
4.14x
nansum
1.53
1.34
0.38
4.09x
3.57x
NaN-aware, float32
(100, 100, 100), axis=0 (100, 100, 100), axis=-1 (11, 100, 100), axis=0 (31, 100, 100), axis=0 (11, 512, 512), axis=0
nanmean
0.74
0.69
0.19
3.86x
3.63x
nanaverage
3.11
-
0.48
6.47x
-
nanmedian
26.48
7.41
0.47
56.54x
15.81x
nanvar
1.61
1.62
0.30
5.38x
5.39x
nanstd
1.63
1.64
0.30
5.38x
5.39x
nanmin
0.06
0.63
0.07
0.93x
9.08x
nanmax
0.07
0.61
0.07
0.92x
8.43x
nanminmax
0.13
1.26
0.09
1.48x
14.05x
nansum
0.30
0.63
0.19
1.60x
3.32x
nanmean
0.65
0.66
0.16
4.06x
4.14x
nanaverage
3.46
-
0.22
15.80x
-
nanmedian
25.28
7.47
0.48
52.40x
15.49x
nanvar
1.65
1.61
0.26
6.26x
6.11x
nanstd
1.65
1.63
0.28
5.86x
5.78x
nanmin
0.10
0.66
0.09
1.15x
7.37x
nanmax
0.10
0.61
0.09
1.12x
6.63x
nanminmax
0.21
1.26
0.10
1.98x
12.11x
nansum
0.41
0.66
0.15
2.64x
4.27x
nanmean
0.10
0.04
0.06
1.66x
0.69x
nanaverage
0.43
-
0.08
5.63x
-
nanmedian
1.77
0.77
0.15
11.84x
5.13x
nanvar
0.21
0.09
0.10
1.99x
0.91x
nanstd
0.21
0.10
0.11
1.95x
0.92x
nanmin
0.01
0.04
0.01
1.18x
4.99x
nanmax
0.01
0.04
0.01
1.17x
4.98x
nanminmax
0.02
0.08
0.02
1.29x
5.48x
nansum
0.04
0.04
0.06
0.67x
0.69x
nanmean
0.24
0.13
0.15
1.63x
0.88x
nanaverage
1.06
-
0.20
5.29x
-
nanmedian
6.43
2.55
0.32
19.96x
7.92x
nanvar
0.52
0.36
0.27
1.94x
1.33x
nanstd
0.52
0.35
0.27
1.92x
1.27x
nanmin
0.02
0.13
0.02
1.09x
6.18x
nanmax
0.02
0.13
0.02
1.09x
6.21x
nanminmax
0.05
0.26
0.04
1.20x
6.87x
nansum
0.10
0.13
0.15
0.67x
0.88x
nanmean
2.38
1.42
0.38
6.26x
3.73x
nanaverage
10.28
-
1.08
9.48x
-
nanmedian
52.74
24.55
3.00
17.61x
8.19x
nanvar
5.13
5.38
0.60
8.61x
9.02x
nanstd
5.26
5.47
0.60
8.69x
9.05x
nanmin
0.27
1.38
0.12
2.34x
11.79x
nanmax
0.27
1.38
0.11
2.34x
12.01x
nanminmax
0.52
2.75
0.19
2.73x
14.39x
nansum
0.95
1.34
0.41
2.34x
3.30x