io: optimize BinReader.ReadArray()
reflect.MethodByName is a rather expensive function especially when called on hot path. This became obvious during profiling of db restore. This commit replaces reflection with a cast to an interface.
This commit is contained in:
parent
e4d821f32d
commit
1784a14148
3 changed files with 18 additions and 33 deletions
|
@ -326,15 +326,10 @@ func TestBinReader_ReadArray(t *testing.T) {
|
|||
require.NoError(t, r.Err)
|
||||
require.Equal(t, []testSerializable{}, arrVal)
|
||||
|
||||
r = NewBinReaderFromBuf([]byte{0})
|
||||
r.Err = errors.New("error")
|
||||
require.Panics(t, func() { r.ReadArray(&[]*int{}) })
|
||||
r = NewBinReaderFromBuf([]byte{1})
|
||||
require.Panics(t, func() { r.ReadArray(&[]int{1}) })
|
||||
|
||||
r = NewBinReaderFromBuf([]byte{0})
|
||||
r.Err = errors.New("error")
|
||||
require.Panics(t, func() { r.ReadArray(&[]int{}) })
|
||||
|
||||
r = NewBinReaderFromBuf([]byte{0})
|
||||
r.Err = errors.New("error")
|
||||
require.Panics(t, func() { r.ReadArray(0) })
|
||||
require.Panics(t, func() { r.ReadArray(1) })
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue