mirror of
https://github.com/golang/go.git
synced 2025-11-01 17:20:56 +00:00
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>
This commit is contained in:
parent
b6074a417d
commit
32cb0ce65b
2 changed files with 3 additions and 13 deletions
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue