]> Cypherpunks repositories - gostls13.git/commit
encoding/gob: Speedup map decoding by reducing the allocations.
authorFilip Gruszczyński <gruszczy@gmail.com>
Thu, 16 Mar 2017 03:11:30 +0000 (20:11 -0700)
committerRob Pike <r@golang.org>
Fri, 24 Mar 2017 19:36:14 +0000 (19:36 +0000)
commit0b9607d1d648ae77d2db86a991db4a1fe921dbd8
tree3ee71a3482420dd956c72904c97e6dc1bef7ac58
parentf1e880386b668a26dd6b7afdea43c9041a917fa5
encoding/gob: Speedup map decoding by reducing the allocations.

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/38317
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/encoding/gob/codec_test.go
src/encoding/gob/decode.go
src/encoding/gob/timing_test.go