• Filip Gruszczyński's avatar
    encoding/gob: Speedup map decoding by reducing the allocations. · 0b9607d1
    Filip Gruszczyński authored
    The improvementis achieved in encoding/gob/decode.go decodeMap by
    allocate keyInstr and elemInstr only once and pass it to
    decodeIntoValue, instead of allocating a new instance on every loop
    cycle.
    
    name                     old time/op  new time/op  delta
    DecodeComplex128Slice-8  64.2µs ±10%  62.2µs ± 8%     ~     (p=0.686 n=4+4)
    DecodeFloat64Slice-8     37.1µs ± 3%  36.5µs ± 5%     ~     (p=0.343 n=4+4)
    DecodeInt32Slice-8       33.7µs ± 3%  32.7µs ± 4%     ~     (p=0.200 n=4+4)
    DecodeStringSlice-8      59.7µs ± 5%  57.3µs ± 1%     ~     (p=0.114 n=4+4)
    DecodeInterfaceSlice-8    543µs ± 7%   497µs ± 3%     ~     (p=0.057 n=4+4)
    DecodeMap-8              3.78ms ± 8%  2.66ms ± 2%  -29.69%  (p=0.029 n=4+4)
    
    Updates #19525
    
    Change-Id: Iec5fa4530de76f0a70da5de8a129a567b4aa096e
    Reviewed-on: https://go-review.googlesource.com/38317Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Reviewed-by: 's avatarRob Pike <r@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    0b9607d1
decode.go 38.8 KB