chore: improve snakeCasedName performance #1688

Merged
lunny merged 3 commits from performance into master 2020-05-22 02:54:50 +00:00
2 changed files with 2 additions and 27 deletions
Showing only changes of commit 99f0e5e05c - Show all commits

View File

@ -78,27 +78,12 @@ func (m SameMapper) Table2Obj(t string) string {
type SnakeMapper struct {
}
func snakeCasedName(name string) string {
newstr := make([]rune, 0)
for idx, chr := range name {
if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
if idx > 0 {
newstr = append(newstr, '_')
}
chr -= ('A' - 'a')
}
newstr = append(newstr, chr)
}
return string(newstr)
}
func b2s(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
func snakeCasedNameNew(name string) string {
newstr := make([]byte, 0, len(name))
func snakeCasedName(name string) string {
newstr := make([]byte, 0, len(name)+1)
for i := 0; i < len(name); i++ {
c := name[i]
if isUpper := 'A' <= c && c <= 'Z'; isUpper {

View File

@ -58,13 +58,3 @@ func BenchmarkSnakeCasedName(b *testing.B) {
_ = snakeCasedName(s)
}
}
func BenchmarkSnakeCasedNameNew(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
s := strings.Repeat("FooBar", 32)
for i := 0; i < b.N; i++ {
_ = snakeCasedNameNew(s)
}
}