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: https://gitea.com/xorm/xorm/pulls/1691
This commit is contained in:
parent
d485101331
commit
f071e5eb96
|
@ -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 {
|
||||
|
|
|
@ -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…
Reference in New Issue