• Robert Griesemer's avatar
    math/big: simplify fast string conversion · b4be65bc
    Robert Griesemer authored
    - use slice ops for convertWords instead of lo/hi boundaries
    - always compute leading zeroes (simplifies logic significantly),
      but remove them once, at the end (since leafSize is small, the
      worst-case scenario is not adding significant overhead)
    - various comment cleanups (specifically, replaced direct -> iterative,
      and indirect -> recursive)
    - slightly faster overall for -bench=String
    
    (This CL incorporates the changes re: my comments to CL 5418047
    https://golang.org/cl/5418047/ )
    
    benchmark                          old ns/op    new ns/op    delta
    big.BenchmarkString10Base2               519          527   +1.54%
    big.BenchmarkString100Base2             2279         2158   -5.31%
    big.BenchmarkString1000Base2           18475        17323   -6.24%
    big.BenchmarkString10000Base2         178248       166219   -6.75%
    big.BenchmarkString100000Base2       1548494      1431587   -7.55%
    big.BenchmarkString10Base8               415          422   +1.69%
    big.BenchmarkString100Base8             1025          978   -4.59%
    big.BenchmarkString1000Base8            6822         6428   -5.78%
    big.BenchmarkString10000Base8          64598        61065   -5.47%
    big.BenchmarkString100000Base8        593788       549150   -7.52%
    big.BenchmarkString10Base10              654          645   -1.38%
    big.BenchmarkString100Base10            1863         1835   -1.50%
    big.BenchmarkString1000Base10          12099        11981   -0.98%
    big.BenchmarkString10000Base10         57601        56888   -1.24%
    big.BenchmarkString100000Base10     20123120     19827890   -1.47%
    big.BenchmarkString10Base16              358          362   +1.12%
    big.BenchmarkString100Base16             815          776   -4.79%
    big.BenchmarkString1000Base16           4710         4421   -6.14%
    big.BenchmarkString10000Base16         43938        40968   -6.76%
    big.BenchmarkString100000Base16       406307       373930   -7.97%
    
    R=michael.jones, mtj
    CC=golang-dev
    https://golang.org/cl/5432090
    b4be65bc
Name
Last commit
Last update
..
big Loading commit data...
cmplx Loading commit data...
rand Loading commit data...
Makefile Loading commit data...
abs.go Loading commit data...
abs_386.s Loading commit data...
abs_amd64.s Loading commit data...
abs_arm.s Loading commit data...
acosh.go Loading commit data...
all_test.go Loading commit data...
asin.go Loading commit data...
asin_386.s Loading commit data...
asin_amd64.s Loading commit data...
asin_arm.s Loading commit data...
asinh.go Loading commit data...
atan.go Loading commit data...
atan2.go Loading commit data...
atan2_386.s Loading commit data...
atan2_amd64.s Loading commit data...
atan2_arm.s Loading commit data...
atan_386.s Loading commit data...
atan_amd64.s Loading commit data...
atan_arm.s Loading commit data...
atanh.go Loading commit data...
bits.go Loading commit data...
cbrt.go Loading commit data...
const.go Loading commit data...
copysign.go Loading commit data...
dim.go Loading commit data...
dim_386.s Loading commit data...
dim_amd64.s Loading commit data...
dim_arm.s Loading commit data...
erf.go Loading commit data...
exp.go Loading commit data...
exp2_386.s Loading commit data...
exp2_amd64.s Loading commit data...
exp2_arm.s Loading commit data...
exp_386.s Loading commit data...
exp_amd64.s Loading commit data...
exp_arm.s Loading commit data...
expm1.go Loading commit data...
expm1_386.s Loading commit data...
expm1_amd64.s Loading commit data...
expm1_arm.s Loading commit data...
export_test.go Loading commit data...
floor.go Loading commit data...
floor_386.s Loading commit data...
floor_amd64.s Loading commit data...
floor_arm.s Loading commit data...
fltasm_amd64.s Loading commit data...
frexp.go Loading commit data...
frexp_386.s Loading commit data...
frexp_amd64.s Loading commit data...
frexp_arm.s Loading commit data...
gamma.go Loading commit data...
hypot.go Loading commit data...
hypot_386.s Loading commit data...
hypot_amd64.s Loading commit data...
hypot_arm.s Loading commit data...
j0.go Loading commit data...
j1.go Loading commit data...
jn.go Loading commit data...
ldexp.go Loading commit data...
ldexp_386.s Loading commit data...
ldexp_amd64.s Loading commit data...
ldexp_arm.s Loading commit data...
lgamma.go Loading commit data...
log.go Loading commit data...
log10.go Loading commit data...
log10_386.s Loading commit data...
log10_amd64.s Loading commit data...
log10_arm.s Loading commit data...
log1p.go Loading commit data...
log1p_386.s Loading commit data...
log1p_amd64.s Loading commit data...
log1p_arm.s Loading commit data...
log_386.s Loading commit data...
log_amd64.s Loading commit data...
log_arm.s Loading commit data...
logb.go Loading commit data...
mod.go Loading commit data...
mod_386.s Loading commit data...
mod_amd64.s Loading commit data...
mod_arm.s Loading commit data...
modf.go Loading commit data...
modf_386.s Loading commit data...
modf_amd64.s Loading commit data...
modf_arm.s Loading commit data...
nextafter.go Loading commit data...
pow.go Loading commit data...
pow10.go Loading commit data...
remainder.go Loading commit data...
remainder_386.s Loading commit data...
remainder_amd64.s Loading commit data...
remainder_arm.s Loading commit data...
signbit.go Loading commit data...
sin.go Loading commit data...
sin_386.s Loading commit data...
sin_amd64.s Loading commit data...
sin_arm.s Loading commit data...
sincos.go Loading commit data...
sincos_386.s Loading commit data...
sincos_amd64.s Loading commit data...
sincos_arm.s Loading commit data...
sinh.go Loading commit data...
sqrt.go Loading commit data...
sqrt_386.s Loading commit data...
sqrt_amd64.s Loading commit data...
sqrt_arm.s Loading commit data...
tan.go Loading commit data...
tan_386.s Loading commit data...
tan_amd64.s Loading commit data...
tan_arm.s Loading commit data...
tanh.go Loading commit data...
unsafe.go Loading commit data...