mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
optimize more allocs
This commit is contained in:
parent
08c3fc6ca9
commit
1ef02aad26
|
@ -163,15 +163,22 @@ func (s *s2Compression) Decompress(data []byte) ([]byte, error) {
|
||||||
type zstdCompression struct {
|
type zstdCompression struct {
|
||||||
level zstd.EncoderLevel
|
level zstd.EncoderLevel
|
||||||
buf []byte
|
buf []byte
|
||||||
|
r *reZstd.Decoder
|
||||||
|
w *reZstd.Encoder
|
||||||
}
|
}
|
||||||
|
|
||||||
func (z *zstdCompression) Compress(data []byte) ([]byte, error) {
|
func (z *zstdCompression) Compress(data []byte) ([]byte, error) {
|
||||||
w, err := reZstd.NewWriter(nil, reZstd.WithEncoderLevel(z.level))
|
var err error
|
||||||
if err != nil {
|
if z.w == nil {
|
||||||
return nil, err
|
z.w, err = reZstd.NewWriter(nil, reZstd.WithEncoderLevel(z.level))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
z.w.Reset(nil)
|
||||||
|
|
||||||
z.buf = z.buf[:0]
|
z.buf = z.buf[:0]
|
||||||
res := w.EncodeAll(data, z.buf)
|
res := z.w.EncodeAll(data, z.buf)
|
||||||
if len(res) > cap(z.buf) {
|
if len(res) > cap(z.buf) {
|
||||||
z.buf = res
|
z.buf = res
|
||||||
}
|
}
|
||||||
|
@ -179,12 +186,20 @@ func (z *zstdCompression) Compress(data []byte) ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (z *zstdCompression) Decompress(data []byte) ([]byte, error) {
|
func (z *zstdCompression) Decompress(data []byte) ([]byte, error) {
|
||||||
decoder, err := reZstd.NewReader(nil)
|
var err error
|
||||||
|
if z.r == nil {
|
||||||
|
z.r, err = reZstd.NewReader(nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = z.r.Reset(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
z.buf = z.buf[:0]
|
z.buf = z.buf[:0]
|
||||||
buf, err := decoder.DecodeAll(data, z.buf)
|
buf, err := z.r.DecodeAll(data, z.buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue