io: simplify WriteBytes()
Which speeds it up at least twofold for a typical 32-bytes write (and that's for a very naïve test that allocates new BufBinWriter on every iteration): pkg: github.com/CityOfZion/neo-go/pkg/io BenchmarkWriteBytes-8 10000000 124 ns/op BenchmarkWriteBytesOld-8 5000000 251 ns/op
This commit is contained in:
parent
c034aae378
commit
e7687d620d
2 changed files with 10 additions and 2 deletions
|
@ -95,13 +95,16 @@ func (w *BinWriter) WriteVarUint(val uint64) {
|
||||||
|
|
||||||
// WriteBytes writes a variable byte into the underlying io.Writer without prefix.
|
// WriteBytes writes a variable byte into the underlying io.Writer without prefix.
|
||||||
func (w *BinWriter) WriteBytes(b []byte) {
|
func (w *BinWriter) WriteBytes(b []byte) {
|
||||||
w.WriteLE(b)
|
if w.Err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, w.Err = w.w.Write(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteVarBytes writes a variable length byte array into the underlying io.Writer.
|
// WriteVarBytes writes a variable length byte array into the underlying io.Writer.
|
||||||
func (w *BinWriter) WriteVarBytes(b []byte) {
|
func (w *BinWriter) WriteVarBytes(b []byte) {
|
||||||
w.WriteVarUint(uint64(len(b)))
|
w.WriteVarUint(uint64(len(b)))
|
||||||
w.WriteLE(b)
|
w.WriteBytes(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteString writes a variable length string into the underlying io.Writer.
|
// WriteString writes a variable length string into the underlying io.Writer.
|
||||||
|
|
|
@ -210,6 +210,11 @@ func TestWriteBytes(t *testing.T) {
|
||||||
buf := bw.Bytes()
|
buf := bw.Bytes()
|
||||||
assert.Equal(t, 4, len(buf))
|
assert.Equal(t, 4, len(buf))
|
||||||
assert.Equal(t, byte(0xde), buf[0])
|
assert.Equal(t, byte(0xde), buf[0])
|
||||||
|
|
||||||
|
bw = NewBufBinWriter()
|
||||||
|
bw.Err = errors.New("smth bad")
|
||||||
|
bw.WriteBytes(bin)
|
||||||
|
assert.Equal(t, 0, bw.Len())
|
||||||
}
|
}
|
||||||
|
|
||||||
type testSerializable uint16
|
type testSerializable uint16
|
||||||
|
|
Loading…
Reference in a new issue