• Rémy Oudompheng's avatar
    strconv: reduce buffer size for multi-precision decimals. · 3a2dec02
    Rémy Oudompheng authored
    The longest numbers we have to represent are the smallest denormals.
    Their decimal mantissa is not longer than 5^1100. Taking into
    account some extra size for in-place operations, 800 digits are
    enough. This saves time used for zero intiialization of extra
    bytes.
    
                                            old ns/op  new ns/op    delta
    strconv_test.BenchmarkAtof64Decimal           521        334   -35.9%
    strconv_test.BenchmarkAtof64Float             572        391   -31.6%
    strconv_test.BenchmarkAtof64FloatExp        10242      10036    -2.0%
    strconv_test.BenchmarkAtof64Big              4229       4029    -4.7%
    strconv_test.BenchmarkFormatFloatDecimal     1396        934   -33.1%
    strconv_test.BenchmarkFormatFloat            4295       3341   -22.2%
    strconv_test.BenchmarkFormatFloatExp        12035      11181    -7.1%
    strconv_test.BenchmarkFormatFloatBig         4213       3229   -23.4%
    strconv_test.BenchmarkAppendFloatDecimal     1031        600   -41.8%
    strconv_test.BenchmarkAppendFloat            3971       3044   -23.3%
    strconv_test.BenchmarkAppendFloatExp        11699      11003    -5.9%
    strconv_test.BenchmarkAppendFloatBig         3836       2915   -24.0%
    
    R=golang-dev, bradfitz, rsc
    CC=golang-dev, remy
    https://golang.org/cl/5491064
    3a2dec02
decimal.go 7.65 KB