crypto/elliptic: utilize faster z14 multiply/square instructions (when available)
In the s390x assembly implementation of NIST P-256 curve, utilize faster multiply/square
instructions introduced in the z14. These new instructions are designed for crypto
and are constant time. The algorithm is unchanged except for faster
multiplication when run on a z14 or later. On z13, the original mutiplication
(also constant time) is used.
P-256 performance is critical in many applications, such as Blockchain.
name old time new time delta
BaseMultP256 24396 ns/op 21564 ns/op 1.13x
ScalarMultP256 87546 ns/op 72813 ns/op. 1.20x
Change-Id: I7e6d8b420fac56d5f9cc13c9423e2080df854bac
Reviewed-on: https://go-review.googlesource.com/c/146022
Reviewed-by: Michael Munday <mike.munday@ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Michael Munday <mike.munday@ibm.com>
cmd/go/internal/modfetch: make Repo.Zip write to an io.Writer instead of a temporary file
This will be used to eliminate a redundant copy in CL 145178.
(It also decouples two design points that were previously coupled: the
destination of the zip output and the program logic to write that
output.)
Updates #26794
Change-Id: I6cfd5a33c162c0016a1b83a278003684560a3772
Reviewed-on: https://go-review.googlesource.com/c/151341
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
math/big: allocate less for single-Word nats
For many uses of math/big, most numbers are small in practice.
Prior to this change, big.NewInt allocated a minimum of five Words:
one to hold the value, and four as extra capacity.
In most cases, this extra capacity is waste.
Worse, allocating a single Word uses a fast malloc path for tiny allocs;
allocating five Words is more expensive in CPU as well as memory.
This change is a simple fix: Treat a request for one Word at its word.
I experimented with more complicated fixes and did not find anything
that outperformed this easy fix.
On some real world programs, this is a clear win.
The compiler:
name old alloc/op new alloc/op delta
Template 37.1MB ± 0% 37.0MB ± 0% -0.23% (p=0.008 n=5+5)
Unicode 29.2MB ± 0% 28.5MB ± 0% -2.48% (p=0.008 n=5+5)
GoTypes 133MB ± 0% 133MB ± 0% -0.05% (p=0.008 n=5+5)
Compiler 628MB ± 0% 628MB ± 0% -0.06% (p=0.008 n=5+5)
SSA 2.04GB ± 0% 2.03GB ± 0% -0.14% (p=0.008 n=5+5)
Flate 24.7MB ± 0% 24.6MB ± 0% -0.23% (p=0.008 n=5+5)
GoParser 29.6MB ± 0% 29.6MB ± 0% -0.07% (p=0.008 n=5+5)
Reflect 82.3MB ± 0% 82.2MB ± 0% -0.05% (p=0.008 n=5+5)
Tar 36.2MB ± 0% 36.2MB ± 0% -0.12% (p=0.008 n=5+5)
XML 49.5MB ± 0% 49.4MB ± 0% -0.23% (p=0.008 n=5+5)
[Geo mean] 85.1MB 84.8MB -0.37%
name old allocs/op new allocs/op delta
Template 364k ± 0% 364k ± 0% ~ (p=0.476 n=5+5)
Unicode 341k ± 0% 341k ± 0% ~ (p=0.690 n=5+5)
GoTypes 1.37M ± 0% 1.37M ± 0% ~ (p=0.444 n=5+5)
Compiler 5.50M ± 0% 5.50M ± 0% +0.02% (p=0.008 n=5+5)
SSA 16.0M ± 0% 16.0M ± 0% +0.01% (p=0.008 n=5+5)
Flate 238k ± 0% 238k ± 0% ~ (p=0.222 n=5+5)
GoParser 305k ± 0% 305k ± 0% ~ (p=0.841 n=5+5)
Reflect 976k ± 0% 976k ± 0% ~ (p=0.222 n=5+5)
Tar 354k ± 0% 354k ± 0% ~ (p=0.103 n=5+5)
XML 450k ± 0% 450k ± 0% ~ (p=0.151 n=5+5)
[Geo mean] 837k 837k +0.01%
go.skylark.net (at
ea6d2813de75ded8d157b9540bc3d3ad0b688623):
name old alloc/op new alloc/op delta
Hashtable-8 456kB ± 0% 299kB ± 0% -34.33% (p=0.000 n=9+9)
/bench_builtin_method-8 220kB ± 0% 190kB ± 0% -13.55% (p=0.000 n=9+10)
name old allocs/op new allocs/op delta
Hashtable-8 7.84k ± 0% 7.84k ± 0% ~ (all equal)
/bench_builtin_method-8 7.49k ± 0% 7.49k ± 0% ~ (all equal)
The math/big benchmarks are messy, which is predictable, since they
naturally exercise the bigger-than-one-word code more.
Also worth noting is that many of the benchmarks have very high variance.
I've omitted the opVV and opVW benchmarks, as they are unrelated.
name old time/op new time/op delta
DecimalConversion-8 92.5µs ± 1% 90.6µs ± 0% -2.12% (p=0.000 n=17+19)
FloatString/100-8 867ns ± 0% 871ns ± 0% +0.50% (p=0.000 n=18+18)
FloatString/1000-8 26.4µs ± 1% 26.5µs ± 1% ~ (p=0.396 n=20+19)
FloatString/10000-8 2.15ms ± 2% 2.16ms ± 2% ~ (p=0.089 n=19+20)
FloatString/100000-8 209ms ± 1% 209ms ± 1% ~ (p=0.583 n=19+19)
FloatAdd/10-8 63.5ns ± 2% 64.1ns ± 6% ~ (p=0.389 n=19+19)
FloatAdd/100-8 66.0ns ± 2% 65.8ns ± 2% ~ (p=0.825 n=20+20)
FloatAdd/1000-8 93.9ns ± 1% 94.3ns ± 1% ~ (p=0.273 n=19+20)
FloatAdd/10000-8 347ns ± 2% 342ns ± 1% -1.50% (p=0.000 n=18+18)
FloatAdd/100000-8 2.78µs ± 1% 2.78µs ± 2% ~ (p=0.961 n=20+19)
FloatSub/10-8 56.9ns ± 2% 57.8ns ± 3% +1.59% (p=0.001 n=19+19)
FloatSub/100-8 58.2ns ± 2% 58.9ns ± 2% +1.25% (p=0.004 n=20+20)
FloatSub/1000-8 74.9ns ± 1% 74.4ns ± 1% -0.76% (p=0.000 n=19+20)
FloatSub/10000-8 223ns ± 1% 220ns ± 2% -1.29% (p=0.000 n=16+20)
FloatSub/100000-8 1.66µs ± 1% 1.66µs ± 2% ~ (p=0.147 n=20+20)
ParseFloatSmallExp-8 8.38µs ± 0% 8.59µs ± 0% +2.48% (p=0.000 n=19+19)
ParseFloatLargeExp-8 31.1µs ± 0% 32.0µs ± 0% +3.04% (p=0.000 n=16+17)
GCD10x10/WithoutXY-8 115ns ± 1% 99ns ± 3% -14.07% (p=0.000 n=20+20)
GCD10x10/WithXY-8 322ns ± 0% 312ns ± 0% -3.11% (p=0.000 n=18+13)
GCD10x100/WithoutXY-8 233ns ± 1% 219ns ± 1% -5.73% (p=0.000 n=19+17)
GCD10x100/WithXY-8 709ns ± 0% 759ns ± 0% +7.04% (p=0.000 n=19+19)
GCD10x1000/WithoutXY-8 653ns ± 1% 642ns ± 1% -1.69% (p=0.000 n=17+20)
GCD10x1000/WithXY-8 1.35µs ± 0% 1.35µs ± 1% ~ (p=0.255 n=20+16)
GCD10x10000/WithoutXY-8 4.57µs ± 1% 4.61µs ± 1% +0.95% (p=0.000 n=18+17)
GCD10x10000/WithXY-8 6.82µs ± 0% 6.84µs ± 0% +0.27% (p=0.000 n=16+17)
GCD10x100000/WithoutXY-8 43.9µs ± 1% 44.0µs ± 1% +0.28% (p=0.000 n=18+17)
GCD10x100000/WithXY-8 60.6µs ± 0% 60.6µs ± 0% ~ (p=0.907 n=18+18)
GCD100x100/WithoutXY-8 1.13µs ± 0% 1.21µs ± 0% +6.39% (p=0.000 n=19+19)
GCD100x100/WithXY-8 1.82µs ± 0% 1.92µs ± 0% +5.24% (p=0.000 n=19+17)
GCD100x1000/WithoutXY-8 2.00µs ± 0% 2.03µs ± 1% +1.61% (p=0.000 n=18+16)
GCD100x1000/WithXY-8 3.22µs ± 0% 3.20µs ± 1% -0.83% (p=0.000 n=19+19)
GCD100x10000/WithoutXY-8 9.28µs ± 1% 9.17µs ± 1% -1.25% (p=0.000 n=18+19)
GCD100x10000/WithXY-8 13.5µs ± 0% 13.3µs ± 0% -1.12% (p=0.000 n=18+19)
GCD100x100000/WithoutXY-8 80.4µs ± 0% 78.6µs ± 0% -2.25% (p=0.000 n=19+19)
GCD100x100000/WithXY-8 114µs ± 0% 112µs ± 0% -1.46% (p=0.000 n=19+17)
GCD1000x1000/WithoutXY-8 12.9µs ± 1% 12.9µs ± 2% -0.50% (p=0.014 n=20+19)
GCD1000x1000/WithXY-8 19.6µs ± 1% 19.6µs ± 2% -0.28% (p=0.040 n=17+18)
GCD1000x10000/WithoutXY-8 22.4µs ± 0% 22.4µs ± 2% ~ (p=0.220 n=19+19)
GCD1000x10000/WithXY-8 57.0µs ± 0% 56.5µs ± 0% -0.87% (p=0.000 n=20+20)
GCD1000x100000/WithoutXY-8 116µs ± 0% 115µs ± 0% -0.49% (p=0.000 n=18+19)
GCD1000x100000/WithXY-8 410µs ± 0% 411µs ± 0% ~ (p=0.052 n=19+19)
GCD10000x10000/WithoutXY-8 247µs ± 1% 244µs ± 1% -0.92% (p=0.000 n=19+19)
GCD10000x10000/WithXY-8 476µs ± 1% 473µs ± 1% -0.48% (p=0.009 n=19+19)
GCD10000x100000/WithoutXY-8 573µs ± 1% 571µs ± 1% -0.45% (p=0.012 n=20+20)
GCD10000x100000/WithXY-8 3.35ms ± 1% 3.35ms ± 1% ~ (p=0.444 n=20+19)
GCD100000x100000/WithoutXY-8 12.0ms ± 2% 11.9ms ± 2% ~ (p=0.276 n=18+20)
GCD100000x100000/WithXY-8 27.3ms ± 1% 27.3ms ± 1% ~ (p=0.792 n=20+19)
Hilbert-8 672µs ± 0% 611µs ± 0% -9.02% (p=0.000 n=19+19)
Binomial-8 1.40µs ± 0% 1.18µs ± 0% -15.69% (p=0.000 n=16+14)
QuoRem-8 2.20µs ± 1% 2.17µs ± 1% -1.13% (p=0.000 n=19+19)
Exp-8 4.10ms ± 1% 4.11ms ± 1% ~ (p=0.296 n=20+19)
Exp2-8 4.11ms ± 1% 4.12ms ± 1% ~ (p=0.429 n=20+20)
Bitset-8 8.67ns ± 6% 8.74ns ± 4% ~ (p=0.139 n=19+17)
BitsetNeg-8 43.6ns ± 1% 43.8ns ± 2% +0.61% (p=0.036 n=20+20)
BitsetOrig-8 77.5ns ± 1% 68.4ns ± 1% -11.77% (p=0.000 n=19+20)
BitsetNegOrig-8 145ns ± 1% 141ns ± 1% -2.87% (p=0.000 n=19+20)
ModSqrt225_Tonelli-8 324µs ± 1% 324µs ± 1% ~ (p=0.409 n=18+20)
ModSqrt225_3Mod4-8 98.9µs ± 1% 99.1µs ± 1% ~ (p=0.298 n=19+18)
ModSqrt231_Tonelli-8 337µs ± 1% 337µs ± 1% ~ (p=0.718 n=20+18)
ModSqrt231_5Mod8-8 115µs ± 1% 114µs ± 1% -0.22% (p=0.050 n=20+20)
ModInverse-8 895ns ± 0% 869ns ± 1% -2.83% (p=0.000 n=17+17)
Sqrt-8 28.1µs ± 1% 28.1µs ± 0% -0.28% (p=0.000 n=16+20)
IntSqr/1-8 10.8ns ± 3% 10.5ns ± 3% -2.51% (p=0.000 n=19+17)
IntSqr/2-8 30.5ns ± 2% 30.3ns ± 4% -0.71% (p=0.035 n=18+18)
IntSqr/3-8 40.1ns ± 1% 40.1ns ± 1% ~ (p=0.710 n=20+17)
IntSqr/5-8 65.3ns ± 1% 65.4ns ± 2% ~ (p=0.744 n=19+19)
IntSqr/8-8 101ns ± 1% 102ns ± 0% ~ (p=0.234 n=19+20)
IntSqr/10-8 138ns ± 0% 138ns ± 2% ~ (p=0.827 n=18+18)
IntSqr/20-8 378ns ± 1% 378ns ± 1% ~ (p=0.479 n=18+18)
IntSqr/30-8 637ns ± 0% 638ns ± 1% ~ (p=0.051 n=18+20)
IntSqr/50-8 1.34µs ± 2% 1.34µs ± 1% ~ (p=0.970 n=18+19)
IntSqr/80-8 2.78µs ± 0% 2.78µs ± 1% -0.18% (p=0.006 n=19+17)
IntSqr/100-8 3.98µs ± 0% 3.98µs ± 0% ~ (p=0.057 n=17+19)
IntSqr/200-8 13.5µs ± 0% 13.5µs ± 1% -0.33% (p=0.000 n=19+17)
IntSqr/300-8 25.3µs ± 1% 25.3µs ± 1% ~ (p=0.361 n=19+20)
IntSqr/500-8 62.9µs ± 0% 62.9µs ± 1% ~ (p=0.899 n=17+17)
IntSqr/800-8 128µs ± 1% 127µs ± 1% -0.32% (p=0.016 n=18+20)
IntSqr/1000-8 192µs ± 0% 192µs ± 1% ~ (p=0.916 n=17+18)
Div/20/10-8 34.9ns ± 2% 35.6ns ± 1% +2.01% (p=0.000 n=20+20)
Div/200/100-8 218ns ± 1% 215ns ± 2% -1.43% (p=0.000 n=18+18)
Div/2000/1000-8 1.16µs ± 1% 1.15µs ± 1% -1.04% (p=0.000 n=19+20)
Div/20000/10000-8 35.7µs ± 1% 35.4µs ± 1% -0.69% (p=0.000 n=19+18)
Div/200000/100000-8 2.89ms ± 1% 2.88ms ± 1% -0.62% (p=0.007 n=19+20)
Mul-8 9.28ms ± 1% 9.27ms ± 1% ~ (p=0.563 n=18+18)
ZeroShifts/Shl-8 712ns ± 6% 716ns ± 7% ~ (p=0.597 n=20+20)
ZeroShifts/ShlSame-8 4.00ns ± 1% 4.06ns ± 5% ~ (p=0.162 n=18+20)
ZeroShifts/Shr-8 714ns ±10% 1285ns ±156% ~ (p=0.250 n=20+20)
ZeroShifts/ShrSame-8 4.00ns ± 1% 4.09ns ±10% +2.34% (p=0.048 n=16+19)
Exp3Power/0x10-8 154ns ± 0% 159ns ±13% ~ (p=0.197 n=14+20)
Exp3Power/0x40-8 171ns ± 1% 175ns ± 8% ~ (p=0.058 n=16+19)
Exp3Power/0x100-8 287ns ± 0% 316ns ± 4% +10.03% (p=0.000 n=17+19)
Exp3Power/0x400-8 698ns ± 1% 801ns ± 6% +14.75% (p=0.000 n=19+20)
Exp3Power/0x1000-8 2.87µs ± 0% 3.65µs ± 6% +27.24% (p=0.000 n=18+18)
Exp3Power/0x4000-8 21.9µs ± 1% 28.7µs ± 8% +31.09% (p=0.000 n=18+20)
Exp3Power/0x10000-8 204µs ± 0% 267µs ± 9% +30.81% (p=0.000 n=20+20)
Exp3Power/0x40000-8 1.86ms ± 0% 2.26ms ± 5% +21.68% (p=0.000 n=18+19)
Exp3Power/0x100000-8 17.5ms ± 1% 20.7ms ± 7% +18.39% (p=0.000 n=19+20)
Exp3Power/0x400000-8 156ms ± 0% 172ms ± 6% +10.54% (p=0.000 n=19+20)
Fibo-8 26.9ms ± 1% 27.5ms ± 3% +2.32% (p=0.000 n=19+19)
NatSqr/1-8 31.0ns ± 4% 39.5ns ±29% +27.25% (p=0.000 n=20+19)
NatSqr/2-8 54.1ns ± 1% 69.0ns ±28% +27.52% (p=0.000 n=20+20)
NatSqr/3-8 66.6ns ± 1% 83.0ns ±25% +24.59% (p=0.000 n=20+20)
NatSqr/5-8 97.1ns ± 1% 119.9ns ±12% +23.50% (p=0.000 n=16+20)
NatSqr/8-8 138ns ± 1% 171ns ± 9% +24.20% (p=0.000 n=19+20)
NatSqr/10-8 182ns ± 0% 225ns ± 9% +23.50% (p=0.000 n=16+20)
NatSqr/20-8 447ns ± 1% 624ns ± 6% +39.64% (p=0.000 n=19+19)
NatSqr/30-8 736ns ± 2% 986ns ± 9% +33.94% (p=0.000 n=19+20)
NatSqr/50-8 1.51µs ± 2% 1.97µs ± 9% +30.42% (p=0.000 n=20+20)
NatSqr/80-8 3.03µs ± 1% 3.67µs ± 7% +21.08% (p=0.000 n=20+20)
NatSqr/100-8 4.31µs ± 1% 5.20µs ± 7% +20.52% (p=0.000 n=19+20)
NatSqr/200-8 14.2µs ± 0% 16.3µs ± 4% +14.92% (p=0.000 n=19+20)
NatSqr/300-8 27.8µs ± 1% 33.2µs ± 7% +19.28% (p=0.000 n=20+18)
NatSqr/500-8 66.6µs ± 1% 74.5µs ± 3% +11.87% (p=0.000 n=18+18)
NatSqr/800-8 135µs ± 1% 165µs ± 7% +22.33% (p=0.000 n=20+20)
NatSqr/1000-8 200µs ± 0% 228µs ± 3% +14.39% (p=0.000 n=19+20)
NatSetBytes/8-8 8.87ns ± 4% 8.77ns ± 2% -1.17% (p=0.020 n=20+16)
NatSetBytes/24-8 38.6ns ± 3% 49.5ns ±29% +28.32% (p=0.000 n=18+19)
NatSetBytes/128-8 75.2ns ± 1% 120.7ns ±29% +60.60% (p=0.000 n=17+20)
NatSetBytes/7-8 16.2ns ± 2% 16.5ns ± 2% +1.76% (p=0.000 n=20+20)
NatSetBytes/23-8 46.5ns ± 1% 60.2ns ±24% +29.59% (p=0.000 n=20+20)
NatSetBytes/127-8 83.1ns ± 1% 118.2ns ±20% +42.33% (p=0.000 n=18+20)
ScanPi-8 89.1µs ± 1% 117.4µs ±12% +31.75% (p=0.000 n=18+20)
StringPiParallel-8 35.1µs ± 9% 40.2µs ±12% +14.53% (p=0.000 n=20+20)
Scan/10/Base2-8 410ns ±14% 429ns ±10% +4.47% (p=0.018 n=19+20)
Scan/100/Base2-8 3.05µs ±20% 2.97µs ±14% ~ (p=0.449 n=20+20)
Scan/1000/Base2-8 29.3µs ± 8% 30.1µs ±23% ~ (p=0.355 n=20+20)
Scan/10000/Base2-8 402µs ±13% 395µs ±14% ~ (p=0.355 n=20+20)
Scan/100000/Base2-8 11.8ms ±10% 11.6ms ± 1% ~ (p=0.245 n=17+18)
Scan/10/Base8-8 194ns ± 6% 196ns ±12% ~ (p=0.829 n=20+19)
Scan/100/Base8-8 1.11µs ±15% 1.11µs ±12% ~ (p=0.743 n=20+20)
Scan/1000/Base8-8 11.7µs ±10% 11.7µs ±12% ~ (p=0.904 n=20+20)
Scan/10000/Base8-8 209µs ± 7% 210µs ± 8% ~ (p=0.478 n=20+20)
Scan/100000/Base8-8 10.6ms ± 7% 10.4ms ± 6% ~ (p=0.112 n=20+18)
Scan/10/Base10-8 182ns ±12% 188ns ±11% +3.52% (p=0.044 n=20+20)
Scan/100/Base10-8 1.01µs ± 8% 1.00µs ±13% ~ (p=0.588 n=20+20)
Scan/1000/Base10-8 10.7µs ±20% 10.6µs ±14% ~ (p=0.560 n=20+20)
Scan/10000/Base10-8 195µs ±10% 194µs ± 9% ~ (p=0.883 n=20+20)
Scan/100000/Base10-8 10.6ms ± 2% 10.6ms ± 2% ~ (p=0.495 n=20+20)
Scan/10/Base16-8 166ns ±10% 174ns ±17% ~ (p=0.072 n=20+20)
Scan/100/Base16-8 836ns ±10% 826ns ±12% ~ (p=0.562 n=20+17)
Scan/1000/Base16-8 8.96µs ±13% 8.65µs ± 9% ~ (p=0.203 n=20+18)
Scan/10000/Base16-8 198µs ± 3% 198µs ± 5% ~ (p=0.718 n=20+20)
Scan/100000/Base16-8 11.1ms ± 3% 11.0ms ± 4% ~ (p=0.512 n=20+20)
String/10/Base2-8 88.1ns ± 7% 94.1ns ±11% +6.80% (p=0.000 n=19+20)
String/100/Base2-8 577ns ± 4% 598ns ± 5% +3.72% (p=0.000 n=20+20)
String/1000/Base2-8 5.25µs ± 2% 5.62µs ± 5% +7.04% (p=0.000 n=19+20)
String/10000/Base2-8 55.6µs ± 1% 60.1µs ± 2% +8.12% (p=0.000 n=19+19)
String/100000/Base2-8 519µs ± 2% 560µs ± 2% +7.91% (p=0.000 n=18+17)
String/10/Base8-8 52.2ns ± 8% 53.3ns ±12% ~ (p=0.188 n=20+18)
String/100/Base8-8 218ns ± 3% 232ns ±10% +6.66% (p=0.000 n=20+20)
String/1000/Base8-8 1.84µs ± 3% 1.94µs ± 4% +5.07% (p=0.000 n=20+18)
String/10000/Base8-8 18.1µs ± 2% 19.1µs ± 3% +5.84% (p=0.000 n=20+19)
String/100000/Base8-8 184µs ± 2% 197µs ± 1% +7.15% (p=0.000 n=19+19)
String/10/Base10-8 158ns ± 7% 146ns ± 6% -7.65% (p=0.000 n=20+19)
String/100/Base10-8 807ns ± 2% 845ns ± 4% +4.79% (p=0.000 n=20+19)
String/1000/Base10-8 3.99µs ± 3% 3.99µs ± 7% ~ (p=0.920 n=20+20)
String/10000/Base10-8 20.8µs ± 6% 22.1µs ±10% +6.11% (p=0.000 n=19+20)
String/100000/Base10-8 5.60ms ± 2% 5.59ms ± 2% ~ (p=0.749 n=20+19)
String/10/Base16-8 49.0ns ±13% 49.3ns ±16% ~ (p=0.581 n=19+20)
String/100/Base16-8 173ns ± 5% 185ns ± 6% +6.63% (p=0.000 n=20+18)
String/1000/Base16-8 1.38µs ± 3% 1.49µs ±10% +8.27% (p=0.000 n=19+20)
String/10000/Base16-8 13.5µs ± 2% 14.5µs ± 3% +7.08% (p=0.000 n=20+20)
String/100000/Base16-8 138µs ± 4% 148µs ± 4% +7.57% (p=0.000 n=19+20)
LeafSize/0-8 2.74ms ± 1% 2.79ms ± 2% +2.00% (p=0.000 n=19+19)
LeafSize/1-8 24.8µs ± 4% 26.1µs ± 8% +5.33% (p=0.000 n=18+19)
LeafSize/2-8 24.9µs ± 7% 25.0µs ± 8% ~ (p=0.989 n=20+19)
LeafSize/3-8 97.6µs ± 3% 100.2µs ± 5% +2.66% (p=0.001 n=20+19)
LeafSize/4-8 25.2µs ± 5% 25.4µs ± 5% ~ (p=0.173 n=19+20)
LeafSize/5-8 118µs ± 2% 119µs ± 5% ~ (p=0.478 n=20+20)
LeafSize/6-8 97.6µs ± 3% 100.1µs ± 8% +2.65% (p=0.021 n=20+19)
LeafSize/7-8 65.6µs ± 5% 67.5µs ± 6% +2.92% (p=0.003 n=20+19)
LeafSize/8-8 25.5µs ± 5% 25.6µs ± 6% ~ (p=0.461 n=19+20)
LeafSize/9-8 134µs ± 4% 136µs ± 5% ~ (p=0.194 n=19+20)
LeafSize/10-8 119µs ± 3% 122µs ± 3% +2.52% (p=0.000 n=20+19)
LeafSize/11-8 115µs ± 5% 116µs ± 5% ~ (p=0.158 n=20+19)
LeafSize/12-8 97.4µs ± 4% 100.3µs ± 5% +2.91% (p=0.003 n=19+20)
LeafSize/13-8 93.1µs ± 4% 93.0µs ± 6% ~ (p=0.698 n=20+20)
LeafSize/14-8 67.0µs ± 3% 69.7µs ± 6% +4.10% (p=0.000 n=20+20)
LeafSize/15-8 48.3µs ± 2% 49.3µs ± 6% +1.91% (p=0.014 n=19+20)
LeafSize/16-8 25.6µs ± 5% 25.6µs ± 6% ~ (p=0.947 n=20+20)
LeafSize/32-8 30.1µs ± 4% 30.3µs ± 5% ~ (p=0.685 n=18+19)
LeafSize/64-8 53.4µs ± 2% 54.0µs ± 3% ~ (p=0.053 n=19+19)
ProbablyPrime/n=0-8 3.59ms ± 1% 3.55ms ± 1% -1.12% (p=0.000 n=20+18)
ProbablyPrime/n=1-8 4.21ms ± 2% 4.17ms ± 2% -0.73% (p=0.018 n=20+19)
ProbablyPrime/n=5-8 6.74ms ± 1% 6.72ms ± 1% ~ (p=0.102 n=20+20)
ProbablyPrime/n=10-8 9.91ms ± 1% 9.89ms ± 2% ~ (p=0.322 n=19+20)
ProbablyPrime/n=20-8 16.2ms ± 1% 16.1ms ± 2% -0.52% (p=0.006 n=19+19)
ProbablyPrime/Lucas-8 2.94ms ± 1% 2.95ms ± 1% +0.52% (p=0.002 n=18+19)
ProbablyPrime/MillerRabinBase2-8 641µs ± 2% 640µs ± 2% ~ (p=0.607 n=19+20)
FloatSqrt/64-8 653ns ± 5% 704ns ± 5% +7.82% (p=0.000 n=19+20)
FloatSqrt/128-8 1.32µs ± 3% 1.42µs ± 5% +7.29% (p=0.000 n=18+20)
FloatSqrt/256-8 1.44µs ± 2% 1.45µs ± 4% ~ (p=0.089 n=19+19)
FloatSqrt/1000-8 3.36µs ± 3% 3.42µs ± 5% +1.82% (p=0.012 n=20+20)
FloatSqrt/10000-8 25.5µs ± 2% 27.5µs ± 7% +7.91% (p=0.000 n=18+19)
FloatSqrt/100000-8 629µs ± 6% 663µs ± 9% +5.32% (p=0.000 n=18+20)
FloatSqrt/
1000000-8 46.4ms ± 2% 46.6ms ± 5% ~ (p=0.351 n=20+19)
[Geo mean] 9.60µs 10.01µs +4.28%
name old alloc/op new alloc/op delta
DecimalConversion-8 54.0kB ± 0% 43.6kB ± 0% -19.40% (p=0.000 n=20+20)
FloatString/100-8 400B ± 0% 400B ± 0% ~ (all equal)
FloatString/1000-8 3.10kB ± 0% 3.10kB ± 0% ~ (all equal)
FloatString/10000-8 52.1kB ± 0% 52.1kB ± 0% ~ (p=0.153 n=20+20)
FloatString/100000-8 582kB ± 0% 582kB ± 0% ~ (all equal)
FloatAdd/10-8 0.00B 0.00B ~ (all equal)
FloatAdd/100-8 0.00B 0.00B ~ (all equal)
FloatAdd/1000-8 0.00B 0.00B ~ (all equal)
FloatAdd/10000-8 0.00B 0.00B ~ (all equal)
FloatAdd/100000-8 0.00B 0.00B ~ (all equal)
FloatSub/10-8 0.00B 0.00B ~ (all equal)
FloatSub/100-8 0.00B 0.00B ~ (all equal)
FloatSub/1000-8 0.00B 0.00B ~ (all equal)
FloatSub/10000-8 0.00B 0.00B ~ (all equal)
FloatSub/100000-8 0.00B 0.00B ~ (all equal)
ParseFloatSmallExp-8 4.18kB ± 0% 3.60kB ± 0% -13.79% (p=0.000 n=20+20)
ParseFloatLargeExp-8 18.9kB ± 0% 19.3kB ± 0% +2.25% (p=0.000 n=20+20)
GCD10x10/WithoutXY-8 96.0B ± 0% 16.0B ± 0% -83.33% (p=0.000 n=20+20)
GCD10x10/WithXY-8 240B ± 0% 88B ± 0% -63.33% (p=0.000 n=20+20)
GCD10x100/WithoutXY-8 192B ± 0% 112B ± 0% -41.67% (p=0.000 n=20+20)
GCD10x100/WithXY-8 464B ± 0% 424B ± 0% -8.62% (p=0.000 n=20+20)
GCD10x1000/WithoutXY-8 416B ± 0% 336B ± 0% -19.23% (p=0.000 n=20+20)
GCD10x1000/WithXY-8 1.25kB ± 0% 1.10kB ± 0% -12.18% (p=0.000 n=20+20)
GCD10x10000/WithoutXY-8 2.91kB ± 0% 2.83kB ± 0% -2.75% (p=0.000 n=20+20)
GCD10x10000/WithXY-8 8.70kB ± 0% 8.55kB ± 0% -1.76% (p=0.000 n=16+16)
GCD10x100000/WithoutXY-8 27.2kB ± 0% 27.2kB ± 0% -0.29% (p=0.000 n=20+20)
GCD10x100000/WithXY-8 82.4kB ± 0% 82.3kB ± 0% -0.17% (p=0.000 n=20+19)
GCD100x100/WithoutXY-8 288B ± 0% 384B ± 0% +33.33% (p=0.000 n=20+20)
GCD100x100/WithXY-8 464B ± 0% 576B ± 0% +24.14% (p=0.000 n=20+20)
GCD100x1000/WithoutXY-8 640B ± 0% 688B ± 0% +7.50% (p=0.000 n=20+20)
GCD100x1000/WithXY-8 1.52kB ± 0% 1.46kB ± 0% -3.68% (p=0.000 n=20+20)
GCD100x10000/WithoutXY-8 4.24kB ± 0% 4.29kB ± 0% +1.13% (p=0.000 n=20+20)
GCD100x10000/WithXY-8 11.1kB ± 0% 11.0kB ± 0% -0.51% (p=0.000 n=15+20)
GCD100x100000/WithoutXY-8 40.9kB ± 0% 40.9kB ± 0% +0.12% (p=0.000 n=20+19)
GCD100x100000/WithXY-8 110kB ± 0% 109kB ± 0% -0.08% (p=0.000 n=20+20)
GCD1000x1000/WithoutXY-8 1.22kB ± 0% 1.06kB ± 0% -13.16% (p=0.000 n=20+20)
GCD1000x1000/WithXY-8 2.37kB ± 0% 2.11kB ± 0% -10.83% (p=0.000 n=20+20)
GCD1000x10000/WithoutXY-8 4.71kB ± 0% 4.63kB ± 0% -1.70% (p=0.000 n=20+19)
GCD1000x10000/WithXY-8 28.2kB ± 0% 28.0kB ± 0% -0.43% (p=0.000 n=20+15)
GCD1000x100000/WithoutXY-8 41.3kB ± 0% 41.2kB ± 0% -0.20% (p=0.000 n=20+16)
GCD1000x100000/WithXY-8 301kB ± 0% 301kB ± 0% -0.13% (p=0.000 n=20+20)
GCD10000x10000/WithoutXY-8 8.64kB ± 0% 8.48kB ± 0% -1.85% (p=0.000 n=20+20)
GCD10000x10000/WithXY-8 57.2kB ± 0% 57.7kB ± 0% +0.80% (p=0.000 n=20+20)
GCD10000x100000/WithoutXY-8 43.8kB ± 0% 43.7kB ± 0% -0.19% (p=0.000 n=20+18)
GCD10000x100000/WithXY-8 2.08MB ± 0% 2.08MB ± 0% -0.02% (p=0.000 n=15+19)
GCD100000x100000/WithoutXY-8 81.6kB ± 0% 81.4kB ± 0% -0.20% (p=0.000 n=20+20)
GCD100000x100000/WithXY-8 4.32MB ± 0% 4.33MB ± 0% +0.12% (p=0.000 n=20+20)
Hilbert-8 653kB ± 0% 313kB ± 0% -52.13% (p=0.000 n=19+20)
Binomial-8 1.82kB ± 0% 1.02kB ± 0% -43.86% (p=0.000 n=20+20)
QuoRem-8 0.00B 0.00B ~ (all equal)
Exp-8 11.1kB ± 0% 11.0kB ± 0% -0.34% (p=0.000 n=19+20)
Exp2-8 11.3kB ± 0% 11.3kB ± 0% -0.35% (p=0.000 n=19+20)
Bitset-8 0.00B 0.00B ~ (all equal)
BitsetNeg-8 0.00B 0.00B ~ (all equal)
BitsetOrig-8 103B ± 0% 63B ± 0% -38.83% (p=0.000 n=20+20)
BitsetNegOrig-8 215B ± 0% 175B ± 0% -18.60% (p=0.000 n=20+20)
ModSqrt225_Tonelli-8 11.3kB ± 0% 11.0kB ± 0% -2.76% (p=0.000 n=20+17)
ModSqrt225_3Mod4-8 3.57kB ± 0% 3.53kB ± 0% -1.12% (p=0.000 n=20+20)
ModSqrt231_Tonelli-8 11.0kB ± 0% 10.7kB ± 0% -2.55% (p=0.000 n=20+20)
ModSqrt231_5Mod8-8 4.21kB ± 0% 4.09kB ± 0% -2.85% (p=0.000 n=16+20)
ModInverse-8 1.44kB ± 0% 1.28kB ± 0% -11.11% (p=0.000 n=20+20)
Sqrt-8 6.00kB ± 0% 6.00kB ± 0% ~ (all equal)
IntSqr/1-8 0.00B 0.00B ~ (all equal)
IntSqr/2-8 0.00B 0.00B ~ (all equal)
IntSqr/3-8 0.00B 0.00B ~ (all equal)
IntSqr/5-8 0.00B 0.00B ~ (all equal)
IntSqr/8-8 0.00B 0.00B ~ (all equal)
IntSqr/10-8 0.00B 0.00B ~ (all equal)
IntSqr/20-8 320B ± 0% 320B ± 0% ~ (all equal)
IntSqr/30-8 480B ± 0% 480B ± 0% ~ (all equal)
IntSqr/50-8 896B ± 0% 896B ± 0% ~ (all equal)
IntSqr/80-8 1.28kB ± 0% 1.28kB ± 0% ~ (all equal)
IntSqr/100-8 1.79kB ± 0% 1.79kB ± 0% ~ (all equal)
IntSqr/200-8 3.20kB ± 0% 3.20kB ± 0% ~ (all equal)
IntSqr/300-8 8.06kB ± 0% 8.06kB ± 0% ~ (all equal)
IntSqr/500-8 12.3kB ± 0% 12.3kB ± 0% ~ (all equal)
IntSqr/800-8 28.8kB ± 0% 28.8kB ± 0% ~ (all equal)
IntSqr/1000-8 36.9kB ± 0% 36.9kB ± 0% ~ (all equal)
Div/20/10-8 0.00B 0.00B ~ (all equal)
Div/200/100-8 0.00B 0.00B ~ (all equal)
Div/2000/1000-8 0.00B 0.00B ~ (all equal)
Div/20000/10000-8 0.00B 0.00B ~ (all equal)
Div/200000/100000-8 690B ± 0% 690B ± 0% ~ (all equal)
Mul-8 565kB ± 0% 565kB ± 0% ~ (all equal)
ZeroShifts/Shl-8 6.53kB ± 0% 6.53kB ± 0% ~ (all equal)
ZeroShifts/ShlSame-8 0.00B 0.00B ~ (all equal)
ZeroShifts/Shr-8 6.53kB ± 0% 6.53kB ± 0% ~ (all equal)
ZeroShifts/ShrSame-8 0.00B 0.00B ~ (all equal)
Exp3Power/0x10-8 192B ± 0% 112B ± 0% -41.67% (p=0.000 n=20+20)
Exp3Power/0x40-8 192B ± 0% 112B ± 0% -41.67% (p=0.000 n=20+20)
Exp3Power/0x100-8 288B ± 0% 208B ± 0% -27.78% (p=0.000 n=20+20)
Exp3Power/0x400-8 672B ± 0% 592B ± 0% -11.90% (p=0.000 n=20+20)
Exp3Power/0x1000-8 3.33kB ± 0% 3.25kB ± 0% -2.40% (p=0.000 n=20+20)
Exp3Power/0x4000-8 13.8kB ± 0% 13.7kB ± 0% -0.58% (p=0.000 n=20+20)
Exp3Power/0x10000-8 117kB ± 0% 117kB ± 0% -0.07% (p=0.000 n=20+20)
Exp3Power/0x40000-8 755kB ± 0% 755kB ± 0% -0.01% (p=0.000 n=19+20)
Exp3Power/0x100000-8 5.22MB ± 0% 5.22MB ± 0% -0.00% (p=0.000 n=20+20)
Exp3Power/0x400000-8 39.8MB ± 0% 39.8MB ± 0% -0.00% (p=0.000 n=20+19)
Fibo-8 3.09MB ± 0% 3.08MB ± 0% -0.28% (p=0.000 n=20+16)
NatSqr/1-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
NatSqr/2-8 64.0B ± 0% 64.0B ± 0% ~ (all equal)
NatSqr/3-8 80.0B ± 0% 80.0B ± 0% ~ (all equal)
NatSqr/5-8 112B ± 0% 112B ± 0% ~ (all equal)
NatSqr/8-8 160B ± 0% 160B ± 0% ~ (all equal)
NatSqr/10-8 192B ± 0% 192B ± 0% ~ (all equal)
NatSqr/20-8 672B ± 0% 672B ± 0% ~ (all equal)
NatSqr/30-8 992B ± 0% 992B ± 0% ~ (all equal)
NatSqr/50-8 1.79kB ± 0% 1.79kB ± 0% ~ (all equal)
NatSqr/80-8 2.69kB ± 0% 2.69kB ± 0% ~ (all equal)
NatSqr/100-8 3.58kB ± 0% 3.58kB ± 0% ~ (all equal)
NatSqr/200-8 6.66kB ± 0% 6.66kB ± 0% ~ (all equal)
NatSqr/300-8 24.4kB ± 0% 24.4kB ± 0% ~ (all equal)
NatSqr/500-8 36.9kB ± 0% 36.9kB ± 0% ~ (all equal)
NatSqr/800-8 69.8kB ± 0% 69.8kB ± 0% ~ (all equal)
NatSqr/1000-8 86.0kB ± 0% 86.0kB ± 0% ~ (all equal)
NatSetBytes/8-8 0.00B 0.00B ~ (all equal)
NatSetBytes/24-8 64.0B ± 0% 64.0B ± 0% ~ (all equal)
NatSetBytes/128-8 160B ± 0% 160B ± 0% ~ (all equal)
NatSetBytes/7-8 0.00B 0.00B ~ (all equal)
NatSetBytes/23-8 64.0B ± 0% 64.0B ± 0% ~ (all equal)
NatSetBytes/127-8 160B ± 0% 160B ± 0% ~ (all equal)
ScanPi-8 75.4kB ± 0% 75.7kB ± 0% +0.41% (p=0.000 n=20+20)
StringPiParallel-8 20.4kB ± 0% 20.4kB ± 0% ~ (p=0.223 n=20+20)
Scan/10/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/1000/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10000/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100000/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10/Base8-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100/Base8-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/1000/Base8-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10000/Base8-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100000/Base8-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10/Base10-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100/Base10-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/1000/Base10-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10000/Base10-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100000/Base10-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10/Base16-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100/Base16-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/1000/Base16-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/10000/Base16-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
Scan/100000/Base16-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
String/10/Base2-8 48.0B ± 0% 48.0B ± 0% ~ (all equal)
String/100/Base2-8 352B ± 0% 352B ± 0% ~ (all equal)
String/1000/Base2-8 3.46kB ± 0% 3.46kB ± 0% ~ (all equal)
String/10000/Base2-8 41.0kB ± 0% 41.0kB ± 0% ~ (all equal)
String/100000/Base2-8 336kB ± 0% 336kB ± 0% ~ (all equal)
String/10/Base8-8 16.0B ± 0% 16.0B ± 0% ~ (all equal)
String/100/Base8-8 112B ± 0% 112B ± 0% ~ (all equal)
String/1000/Base8-8 1.15kB ± 0% 1.15kB ± 0% ~ (all equal)
String/10000/Base8-8 12.3kB ± 0% 12.3kB ± 0% ~ (all equal)
String/100000/Base8-8 115kB ± 0% 115kB ± 0% ~ (all equal)
String/10/Base10-8 64.0B ± 0% 24.0B ± 0% -62.50% (p=0.000 n=20+20)
String/100/Base10-8 192B ± 0% 192B ± 0% ~ (all equal)
String/1000/Base10-8 1.95kB ± 0% 1.95kB ± 0% ~ (all equal)
String/10000/Base10-8 20.0kB ± 0% 20.0kB ± 0% ~ (p=0.983 n=19+20)
String/100000/Base10-8 210kB ± 1% 211kB ± 1% +0.82% (p=0.000 n=19+20)
String/10/Base16-8 16.0B ± 0% 16.0B ± 0% ~ (all equal)
String/100/Base16-8 96.0B ± 0% 96.0B ± 0% ~ (all equal)
String/1000/Base16-8 896B ± 0% 896B ± 0% ~ (all equal)
String/10000/Base16-8 9.47kB ± 0% 9.47kB ± 0% ~ (all equal)
String/100000/Base16-8 90.1kB ± 0% 90.1kB ± 0% ~ (all equal)
LeafSize/0-8 16.9kB ± 0% 16.8kB ± 0% -0.44% (p=0.000 n=20+20)
LeafSize/1-8 22.4kB ± 0% 22.3kB ± 0% -0.34% (p=0.000 n=20+19)
LeafSize/2-8 22.4kB ± 0% 22.3kB ± 0% -0.34% (p=0.000 n=20+19)
LeafSize/3-8 22.4kB ± 0% 22.3kB ± 0% -0.34% (p=0.000 n=20+17)
LeafSize/4-8 22.4kB ± 0% 22.3kB ± 0% -0.34% (p=0.000 n=20+19)
LeafSize/5-8 22.4kB ± 0% 22.3kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/6-8 22.3kB ± 0% 22.2kB ± 0% -0.34% (p=0.000 n=20+20)
LeafSize/7-8 22.3kB ± 0% 22.2kB ± 0% -0.35% (p=0.000 n=20+20)
LeafSize/8-8 22.3kB ± 0% 22.2kB ± 0% -0.34% (p=0.000 n=16+20)
LeafSize/9-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/10-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/11-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/12-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/13-8 22.3kB ± 0% 22.2kB ± 0% -0.34% (p=0.000 n=20+15)
LeafSize/14-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/15-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=20+20)
LeafSize/16-8 22.3kB ± 0% 22.2kB ± 0% -0.33% (p=0.000 n=19+20)
LeafSize/32-8 22.3kB ± 0% 22.2kB ± 0% -0.32% (p=0.000 n=20+20)
LeafSize/64-8 21.8kB ± 0% 21.7kB ± 0% -0.33% (p=0.000 n=18+19)
ProbablyPrime/n=0-8 15.3kB ± 0% 14.9kB ± 0% -2.35% (p=0.000 n=20+20)
ProbablyPrime/n=1-8 21.0kB ± 0% 20.7kB ± 0% -1.71% (p=0.000 n=20+20)
ProbablyPrime/n=5-8 43.4kB ± 0% 42.9kB ± 0% -1.20% (p=0.000 n=20+20)
ProbablyPrime/n=10-8 71.5kB ± 0% 70.7kB ± 0% -1.01% (p=0.000 n=19+20)
ProbablyPrime/n=20-8 127kB ± 0% 126kB ± 0% -0.88% (p=0.000 n=20+20)
ProbablyPrime/Lucas-8 3.07kB ± 0% 2.79kB ± 0% -9.12% (p=0.000 n=20+20)
ProbablyPrime/MillerRabinBase2-8 12.1kB ± 0% 12.0kB ± 0% -0.66% (p=0.000 n=20+20)
FloatSqrt/64-8 416B ± 0% 360B ± 0% -13.46% (p=0.000 n=20+20)
FloatSqrt/128-8 640B ± 0% 584B ± 0% -8.75% (p=0.000 n=20+20)
FloatSqrt/256-8 512B ± 0% 472B ± 0% -7.81% (p=0.000 n=20+20)
FloatSqrt/1000-8 1.47kB ± 0% 1.43kB ± 0% -2.72% (p=0.000 n=20+20)
FloatSqrt/10000-8 18.2kB ± 0% 18.1kB ± 0% -0.22% (p=0.000 n=20+20)
FloatSqrt/100000-8 204kB ± 0% 204kB ± 0% -0.02% (p=0.000 n=20+20)
FloatSqrt/
1000000-8 6.37MB ± 0% 6.37MB ± 0% -0.00% (p=0.000 n=19+20)
[Geo mean] 3.42kB 3.24kB -5.33%
name old allocs/op new allocs/op delta
DecimalConversion-8 1.65k ± 0% 1.65k ± 0% ~ (all equal)
FloatString/100-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
FloatString/1000-8 9.00 ± 0% 9.00 ± 0% ~ (all equal)
FloatString/10000-8 22.0 ± 0% 22.0 ± 0% ~ (all equal)
FloatString/100000-8 136 ± 0% 136 ± 0% ~ (all equal)
FloatAdd/10-8 0.00 0.00 ~ (all equal)
FloatAdd/100-8 0.00 0.00 ~ (all equal)
FloatAdd/1000-8 0.00 0.00 ~ (all equal)
FloatAdd/10000-8 0.00 0.00 ~ (all equal)
FloatAdd/100000-8 0.00 0.00 ~ (all equal)
FloatSub/10-8 0.00 0.00 ~ (all equal)
FloatSub/100-8 0.00 0.00 ~ (all equal)
FloatSub/1000-8 0.00 0.00 ~ (all equal)
FloatSub/10000-8 0.00 0.00 ~ (all equal)
FloatSub/100000-8 0.00 0.00 ~ (all equal)
ParseFloatSmallExp-8 110 ± 0% 130 ± 0% +18.18% (p=0.000 n=20+20)
ParseFloatLargeExp-8 319 ± 0% 371 ± 0% +16.30% (p=0.000 n=20+20)
GCD10x10/WithoutXY-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
GCD10x10/WithXY-8 5.00 ± 0% 6.00 ± 0% +20.00% (p=0.000 n=20+20)
GCD10x100/WithoutXY-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
GCD10x100/WithXY-8 9.00 ± 0% 12.00 ± 0% +33.33% (p=0.000 n=20+20)
GCD10x1000/WithoutXY-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
GCD10x1000/WithXY-8 11.0 ± 0% 12.0 ± 0% +9.09% (p=0.000 n=20+20)
GCD10x10000/WithoutXY-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
GCD10x10000/WithXY-8 11.0 ± 0% 12.0 ± 0% +9.09% (p=0.000 n=20+20)
GCD10x100000/WithoutXY-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
GCD10x100000/WithXY-8 11.0 ± 0% 12.0 ± 0% +9.09% (p=0.000 n=20+20)
GCD100x100/WithoutXY-8 6.00 ± 0% 10.00 ± 0% +66.67% (p=0.000 n=20+20)
GCD100x100/WithXY-8 9.00 ± 0% 15.00 ± 0% +66.67% (p=0.000 n=20+20)
GCD100x1000/WithoutXY-8 6.00 ± 0% 8.00 ± 0% +33.33% (p=0.000 n=20+20)
GCD100x1000/WithXY-8 12.0 ± 0% 13.0 ± 0% +8.33% (p=0.000 n=20+20)
GCD100x10000/WithoutXY-8 6.00 ± 0% 8.00 ± 0% +33.33% (p=0.000 n=20+20)
GCD100x10000/WithXY-8 12.0 ± 0% 13.0 ± 0% +8.33% (p=0.000 n=20+20)
GCD100x100000/WithoutXY-8 6.00 ± 0% 8.00 ± 0% +33.33% (p=0.000 n=20+20)
GCD100x100000/WithXY-8 12.0 ± 0% 13.0 ± 0% +8.33% (p=0.000 n=20+20)
GCD1000x1000/WithoutXY-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
GCD1000x1000/WithXY-8 19.0 ± 0% 20.0 ± 0% +5.26% (p=0.000 n=20+20)
GCD1000x10000/WithoutXY-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
GCD1000x10000/WithXY-8 26.0 ± 0% 26.0 ± 0% ~ (all equal)
GCD1000x100000/WithoutXY-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
GCD1000x100000/WithXY-8 27.0 ± 0% 27.0 ± 0% ~ (all equal)
GCD10000x10000/WithoutXY-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
GCD10000x10000/WithXY-8 76.0 ± 0% 78.0 ± 0% +2.63% (p=0.000 n=20+20)
GCD10000x100000/WithoutXY-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
GCD10000x100000/WithXY-8 174 ± 0% 174 ± 0% ~ (all equal)
GCD100000x100000/WithoutXY-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
GCD100000x100000/WithXY-8 645 ± 0% 647 ± 0% +0.31% (p=0.000 n=20+20)
Hilbert-8 14.1k ± 0% 14.3k ± 0% +0.92% (p=0.000 n=20+20)
Binomial-8 38.0 ± 0% 38.0 ± 0% ~ (all equal)
QuoRem-8 0.00 0.00 ~ (all equal)
Exp-8 21.0 ± 0% 21.0 ± 0% ~ (all equal)
Exp2-8 22.0 ± 0% 22.0 ± 0% ~ (all equal)
Bitset-8 0.00 0.00 ~ (all equal)
BitsetNeg-8 0.00 0.00 ~ (all equal)
BitsetOrig-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
BitsetNegOrig-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
ModSqrt225_Tonelli-8 85.0 ± 0% 86.0 ± 0% +1.18% (p=0.000 n=20+20)
ModSqrt225_3Mod4-8 25.0 ± 0% 25.0 ± 0% ~ (all equal)
ModSqrt231_Tonelli-8 80.0 ± 0% 80.0 ± 0% ~ (all equal)
ModSqrt231_5Mod8-8 32.0 ± 0% 32.0 ± 0% ~ (all equal)
ModInverse-8 11.0 ± 0% 11.0 ± 0% ~ (all equal)
Sqrt-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
IntSqr/1-8 0.00 0.00 ~ (all equal)
IntSqr/2-8 0.00 0.00 ~ (all equal)
IntSqr/3-8 0.00 0.00 ~ (all equal)
IntSqr/5-8 0.00 0.00 ~ (all equal)
IntSqr/8-8 0.00 0.00 ~ (all equal)
IntSqr/10-8 0.00 0.00 ~ (all equal)
IntSqr/20-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/30-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/50-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/80-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/100-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/200-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
IntSqr/300-8 3.00 ± 0% 3.00 ± 0% ~ (all equal)
IntSqr/500-8 3.00 ± 0% 3.00 ± 0% ~ (all equal)
IntSqr/800-8 9.00 ± 0% 9.00 ± 0% ~ (all equal)
IntSqr/1000-8 9.00 ± 0% 9.00 ± 0% ~ (all equal)
Div/20/10-8 0.00 0.00 ~ (all equal)
Div/200/100-8 0.00 0.00 ~ (all equal)
Div/2000/1000-8 0.00 0.00 ~ (all equal)
Div/20000/10000-8 0.00 0.00 ~ (all equal)
Div/200000/100000-8 0.00 0.00 ~ (all equal)
Mul-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
ZeroShifts/Shl-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
ZeroShifts/ShlSame-8 0.00 0.00 ~ (all equal)
ZeroShifts/Shr-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
ZeroShifts/ShrSame-8 0.00 0.00 ~ (all equal)
Exp3Power/0x10-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
Exp3Power/0x40-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
Exp3Power/0x100-8 5.00 ± 0% 5.00 ± 0% ~ (all equal)
Exp3Power/0x400-8 7.00 ± 0% 7.00 ± 0% ~ (all equal)
Exp3Power/0x1000-8 11.0 ± 0% 11.0 ± 0% ~ (all equal)
Exp3Power/0x4000-8 15.0 ± 0% 15.0 ± 0% ~ (all equal)
Exp3Power/0x10000-8 29.0 ± 0% 29.0 ± 0% ~ (all equal)
Exp3Power/0x40000-8 140 ± 0% 140 ± 0% ~ (all equal)
Exp3Power/0x100000-8 1.12k ± 0% 1.12k ± 0% ~ (all equal)
Exp3Power/0x400000-8 9.88k ± 0% 9.88k ± 0% ~ (p=0.747 n=17+19)
Fibo-8 739 ± 0% 743 ± 0% +0.54% (p=0.000 n=20+20)
NatSqr/1-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/3-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/5-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSqr/20-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/30-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/50-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/80-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/100-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/200-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
NatSqr/300-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
NatSqr/500-8 4.00 ± 0% 4.00 ± 0% ~ (all equal)
NatSqr/800-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
NatSqr/1000-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
NatSetBytes/8-8 0.00 0.00 ~ (all equal)
NatSetBytes/24-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSetBytes/128-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSetBytes/7-8 0.00 0.00 ~ (all equal)
NatSetBytes/23-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
NatSetBytes/127-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
ScanPi-8 60.0 ± 0% 61.0 ± 0% +1.67% (p=0.000 n=20+20)
StringPiParallel-8 24.0 ± 0% 24.0 ± 0% ~ (all equal)
Scan/10/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/1000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/1000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10/Base10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100/Base10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/1000/Base10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10000/Base10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100000/Base10-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/1000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/10000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Scan/100000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/1000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100000/Base2-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/1000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100000/Base8-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10/Base10-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
String/100/Base10-8 2.00 ± 0% 2.00 ± 0% ~ (all equal)
String/1000/Base10-8 3.00 ± 0% 3.00 ± 0% ~ (all equal)
String/10000/Base10-8 3.00 ± 0% 3.00 ± 0% ~ (all equal)
String/100000/Base10-8 3.00 ± 0% 3.00 ± 0% ~ (all equal)
String/10/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/1000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/10000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
String/100000/Base16-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
LeafSize/0-8 10.0 ± 0% 10.0 ± 0% ~ (all equal)
LeafSize/1-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
LeafSize/2-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
LeafSize/3-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
LeafSize/4-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
LeafSize/5-8 13.0 ± 0% 13.0 ± 0% ~ (all equal)
LeafSize/6-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/7-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/8-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/9-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/10-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/11-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/12-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/13-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/14-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/15-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/16-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/32-8 12.0 ± 0% 12.0 ± 0% ~ (all equal)
LeafSize/64-8 11.0 ± 0% 11.0 ± 0% ~ (all equal)
ProbablyPrime/n=0-8 52.0 ± 0% 52.0 ± 0% ~ (all equal)
ProbablyPrime/n=1-8 73.0 ± 0% 73.0 ± 0% ~ (all equal)
ProbablyPrime/n=5-8 157 ± 0% 157 ± 0% ~ (all equal)
ProbablyPrime/n=10-8 262 ± 0% 262 ± 0% ~ (all equal)
ProbablyPrime/n=20-8 472 ± 0% 472 ± 0% ~ (all equal)
ProbablyPrime/Lucas-8 22.0 ± 0% 22.0 ± 0% ~ (all equal)
ProbablyPrime/MillerRabinBase2-8 29.0 ± 0% 29.0 ± 0% ~ (all equal)
FloatSqrt/64-8 9.00 ± 0% 10.00 ± 0% +11.11% (p=0.000 n=20+20)
FloatSqrt/128-8 12.0 ± 0% 13.0 ± 0% +8.33% (p=0.000 n=20+20)
FloatSqrt/256-8 8.00 ± 0% 8.00 ± 0% ~ (all equal)
FloatSqrt/1000-8 9.00 ± 0% 9.00 ± 0% ~ (all equal)
FloatSqrt/10000-8 14.0 ± 0% 14.0 ± 0% ~ (all equal)
FloatSqrt/100000-8 33.0 ± 0% 33.0 ± 0% ~ (all equal)
FloatSqrt/
1000000-8 1.16k ± 0% 1.16k ± 0% ~ (all equal)
[Geo mean] 6.62 6.76 +2.09%
Change-Id: Id9df4157cac1e07721e35cff7fcdefe60703873a
Reviewed-on: https://go-review.googlesource.com/c/150999
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>