]> Cypherpunks repositories - gostls13.git/commit
encoding/gob: use simple append-only buffer for encoding
authorRob Pike <r@golang.org>
Sat, 18 Oct 2014 03:51:15 +0000 (20:51 -0700)
committerRob Pike <r@golang.org>
Sat, 18 Oct 2014 03:51:15 +0000 (20:51 -0700)
commit65dde1ed4b1c71fad6d2b106b779c5191e5f7cd7
treef64040a4c614c3203b10e39b5678ae66cb91a9d7
parent9965e4022030f56fc241be8934d5e6b95ac84900
encoding/gob: use simple append-only buffer for encoding
Bytes buffers have more API and are a little slower. Since appending
is a key part of the path in encode, using a faster implementation
speeds things up measurably.
The couple of positive swings are likely garbage-collection related
since memory allocation looks different in the benchmark now.
I am not concerned by them.

benchmark                            old ns/op     new ns/op     delta
BenchmarkEndToEndPipe                6620          6388          -3.50%
BenchmarkEndToEndByteBuffer          3548          3600          +1.47%
BenchmarkEndToEndSliceByteBuffer     336678        367980        +9.30%
BenchmarkEncodeComplex128Slice       78199         71297         -8.83%
BenchmarkEncodeFloat64Slice          37731         32258         -14.51%
BenchmarkEncodeInt32Slice            26780         22977         -14.20%
BenchmarkEncodeStringSlice           35882         26492         -26.17%
BenchmarkDecodeComplex128Slice       194819        185126        -4.98%
BenchmarkDecodeFloat64Slice          120538        120102        -0.36%
BenchmarkDecodeInt32Slice            106442        107275        +0.78%
BenchmarkDecodeStringSlice           272902        269866        -1.11%

LGTM=ruiu
R=golang-codereviews, ruiu
CC=golang-codereviews
https://golang.org/cl/160990043
src/encoding/gob/codec_test.go
src/encoding/gob/decoder.go
src/encoding/gob/encode.go
src/encoding/gob/encoder.go