Skip to content

Commit 6f28654

Browse files
committed
Do less work on most common size cases
1 parent ce9e0f3 commit 6f28654

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

decoder.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,22 @@ func (d *decoder) sizeFromCtrlByte(ctrlByte byte, offset uint, typeNum dataType)
8282
}
8383

8484
var bytesToRead uint
85-
if size > 28 {
86-
bytesToRead = size - 28
85+
if size < 29 {
86+
return size, offset, nil
8787
}
8888

89+
bytesToRead = size - 28
8990
newOffset := offset + bytesToRead
9091
if newOffset > uint(len(d.buffer)) {
9192
return 0, 0, newOffsetError()
9293
}
94+
if size == 29 {
95+
return 29 + uint(d.buffer[offset]), offset + 1, nil
96+
}
97+
9398
sizeBytes := d.buffer[offset:newOffset]
9499

95100
switch {
96-
case size == 29:
97-
size = 29 + uint(sizeBytes[0])
98101
case size == 30:
99102
size = 285 + uint(uintFromBytes(0, sizeBytes))
100103
case size > 30:

0 commit comments

Comments
 (0)