From 6840c862d497030a25dd2213ea0b18dfbfb40a46 Mon Sep 17 00:00:00 2001 From: Nick Ripley Date: Wed, 28 May 2025 15:22:29 -0400 Subject: [PATCH] profiler: use faster gzip for delta decompression For delta profiles, use github.com/klauspost/compress/gzip rather than compress/gzip. It's faster, and we already use it for other decompression after introducing recompression to zstd, so we might as well use it for decompressing during delta computeation too. --- profiler/profile.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/profiler/profile.go b/profiler/profile.go index 4783af0e95..039902f3c2 100644 --- a/profiler/profile.go +++ b/profiler/profile.go @@ -8,7 +8,6 @@ package profiler import ( "bytes" "cmp" - "compress/gzip" "context" "errors" "fmt" @@ -22,6 +21,7 @@ import ( "github.com/DataDog/gostackparse" pprofile "github.com/google/pprof/profile" + "github.com/klauspost/compress/gzip" ) // ProfileType represents a type of profile that the profiler is able to run. @@ -399,19 +399,13 @@ func newFastDeltaProfiler(compressor compressor, v ...pprofutils.ValueType) *fas return fd } -func isGzipData(data []byte) bool { - return bytes.HasPrefix(data, []byte{0x1f, 0x8b}) -} - func (fdp *fastDeltaProfiler) Delta(data []byte) (b []byte, err error) { - if isGzipData(data) { - if err := fdp.gzr.Reset(bytes.NewReader(data)); err != nil { - return nil, err - } - data, err = io.ReadAll(&fdp.gzr) - if err != nil { - return nil, fmt.Errorf("decompressing profile: %v", err) - } + if err := fdp.gzr.Reset(bytes.NewReader(data)); err != nil { + return nil, err + } + data, err = io.ReadAll(&fdp.gzr) + if err != nil { + return nil, fmt.Errorf("decompressing profile: %v", err) } fdp.buf.Reset()