Skip to content

Commit

Permalink
Added benchmark for toNormalizedLower
Browse files Browse the repository at this point in the history
Signed-off-by: RA <ranveeravhad777@gmail.com>
  • Loading branch information
Ranveer777 committed Jun 6, 2024
1 parent 2c4175c commit 885fee4
Showing 1 changed file with 54 additions and 8 deletions.
62 changes: 54 additions & 8 deletions model/labels/regexp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,6 @@ var (
"\xfd",
"\xff\xff",
}
toNormalisedLowerTestCases = map[string]string{
"foo": "foo",
"AAAAAAAAAAAAAAAAAAAAAAAA": "aaaaaaaaaaaaaaaaaaaaaaaa",
"cccccccccccccccccccccccC": "cccccccccccccccccccccccc",
"ſſſſſſſſſſſſſſſſſſſſſſſſS": "sssssssssssssssssssssssss",
"ſſAſſa": "ssassa",
}
)

func TestFastRegexMatcher_MatchString(t *testing.T) {
Expand Down Expand Up @@ -296,6 +289,52 @@ func BenchmarkFastRegexMatcher(b *testing.B) {
}
}

func BenchmarkToNormalizedLower(b *testing.B) {
benchCase := func(l int, uppercase string, asciiOnly bool, alt int) string {
chars := "abcdefghijklmnopqrstuvwxyz"
if !asciiOnly {
chars = "aаbбcвdгeдfеgёhжiзjиkйlкmлnмoнpоqпrрsсtтuуvфwхxцyчzш"
}
// Swap the alphabet to make alternatives.
chars = chars[alt%len(chars):] + chars[:alt%len(chars)]

str := strings.Repeat(chars, l/len(chars)+1)[:l]
switch uppercase {
case "first":
return strings.ToUpper(str[:1]) + str[1:]
case "last":
return str[:len(str)-1] + strings.ToUpper(str[len(str)-1:])
case "all":
return strings.ToUpper(str)
case "none":
return str
default:
panic("invalid uppercase")
}
}

for _, l := range []int{10, 100, 1000, 4000} {
b.Run(fmt.Sprintf("length=%d", l), func(b *testing.B) {
for _, uppercase := range []string{"none", "first", "last", "all"} {
b.Run("uppercase="+uppercase, func(b *testing.B) {
for _, asciiOnly := range []bool{true, false} {
b.Run(fmt.Sprintf("ascii=%t", asciiOnly), func(b *testing.B) {
inputs := make([]string, 10)
for i := range inputs {
inputs[i] = benchCase(l, uppercase, asciiOnly, i)
}
b.ResetTimer()
for n := 0; n < b.N; n++ {
toNormalisedLower(inputs[n%len(inputs)])
}
})
}
})
}
})
}
}

func TestStringMatcherFromRegexp(t *testing.T) {
for _, c := range []struct {
pattern string
Expand Down Expand Up @@ -1153,7 +1192,14 @@ func visitStringMatcher(matcher StringMatcher, callback func(matcher StringMatch
}

func TestToNormalisedLower(t *testing.T) {
for input, expectedOutput := range toNormalisedLowerTestCases {
testCases := map[string]string{
"foo": "foo",
"AAAAAAAAAAAAAAAAAAAAAAAA": "aaaaaaaaaaaaaaaaaaaaaaaa",
"cccccccccccccccccccccccC": "cccccccccccccccccccccccc",
"ſſſſſſſſſſſſſſſſſſſſſſſſS": "sssssssssssssssssssssssss",
"ſſAſſa": "ssassa",
}
for input, expectedOutput := range testCases {
require.Equal(t, expectedOutput, toNormalisedLower(input))
}
}

0 comments on commit 885fee4

Please sign in to comment.