Reuse small buffers (#12948)

When reading metadata allow reuse of buffers 
in certain cases. Take the low-hanging fruit.

Reduce GC overhead when listing.
This commit is contained in:
Klaus Post
2021-08-12 23:27:22 +02:00
committed by GitHub
parent 3eac02f676
commit 89febdb3d6
5 changed files with 34 additions and 14 deletions

View File

@@ -56,10 +56,11 @@ const metacacheStreamVersion = 2
// metacacheWriter provides a serializer of metacache objects.
type metacacheWriter struct {
mw *msgp.Writer
creator func() error
closer func() error
blockSize int
mw *msgp.Writer
creator func() error
closer func() error
blockSize int
reuseBlocks bool
streamErr error
streamWg sync.WaitGroup
@@ -141,6 +142,9 @@ func (w *metacacheWriter) write(objs ...metaCacheEntry) error {
if err != nil {
return err
}
if w.reuseBlocks && cap(o.metadata) >= metaDataReadDefault {
metaDataPool.Put(o.metadata)
}
}
return nil