Browse Source

chore: improve titleCasedName performance (#1691)

udpate

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

chore: improve titleCasedName performance

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

Co-authored-by: Bo-Yi Wu <appleboy.tw@gmail.com>
Reviewed-on: #1691
master
parent
commit
f071e5eb96
2 changed files with 18 additions and 7 deletions
  1. +8
    -7
      names/mapper.go
  2. +10
    -0
      names/mapper_test.go

+ 8
- 7
names/mapper.go View File

@@ -103,27 +103,28 @@ func (mapper SnakeMapper) Obj2Table(name string) string {
}

func titleCasedName(name string) string {
newstr := make([]rune, 0)
newstr := make([]byte, 0, len(name))
upNextChar := true

name = strings.ToLower(name)

for _, chr := range name {
for i := 0; i < len(name); i++ {
c := name[i]
switch {
case upNextChar:
upNextChar = false
if 'a' <= chr && chr <= 'z' {
chr -= ('a' - 'A')
if 'a' <= c && c <= 'z' {
c -= 'a' - 'A'
}
case chr == '_':
case c == '_':
upNextChar = true
continue
}

newstr = append(newstr, chr)
newstr = append(newstr, c)
}

return string(newstr)
return b2s(newstr)
}

func (mapper SnakeMapper) Table2Obj(name string) string {


+ 10
- 0
names/mapper_test.go View File

@@ -58,3 +58,13 @@ func BenchmarkSnakeCasedName(b *testing.B) {
_ = snakeCasedName(s)
}
}

func BenchmarkTitleCasedName(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()

s := strings.Repeat("foo_bar", 32)
for i := 0; i < b.N; i++ {
_ = titleCasedName(s)
}
}

Loading…
Cancel
Save