mirror of
https://github.com/golang/go
synced 2024-11-19 21:04:43 -07:00
gob: remove another allocation.
The top level bytes.Buffer is always there and can be re-used. Rpc goes from 83 to 79 mallocs per round trip. R=rsc CC=golang-dev https://golang.org/cl/4271062
This commit is contained in:
parent
1c05a90ae2
commit
d1b75bbc46
@ -21,6 +21,7 @@ type Encoder struct {
|
||||
countState *encoderState // stage for writing counts
|
||||
freeList *encoderState // list of free encoderStates; avoids reallocation
|
||||
buf []byte // for collecting the output.
|
||||
byteBuf bytes.Buffer // buffer for top-level encoderState
|
||||
err os.Error
|
||||
}
|
||||
|
||||
@ -219,7 +220,8 @@ func (enc *Encoder) EncodeValue(value reflect.Value) os.Error {
|
||||
}
|
||||
|
||||
enc.err = nil
|
||||
state := enc.newEncoderState(new(bytes.Buffer))
|
||||
enc.byteBuf.Reset()
|
||||
state := enc.newEncoderState(&enc.byteBuf)
|
||||
|
||||
enc.sendTypeDescriptor(enc.writer(), state, ut)
|
||||
enc.sendTypeId(state, ut)
|
||||
|
Loading…
Reference in New Issue
Block a user