Skip to content

Commit ba2c462

Browse files
authored
faster SanitizeNameV2 (#46)
1 parent 1707727 commit ba2c462

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

kubeutils/util.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"crypto/md5"
55
"fmt"
66
"strings"
7+
"unicode"
78
)
89

910
// use SanitizeNameV2
@@ -28,23 +29,19 @@ func SanitizeName(name string) string {
2829
}
2930

3031
func SanitizeNameV2(name string) string {
31-
name = strings.Replace(name, "*", "-", -1)
32-
name = strings.Replace(name, "/", "-", -1)
33-
name = strings.Replace(name, ".", "-", -1)
34-
name = strings.Replace(name, "[", "", -1)
35-
name = strings.Replace(name, "]", "", -1)
36-
name = strings.Replace(name, ":", "-", -1)
37-
name = strings.Replace(name, "_", "-", -1)
38-
name = strings.Replace(name, " ", "-", -1)
39-
name = strings.Replace(name, "\n", "", -1)
40-
name = strings.Replace(name, "\"", "", -1)
41-
name = strings.Replace(name, "'", "", -1)
32+
name = strings.Map(func(r rune) rune {
33+
switch r {
34+
case '*', '/', '.', ':', '_', ' ':
35+
return '-'
36+
case '[', ']', '\n', '"', '\'':
37+
return -1
38+
}
39+
return unicode.ToLower(r)
40+
}, name)
4241
if len(name) > 63 {
4342
hash := md5.Sum([]byte(name))
4443
name = fmt.Sprintf("%s-%x", name[:31], hash)
4544
name = name[:63]
4645
}
47-
name = strings.Replace(name, ".", "-", -1)
48-
name = strings.ToLower(name)
4946
return name
5047
}

kubeutils/util_test.go

+15
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package kubeutils
22

33
import (
4+
"time"
5+
46
. "github.com/onsi/ginkgo/v2"
57
. "github.com/onsi/gomega"
8+
"github.com/onsi/gomega/gmeasure"
69
)
710

811
var _ = Describe("sanitize name", func() {
@@ -47,4 +50,16 @@ var _ = Describe("sanitize name", func() {
4750
Entry("301a's", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4851
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-c73301b7b71679067b02cff4cdc5e70"),
4952
)
53+
It("SanitizeNameV2 efficiently", Serial, Label("measurement"), func() {
54+
experiment := gmeasure.NewExperiment("Repaginating Books")
55+
AddReportEntry(experiment.Name, experiment)
56+
57+
experiment.Sample(func(idx int) {
58+
experiment.MeasureDuration("repagination", func() {
59+
for i := 0; i < 1000; i++ {
60+
SanitizeNameV2("sub []_---]_9da02_--_2")
61+
}
62+
})
63+
}, gmeasure.SamplingConfig{N: 200, Duration: time.Minute})
64+
})
5065
})

0 commit comments

Comments
 (0)