From 0b673002f9cd7e2711f2c8cf05aa069a0a91d822 Mon Sep 17 00:00:00 2001 From: Eng Zer Jun Date: Mon, 24 Jul 2023 18:02:50 +0800 Subject: [PATCH] perf(httpClient): compare strings with `strings.EqualFold` (#962) Comparing two strings to the same case with `strings.ToLower` is more computational expensive than `strings.EqualFold`. Sample benchmark: func BenchmarkToLower(b *testing.B) { for i := 0; i < b.N; i++ { if strings.ToLower("CONTENT-TYPE") != strings.ToLower("content-type") { b.Fail() } } } func BenchmarkEqualFold(b *testing.B) { for i := 0; i < b.N; i++ { if !strings.EqualFold("CONTENT-TYPE", "content-type") { b.Fail() } } } goos: linux goarch: amd64 pkg: github.com/datreeio/datree/pkg/httpClient cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics BenchmarkToLower-16 8183317 192.1 ns/op 16 B/op 1 allocs/op BenchmarkEqualFold-16 82634701 12.92 ns/op 0 B/op 0 allocs/op PASS ok github.com/datreeio/datree/pkg/httpClient 4.181s Reference: https://staticcheck.dev/docs/checks/#SA6005 Signed-off-by: Eng Zer Jun --- pkg/httpClient/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/httpClient/client.go b/pkg/httpClient/client.go index 9cf3eb5e88..9a78de2104 100644 --- a/pkg/httpClient/client.go +++ b/pkg/httpClient/client.go @@ -162,7 +162,7 @@ func (c *Client) parseBody(body interface{}) (io.ReadWriter, error) { func (c *Client) getValueOfHeader(headers map[string]string, header string) string { for currentHeader, currentValue := range headers { - if strings.ToLower(currentHeader) == strings.ToLower(header) { + if strings.EqualFold(currentHeader, header) { return currentValue } }