Skip to content

Commit c305c8c

Browse files
authored
perf: inline binary.Varint by hand (#272)
1 parent c025274 commit c305c8c

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

frac/sealed/seqids/blocks.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,20 @@ func unpackRawIDsVarint(src []byte, dst []uint64) ([]uint64, error) {
8080
dst = dst[:0]
8181
id := uint64(0)
8282
for len(src) != 0 {
83-
delta, n := binary.Varint(src)
83+
udelta, n := binary.Uvarint(src)
8484
if n <= 0 {
8585
return nil, errors.New("varint decoded with error")
8686
}
87-
src = src[n:]
87+
88+
delta := int64(udelta >> 1)
89+
if udelta&1 != 0 {
90+
delta = ^delta
91+
}
92+
8893
id += uint64(delta)
8994
dst = append(dst, id)
95+
96+
src = src[n:]
9097
}
9198
return dst, nil
9299
}

0 commit comments

Comments
 (0)