• Rémy Oudompheng's avatar
    strconv: extend Grisu3 algorithm to float32. · d6147d81
    Rémy Oudompheng authored
    Also improve extfloat.Normalize to obtain a modest performance
    gain in parsing, and add a shortcut path for exact integers.
    
    benchmark                              old ns/op    new ns/op    delta
    BenchmarkAtof64Decimal                        73           73   -0.54%
    BenchmarkAtof64Float                          91           91   -0.54%
    BenchmarkAtof64FloatExp                      198          180   -9.09%
    BenchmarkAtof64Big                           307          308   +0.33%
    
    BenchmarkAtof32Decimal                        72           72   +0.42%
    BenchmarkAtof32Float                          83           83   -0.72%
    BenchmarkAtof32FloatExp                      212          186  -12.26%
    BenchmarkAtof32Random                        262          250   -4.58%
    
    BenchmarkAppendFloatDecimal                  474          305  -35.65%
    BenchmarkAppendFloat                         497          489   -1.61%
    BenchmarkAppendFloatExp                      493          483   -2.03%
    BenchmarkAppendFloatNegExp                   481          481   +0.00%
    BenchmarkAppendFloatBig                      667          652   -2.25%
    
    BenchmarkAppendFloat32Integer                338          307   -9.17%
    BenchmarkAppendFloat32ExactFraction          364          439  +20.60%
    BenchmarkAppendFloat32Point                 1299          490  -62.28%
    BenchmarkAppendFloat32Exp                   2593          489  -81.14%
    BenchmarkAppendFloat32NegExp                5116          481  -90.60%
    
    R=rsc, r
    CC=golang-dev, remy
    https://golang.org/cl/6303087
    d6147d81
decimal.go 7.88 KB