diff options
| author | Alberto Donizetti <alb.donizetti@gmail.com> | 2017-03-18 18:43:20 +0100 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2017-03-18 18:30:41 +0000 |
| commit | 32cb0ce65b39fc91923ac12a0a94f34b5dfd04be (patch) | |
| tree | ad01b0da4ec6a3f521a9611a3c2006952d56a5aa /src/encoding/gob/encode.go | |
| parent | b6074a417dd707af3a9b39cc54769d7f8185961c (diff) | |
| download | go-32cb0ce65b39fc91923ac12a0a94f34b5dfd04be.tar.xz | |
encoding/gob: speedup floats encoding and decoding
By replacing bytes-reversing routines with bits.ReverseBytes64 calls.
name old time/op new time/op delta
EncodeComplex128Slice-4 35.1µs ± 1% 23.2µs ± 2% -33.94% (p=0.000 n=20+20)
EncodeFloat64Slice-4 17.9µs ± 1% 11.0µs ± 1% -38.36% (p=0.000 n=17+18)
name old time/op new time/op delta
DecodeComplex128Slice-4 79.7µs ± 0% 69.9µs ± 1% -12.31% (p=0.000 n=20+20)
DecodeFloat64Slice-4 47.3µs ± 1% 42.2µs ± 1% -10.65% (p=0.000 n=17+17)
Change-Id: I91a6401c6009b5712fca6258dd1e57c6fe68ea64
Reviewed-on: https://go-review.googlesource.com/38352
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/encoding/gob/encode.go')
| -rw-r--r-- | src/encoding/gob/encode.go | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/src/encoding/gob/encode.go b/src/encoding/gob/encode.go index d67153da90..edf204f47d 100644 --- a/src/encoding/gob/encode.go +++ b/src/encoding/gob/encode.go @@ -209,13 +209,7 @@ func encUint(i *encInstr, state *encoderState, v reflect.Value) { // swizzling. func floatBits(f float64) uint64 { u := math.Float64bits(f) - var v uint64 - for i := 0; i < 8; i++ { - v <<= 8 - v |= u & 0xFF - u >>= 8 - } - return v + return bits.ReverseBytes64(u) } // encFloat encodes the floating point value (float32 float64) referenced by v. |
