Reduce allocations (#17584)

* Reduce allocations

* Add stringsHasPrefixFold which can compare string prefixes, while ignoring case and not allocating.
* Reuse all msgp.Readers
* Reuse metadata buffers when not reading data.

* Make type safe. Make buffer 4K instead of 8.

* Unslice
This commit is contained in:
Klaus Post
2023-07-06 16:02:08 -07:00
committed by GitHub
parent 1bf23374a3
commit ff5988f4e0
21 changed files with 67 additions and 36 deletions
+2 -1
View File
@@ -255,12 +255,13 @@ type metacacheReader struct {
func newMetacacheReader(r io.Reader) *metacacheReader {
dec := s2DecPool.Get().(*s2.Reader)
dec.Reset(r)
mr := msgp.NewReader(dec)
mr := msgpNewReader(dec)
return &metacacheReader{
mr: mr,
closer: func() {
dec.Reset(nil)
s2DecPool.Put(dec)
readMsgpReaderPoolPut(mr)
},
creator: func() error {
v, err := mr.ReadByte()