perf: optimize Gvk.ApiVersion()

Convert Gvk.ApiVersion() from using strings.Builder to raw string
concatenation. The logic in Gvk.ApiVersion() is simple enough that
raw concatenation executes quicker and consumes less memory.
This commit is contained in:
Ed Overton
2023-02-21 09:44:29 -05:00
parent 22dbd3eb17
commit 93d7511b38
2 changed files with 20 additions and 5 deletions

View File

@@ -122,13 +122,10 @@ func (x Gvk) stableSortString() string {
// ApiVersion returns the combination of Group and Version
func (x Gvk) ApiVersion() string {
var sb strings.Builder
if x.Group != "" {
sb.WriteString(x.Group)
sb.WriteString("/")
return x.Group + "/" + x.Version
}
sb.WriteString(x.Version)
return sb.String()
return x.Version
}
// StringWoEmptyField returns a string representation of the GVK. Non-exist

View File

@@ -4,6 +4,7 @@
package resid
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
@@ -129,6 +130,23 @@ func TestApiVersion(t *testing.T) {
}
}
func BenchmarkApiVersion(b *testing.B) {
for i, bench := range []Gvk{
{Kind: "k"},
{Version: "v", Kind: "k"},
{Group: "g", Kind: "k"},
{Group: "g", Version: "v"},
{Group: "g", Version: "v", Kind: "k"},
{Group: "bitnami.com", Version: "v1alpha1", Kind: "SealedSecret"},
} {
b.Run(fmt.Sprintf("%d", i), func(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = bench.ApiVersion()
}
})
}
}
func TestStringWoEmptyField(t *testing.T) {
for _, hey := range stringTests {
assert.Equal(t, hey.r, hey.x.StringWoEmptyField())