mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-14 02:10:00 +08:00
perf: pre-allocate all known length arrays to avoid re-scaling (#5029)
Co-authored-by: Kevin Wan <wanjunfeng@gmail.com>
This commit is contained in:
committed by
GitHub
parent
a2b98dbcf7
commit
130e1ba963
@@ -250,8 +250,9 @@ func extractPositionalParamsFromPath(route spec.Route) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
var params []string
|
||||
for _, member := range ds.GetTagMembers(pathTagKey) {
|
||||
tagMembers := ds.GetTagMembers(pathTagKey)
|
||||
params := make([]string, 0, len(tagMembers))
|
||||
for _, member := range tagMembers {
|
||||
dartType := member.Type.Name()
|
||||
params = append(params, fmt.Sprintf("%s %s", dartType, getPropertyFromMember(member)))
|
||||
}
|
||||
|
||||
@@ -36,13 +36,13 @@ func genConfig(dir string, cfg *config.Config, api *spec.ApiSpec) error {
|
||||
}
|
||||
|
||||
authNames := getAuths(api)
|
||||
var auths []string
|
||||
auths := make([]string, 0, len(authNames))
|
||||
for _, item := range authNames {
|
||||
auths = append(auths, fmt.Sprintf("%s %s", item, jwtTemplate))
|
||||
}
|
||||
|
||||
jwtTransNames := getJwtTrans(api)
|
||||
var jwtTransList []string
|
||||
jwtTransList := make([]string, 0, len(jwtTransNames))
|
||||
for _, item := range jwtTransNames {
|
||||
jwtTransList = append(jwtTransList, fmt.Sprintf("%s %s", item, jwtTransTemplate))
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ func genMain(dir, rootPkg string, cfg *config.Config, api *spec.ApiSpec) error {
|
||||
}
|
||||
|
||||
func genMainImports(parentPkg string) string {
|
||||
var imports []string
|
||||
imports := make([]string, 0, 5)
|
||||
imports = append(imports, fmt.Sprintf("\"%s\"", pathx.JoinPackages(parentPkg, configDir)))
|
||||
imports = append(imports, fmt.Sprintf("\"%s\"", pathx.JoinPackages(parentPkg, handlerDir)))
|
||||
imports = append(imports, fmt.Sprintf("\"%s\"\n", pathx.JoinPackages(parentPkg, contextDir)))
|
||||
|
||||
@@ -154,7 +154,7 @@ func genTypesWithGroup(dir string, cfg *config.Config, api *spec.ApiSpec) error
|
||||
}
|
||||
|
||||
for group, typeGroup := range groupTypes {
|
||||
var types []spec.Type
|
||||
types := make([]spec.Type, 0, len(typeGroup))
|
||||
for _, v := range typeGroup {
|
||||
types = append(types, v)
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ func (v *ApiVisitor) VisitTypeLit(ctx *api.TypeLitContext) any {
|
||||
// VisitTypeBlock implements from api.BaseApiParserVisitor
|
||||
func (v *ApiVisitor) VisitTypeBlock(ctx *api.TypeBlockContext) any {
|
||||
list := ctx.AllTypeBlockBody()
|
||||
var types []TypeExpr
|
||||
types := make([]TypeExpr, 0, len(list))
|
||||
for _, each := range list {
|
||||
types = append(types, each.Accept(v).(TypeExpr))
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ func (p parser) fillTypes() error {
|
||||
for _, item := range p.ast.Type {
|
||||
switch v := (item).(type) {
|
||||
case *ast.TypeStruct:
|
||||
var members []spec.Member
|
||||
members := make([]spec.Member, 0, len(v.Fields))
|
||||
for _, item := range v.Fields {
|
||||
members = append(members, p.fieldToMember(item))
|
||||
}
|
||||
|
||||
@@ -20,11 +20,11 @@ const (
|
||||
var definedKeys = []string{bodyTagKey, formTagKey, pathTagKey, headerTagKey}
|
||||
|
||||
func (s Service) JoinPrefix() Service {
|
||||
var groups []Group
|
||||
groups := make([]Group, 0, len(s.Groups))
|
||||
for _, g := range s.Groups {
|
||||
prefix := strings.TrimSpace(g.GetAnnotation(RoutePrefixKey))
|
||||
prefix = strings.ReplaceAll(prefix, `"`, "")
|
||||
var routes []Route
|
||||
routes := make([]Route, 0, len(g.Routes))
|
||||
for _, r := range g.Routes {
|
||||
r.Path = path.Join("/", prefix, r.Path)
|
||||
routes = append(routes, r)
|
||||
|
||||
@@ -66,7 +66,7 @@ func (t *Tags) Keys() []string {
|
||||
if t == nil {
|
||||
return []string{}
|
||||
}
|
||||
var keys []string
|
||||
keys := make([]string, 0, len(t.tags))
|
||||
for _, tag := range t.tags {
|
||||
keys = append(keys, tag.Key)
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ func fillAllStructs(api *spec.ApiSpec) {
|
||||
}
|
||||
|
||||
for _, group := range api.Service.Groups {
|
||||
var routes []spec.Route
|
||||
routes := make([]spec.Route, 0, len(group.Routes))
|
||||
for _, route := range group.Routes {
|
||||
route.RequestType = fillStruct("", route.RequestType, structTypes)
|
||||
route.ResponseType = fillStruct("", route.ResponseType, structTypes)
|
||||
@@ -74,7 +74,7 @@ func fillStruct(parent string, tp spec.Type, allTypes map[string]spec.DefineStru
|
||||
val.Members = members
|
||||
return val
|
||||
case spec.NestedStruct:
|
||||
var members []spec.Member
|
||||
members := make([]spec.Member, 0, len(val.Members))
|
||||
for _, member := range val.Members {
|
||||
switch memberType := member.Type.(type) {
|
||||
case spec.PointerType:
|
||||
|
||||
@@ -67,11 +67,11 @@ func enumsValueFromOptions(options []string) []any {
|
||||
}
|
||||
for _, option := range options {
|
||||
if strings.HasPrefix(option, enumFlag) {
|
||||
var resp = make([]any, 0)
|
||||
val := option[8:]
|
||||
fields := util.FieldsAndTrimSpace(val, func(r rune) bool {
|
||||
return r == '|'
|
||||
})
|
||||
var resp = make([]any, 0, len(fields))
|
||||
for _, field := range fields {
|
||||
resp = append(resp, field)
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ func isOptional(_ Context, options []string) bool {
|
||||
|
||||
func pathVariable2SwaggerVariable(_ Context, path string) string {
|
||||
pathItems := strings.FieldsFunc(path, slashRune)
|
||||
var resp []string
|
||||
resp := make([]string, 0, len(pathItems))
|
||||
for _, v := range pathItems {
|
||||
if strings.HasPrefix(v, ":") {
|
||||
resp = append(resp, "{"+v[1:]+"}")
|
||||
|
||||
@@ -90,7 +90,7 @@ func ToUpperCase(r rune) rune {
|
||||
|
||||
// ToLower returns a copy string by converting it into lower
|
||||
func ToLower(s string) string {
|
||||
var out []rune
|
||||
out := make([]rune, 0, len(s))
|
||||
for _, r := range s {
|
||||
out = append(out, ToLowerCase(r))
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func ToLower(s string) string {
|
||||
|
||||
// ToUpper returns a copy string by converting it into upper
|
||||
func ToUpper(s string) string {
|
||||
var out []rune
|
||||
out := make([]rune, 0, len(s))
|
||||
for _, r := range s {
|
||||
out = append(out, ToUpperCase(r))
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ func (p pattern) Match(s string) bool {
|
||||
}
|
||||
|
||||
func (p pattern) list() []string {
|
||||
var ret []string
|
||||
ret := make([]string, 0, len(p))
|
||||
for v := range p {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ type Join []string
|
||||
|
||||
func genCacheKeys(prefix string, table parser.Table) (Key, []Key) {
|
||||
var primaryKey Key
|
||||
var uniqueKey []Key
|
||||
uniqueKey := make([]Key, 0, len(table.UniqueIndex))
|
||||
primaryKey = genCacheKey(prefix, table.Db, table.Name, []*parser.Field{&table.PrimaryKey.Field})
|
||||
for _, each := range table.UniqueIndex {
|
||||
uniqueKey = append(uniqueKey, genCacheKey(prefix, table.Db, table.Name, each))
|
||||
|
||||
Reference in New Issue
Block a user