mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Add FlateDefault option and improve zstd allocs
This commit is contained in:
parent
7740f35338
commit
c62a862aa6
|
@ -35,6 +35,7 @@ const (
|
||||||
ZstdBestComp
|
ZstdBestComp
|
||||||
Lzw
|
Lzw
|
||||||
FlateFast
|
FlateFast
|
||||||
|
FlateDefault
|
||||||
FlateComp
|
FlateComp
|
||||||
BrotliFast
|
BrotliFast
|
||||||
BrotliComp
|
BrotliComp
|
||||||
|
@ -76,6 +77,8 @@ var createComp func() Compression = func() Compression {
|
||||||
return &flateCompression{level: flate.BestSpeed}
|
return &flateCompression{level: flate.BestSpeed}
|
||||||
case FlateComp:
|
case FlateComp:
|
||||||
return &flateCompression{level: flate.BestCompression}
|
return &flateCompression{level: flate.BestCompression}
|
||||||
|
case FlateDefault:
|
||||||
|
return &flateCompression{level: flate.DefaultCompression}
|
||||||
case BrotliFast:
|
case BrotliFast:
|
||||||
return &brotliCompression{quality: brotli.BestSpeed}
|
return &brotliCompression{quality: brotli.BestSpeed}
|
||||||
case BrotliDefault:
|
case BrotliDefault:
|
||||||
|
@ -162,7 +165,7 @@ func (s *s2Compression) Decompress(data []byte) ([]byte, error) {
|
||||||
|
|
||||||
type zstdCompression struct {
|
type zstdCompression struct {
|
||||||
level zstd.EncoderLevel
|
level zstd.EncoderLevel
|
||||||
buf []byte
|
buf bytes.Buffer
|
||||||
r *reZstd.Decoder
|
r *reZstd.Decoder
|
||||||
w *reZstd.Encoder
|
w *reZstd.Encoder
|
||||||
}
|
}
|
||||||
|
@ -175,14 +178,18 @@ func (z *zstdCompression) Compress(data []byte) ([]byte, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
z.w.Reset(nil)
|
|
||||||
|
|
||||||
z.buf = z.buf[:0]
|
z.buf.Reset()
|
||||||
res := z.w.EncodeAll(data, z.buf)
|
z.w.Reset(&z.buf)
|
||||||
if len(res) > cap(z.buf) {
|
_, err = z.w.Write(data)
|
||||||
z.buf = res
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
return res, nil
|
err = z.w.Close()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return z.buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (z *zstdCompression) Decompress(data []byte) ([]byte, error) {
|
func (z *zstdCompression) Decompress(data []byte) ([]byte, error) {
|
||||||
|
@ -193,20 +200,17 @@ func (z *zstdCompression) Decompress(data []byte) ([]byte, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = z.r.Reset(nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
z.buf = z.buf[:0]
|
err = z.r.Reset(bytes.NewReader(data))
|
||||||
buf, err := z.r.DecodeAll(data, z.buf)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(buf) > cap(z.buf) {
|
z.buf.Reset()
|
||||||
z.buf = buf
|
_, err = io.Copy(&z.buf, z.r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
return buf, nil
|
return z.buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type lzwCompression struct {
|
type lzwCompression struct {
|
||||||
|
|
Loading…
Reference in a new issue