From 4dab7b8e6c3c0666ecdee26ed067b598ec64bc25 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Mon, 29 Apr 2024 12:34:07 +0200 Subject: [PATCH] Extend benchmark with different size --- http/middleware/compress/compress_test.go | 47 ++++++++++++++--------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/http/middleware/compress/compress_test.go b/http/middleware/compress/compress_test.go index 3e4c6047..60888989 100644 --- a/http/middleware/compress/compress_test.go +++ b/http/middleware/compress/compress_test.go @@ -2,12 +2,15 @@ package compress import ( "bytes" + "fmt" "io" "net/http" "net/http/httptest" "os" "testing" + "github.com/datarhei/core/v16/math/rand" + "github.com/andybalholm/brotli" "github.com/klauspost/compress/gzip" "github.com/klauspost/compress/zstd" @@ -287,31 +290,37 @@ func TestCompressWithStatic(t *testing.T) { func BenchmarkCompress(b *testing.B) { schemes := getTestcases() - for scheme := range schemes { - b.Run(scheme.String(), func(b *testing.B) { - e := echo.New() + for i := 1; i <= 18; i++ { + datalen := 2 << i + data := []byte(rand.String(datalen)) - req := httptest.NewRequest(http.MethodGet, "/", nil) - req.Header.Set(echo.HeaderAcceptEncoding, scheme.String()) + for scheme := range schemes { + name := fmt.Sprintf("%s-%d", scheme.String(), datalen) + b.Run(name, func(b *testing.B) { + e := echo.New() - h := NewWithConfig(Config{Level: BestSpeed, Schemes: []Scheme{scheme}})(func(c echo.Context) error { - c.Response().Write([]byte("testtesttesttesttesttesttesttesttesttesttesttesttest")) - return nil + req := httptest.NewRequest(http.MethodGet, "/", nil) + req.Header.Set(echo.HeaderAcceptEncoding, scheme.String()) + + h := NewWithConfig(Config{Level: BestSpeed, Schemes: []Scheme{scheme}})(func(c echo.Context) error { + c.Response().Write(data) + return nil + }) + + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + rec := httptest.NewRecorder() + c := e.NewContext(req, rec) + h(c) + } }) - - b.ReportAllocs() - b.ResetTimer() - - for i := 0; i < b.N; i++ { - rec := httptest.NewRecorder() - c := e.NewContext(req, rec) - h(c) - } - }) + } } } -func BenchmarkCompressLarge(b *testing.B) { +func BenchmarkCompressJSON(b *testing.B) { data, err := os.ReadFile("./fixtures/processList.json") require.NoError(b, err)