• Rob Pike's avatar
    encoding/gob: add custom decoder buffer for performance · 63acc48f
    Rob Pike authored
    As we did with encoding, provide a trivial byte reader for
    faster decoding. We can also reduce some of the copying
    by doing the allocation all at once using a slightly different
    interface from byte buffers.
    
    benchmark                            old ns/op     new ns/op     delta
    BenchmarkEndToEndPipe                13368         12902         -3.49%
    BenchmarkEndToEndByteBuffer          5969          5642          -5.48%
    BenchmarkEndToEndSliceByteBuffer     479485        470798        -1.81%
    BenchmarkEncodeComplex128Slice       92367         92201         -0.18%
    BenchmarkEncodeFloat64Slice          39990         38960         -2.58%
    BenchmarkEncodeInt32Slice            30510         27938         -8.43%
    BenchmarkEncodeStringSlice           33753         33365         -1.15%
    BenchmarkDecodeComplex128Slice       232278        196704        -15.32%
    BenchmarkDecodeFloat64Slice          150258        128191        -14.69%
    BenchmarkDecodeInt32Slice            133806        115748        -13.50%
    BenchmarkDecodeStringSlice           335117        300534        -10.32%
    
    LGTM=rsc
    R=rsc
    CC=golang-codereviews
    https://golang.org/cl/154360049
    63acc48f
decode.go 37.7 KB