From f32cb520dc622e26c87482e1bb7b13df7fa06341 Mon Sep 17 00:00:00 2001 From: Caleb Gardner Date: Wed, 16 Apr 2025 18:02:19 -0500 Subject: [PATCH] Zstd re-use --- internal/decompress/zstd.go | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/internal/decompress/zstd.go b/internal/decompress/zstd.go index acf977f..bed443f 100644 --- a/internal/decompress/zstd.go +++ b/internal/decompress/zstd.go @@ -1,31 +1,20 @@ package decompress import ( - "sync" - "github.com/klauspost/compress/zstd" ) type Zstd struct { - pool sync.Pool + rdr *zstd.Decoder } -func NewZstd() *Zstd { - return &Zstd{ - pool: sync.Pool{ - New: func() any { - rdr, _ := zstd.NewReader(nil, zstd.WithDecoderLowmem(true), zstd.WithDecoderConcurrency(1)) - return rdr - }, - }, +func NewZstd() Zstd { + rdr, _ := zstd.NewReader(nil, zstd.WithDecoderLowmem(true)) + return Zstd{ + rdr: rdr, } } -func (z *Zstd) Decompress(data []byte) ([]byte, error) { - rdr := z.pool.Get().(*zstd.Decoder) - defer func() { - rdr.Reset(nil) - z.pool.Put(rdr) - }() - return rdr.DecodeAll(data, nil) +func (z Zstd) Decompress(data []byte) ([]byte, error) { + return z.rdr.DecodeAll(data, nil) }