]> Cypherpunks repositories - gostls13.git/commit
encoding/gob: add custom decoder buffer for performance
authorRob Pike <r@golang.org>
Mon, 20 Oct 2014 14:33:08 +0000 (07:33 -0700)
committerRob Pike <r@golang.org>
Mon, 20 Oct 2014 14:33:08 +0000 (07:33 -0700)
commit63acc48f8794aa51b91d7e482ba9271e54d3f77a
tree864f4723b923818b506b6ecb0db4f56b9a42f72a
parent8ba47e3d99b0cf1c86e10ece756ece3f9abeba04
encoding/gob: add custom decoder buffer for performance
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
src/encoding/gob/codec_test.go
src/encoding/gob/decode.go
src/encoding/gob/decoder.go