• Russ Cox's avatar
    strconv: make Ftoa faster · 0ed5e6a2
    Russ Cox authored
    Make code amenable to escape analysis
    so that the decimal values do not escape.
    
    benchmark                               old ns/op    new ns/op    delta
    strconv_test.BenchmarkAtof64Decimal           229          233   +1.75%
    strconv_test.BenchmarkAtof64Float             261          263   +0.77%
    strconv_test.BenchmarkAtof64FloatExp         7760         7757   -0.04%
    strconv_test.BenchmarkAtof64Big              3086         3053   -1.07%
    strconv_test.BenchmarkFtoa64Decimal          6866         2629  -61.71%
    strconv_test.BenchmarkFtoa64Float            7211         3064  -57.51%
    strconv_test.BenchmarkFtoa64FloatExp        12587         8263  -34.35%
    strconv_test.BenchmarkFtoa64Big              7058         2825  -59.97%
    json.BenchmarkCodeEncoder               357355200    276528200  -22.62%
    json.BenchmarkCodeMarshal               360735200    279646400  -22.48%
    json.BenchmarkCodeDecoder               731528600    709460600   -3.02%
    json.BenchmarkCodeUnmarshal             754774400    731051200   -3.14%
    json.BenchmarkCodeUnmarshalReuse        713379000    704218000   -1.28%
    json.BenchmarkSkipValue                  51594300     51682600   +0.17%
    
    benchmark                                old MB/s     new MB/s  speedup
    json.BenchmarkCodeEncoder                    5.43         7.02    1.29x
    json.BenchmarkCodeMarshal                    5.38         6.94    1.29x
    json.BenchmarkCodeDecoder                    2.65         2.74    1.03x
    json.BenchmarkCodeUnmarshal                  2.57         2.65    1.03x
    json.BenchmarkCodeUnmarshalReuse             2.72         2.76    1.01x
    json.BenchmarkSkipValue                     38.61        38.55    1.00x
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/5369111
    0ed5e6a2
decimal_test.go 3.01 KB