mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 18:26:52 +08:00
Perfomance: Add preallocation for some slices (#61632)
This commit is contained in:
@ -324,11 +324,10 @@ func printProperties(w io.Writer, s *schema) {
|
|||||||
table.SetAutoWrapText(false)
|
table.SetAutoWrapText(false)
|
||||||
|
|
||||||
// Buffer all property rows so that we can sort them before printing them.
|
// Buffer all property rows so that we can sort them before printing them.
|
||||||
var rows [][]string
|
rows := make([][]string, 0, len(s.Properties))
|
||||||
|
|
||||||
for k, p := range s.Properties {
|
for k, p := range s.Properties {
|
||||||
// Generate relative links for objects and arrays of objects.
|
// Generate relative links for objects and arrays of objects.
|
||||||
var propType []string
|
propType := make([]string, 0, len(p.Type))
|
||||||
for _, pt := range p.Type {
|
for _, pt := range p.Type {
|
||||||
switch pt {
|
switch pt {
|
||||||
case PropertyTypeObject:
|
case PropertyTypeObject:
|
||||||
@ -372,7 +371,7 @@ func printProperties(w io.Writer, s *schema) {
|
|||||||
desc := p.Description
|
desc := p.Description
|
||||||
|
|
||||||
if len(p.Enum) > 0 {
|
if len(p.Enum) > 0 {
|
||||||
var vals []string
|
vals := make([]string, 0, len(p.Enum))
|
||||||
for _, e := range p.Enum {
|
for _, e := range p.Enum {
|
||||||
vals = append(vals, e.String())
|
vals = append(vals, e.String())
|
||||||
}
|
}
|
||||||
|
@ -1777,8 +1777,8 @@ func (cfg *Cfg) readDataSourcesSettings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetAllowedOriginGlobs(originPatterns []string) ([]glob.Glob, error) {
|
func GetAllowedOriginGlobs(originPatterns []string) ([]glob.Glob, error) {
|
||||||
var originGlobs []glob.Glob
|
|
||||||
allowedOrigins := originPatterns
|
allowedOrigins := originPatterns
|
||||||
|
originGlobs := make([]glob.Glob, 0, len(allowedOrigins))
|
||||||
for _, originPattern := range allowedOrigins {
|
for _, originPattern := range allowedOrigins {
|
||||||
g, err := glob.Compile(originPattern)
|
g, err := glob.Compile(originPattern)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -380,7 +380,7 @@ func queryModel(query backend.DataQuery) (grafanaQuery, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) buildQueryExecutors(logger log.Logger, req *backend.QueryDataRequest) ([]cloudMonitoringQueryExecutor, error) {
|
func (s *Service) buildQueryExecutors(logger log.Logger, req *backend.QueryDataRequest) ([]cloudMonitoringQueryExecutor, error) {
|
||||||
var cloudMonitoringQueryExecutors []cloudMonitoringQueryExecutor
|
cloudMonitoringQueryExecutors := make([]cloudMonitoringQueryExecutor, 0, len(req.Queries))
|
||||||
startTime := req.Queries[0].TimeRange.From
|
startTime := req.Queries[0].TimeRange.From
|
||||||
endTime := req.Queries[0].TimeRange.To
|
endTime := req.Queries[0].TimeRange.To
|
||||||
durationSeconds := int(endTime.Sub(startTime).Seconds())
|
durationSeconds := int(endTime.Sub(startTime).Seconds())
|
||||||
|
@ -248,7 +248,7 @@ func ParseMetricDataQueries(dataQueries []backend.DataQuery, startTime time.Time
|
|||||||
metricDataQueries[query.RefID] = metricsDataQuery
|
metricDataQueries[query.RefID] = metricsDataQuery
|
||||||
}
|
}
|
||||||
|
|
||||||
var result []*CloudWatchQuery
|
result := make([]*CloudWatchQuery, 0, len(metricDataQueries))
|
||||||
for refId, mdq := range metricDataQueries {
|
for refId, mdq := range metricDataQueries {
|
||||||
cwQuery := &CloudWatchQuery{
|
cwQuery := &CloudWatchQuery{
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
@ -46,8 +46,9 @@ func parseQuery(tsdbQuery []backend.DataQuery) ([]*Query, error) {
|
|||||||
|
|
||||||
func parseBucketAggs(model *simplejson.Json) ([]*BucketAgg, error) {
|
func parseBucketAggs(model *simplejson.Json) ([]*BucketAgg, error) {
|
||||||
var err error
|
var err error
|
||||||
var result []*BucketAgg
|
bucketAggs := model.Get("bucketAggs").MustArray()
|
||||||
for _, t := range model.Get("bucketAggs").MustArray() {
|
result := make([]*BucketAgg, 0, len(bucketAggs))
|
||||||
|
for _, t := range bucketAggs {
|
||||||
aggJSON := simplejson.NewFromAny(t)
|
aggJSON := simplejson.NewFromAny(t)
|
||||||
agg := &BucketAgg{}
|
agg := &BucketAgg{}
|
||||||
|
|
||||||
@ -71,8 +72,9 @@ func parseBucketAggs(model *simplejson.Json) ([]*BucketAgg, error) {
|
|||||||
|
|
||||||
func parseMetrics(model *simplejson.Json) ([]*MetricAgg, error) {
|
func parseMetrics(model *simplejson.Json) ([]*MetricAgg, error) {
|
||||||
var err error
|
var err error
|
||||||
var result []*MetricAgg
|
metrics := model.Get("metrics").MustArray()
|
||||||
for _, t := range model.Get("metrics").MustArray() {
|
result := make([]*MetricAgg, 0, len(metrics))
|
||||||
|
for _, t := range metrics {
|
||||||
metricJSON := simplejson.NewFromAny(t)
|
metricJSON := simplejson.NewFromAny(t)
|
||||||
metric := &MetricAgg{}
|
metric := &MetricAgg{}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
|
|||||||
logger.Debug("Making a non-Flux type query")
|
logger.Debug("Making a non-Flux type query")
|
||||||
|
|
||||||
var allRawQueries string
|
var allRawQueries string
|
||||||
var queries []Query
|
queries := make([]Query, 0, len(req.Queries))
|
||||||
|
|
||||||
for _, reqQuery := range req.Queries {
|
for _, reqQuery := range req.Queries {
|
||||||
query, err := s.queryParser.Parse(reqQuery)
|
query, err := s.queryParser.Parse(reqQuery)
|
||||||
|
@ -70,9 +70,10 @@ func (qp *InfluxdbQueryParser) Parse(query backend.DataQuery) (*Query, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (qp *InfluxdbQueryParser) parseSelects(model *simplejson.Json) ([]*Select, error) {
|
func (qp *InfluxdbQueryParser) parseSelects(model *simplejson.Json) ([]*Select, error) {
|
||||||
var result []*Select
|
selectObjs := model.Get("select").MustArray()
|
||||||
|
result := make([]*Select, 0, len(selectObjs))
|
||||||
|
|
||||||
for _, selectObj := range model.Get("select").MustArray() {
|
for _, selectObj := range selectObjs {
|
||||||
selectJson := simplejson.NewFromAny(selectObj)
|
selectJson := simplejson.NewFromAny(selectObj)
|
||||||
var parts Select
|
var parts Select
|
||||||
|
|
||||||
@ -93,8 +94,9 @@ func (qp *InfluxdbQueryParser) parseSelects(model *simplejson.Json) ([]*Select,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (*InfluxdbQueryParser) parseTags(model *simplejson.Json) ([]*Tag, error) {
|
func (*InfluxdbQueryParser) parseTags(model *simplejson.Json) ([]*Tag, error) {
|
||||||
var result []*Tag
|
tags := model.Get("tags").MustArray()
|
||||||
for _, t := range model.Get("tags").MustArray() {
|
result := make([]*Tag, 0, len(tags))
|
||||||
|
for _, t := range tags {
|
||||||
tagJson := simplejson.NewFromAny(t)
|
tagJson := simplejson.NewFromAny(t)
|
||||||
tag := &Tag{}
|
tag := &Tag{}
|
||||||
var err error
|
var err error
|
||||||
@ -159,8 +161,9 @@ func (*InfluxdbQueryParser) parseQueryPart(model *simplejson.Json) (*QueryPart,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (qp *InfluxdbQueryParser) parseGroupBy(model *simplejson.Json) ([]*QueryPart, error) {
|
func (qp *InfluxdbQueryParser) parseGroupBy(model *simplejson.Json) ([]*QueryPart, error) {
|
||||||
var result []*QueryPart
|
groupBy := model.Get("groupBy").MustArray()
|
||||||
for _, groupObj := range model.Get("groupBy").MustArray() {
|
result := make([]*QueryPart, 0, len(groupBy))
|
||||||
|
for _, groupObj := range groupBy {
|
||||||
groupJson := simplejson.NewFromAny(groupObj)
|
groupJson := simplejson.NewFromAny(groupObj)
|
||||||
queryPart, err := qp.parseQueryPart(groupJson)
|
queryPart, err := qp.parseQueryPart(groupJson)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -44,7 +44,7 @@ func (query *Query) Build(queryContext *backend.QueryDataRequest) (string, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (query *Query) renderTags() []string {
|
func (query *Query) renderTags() []string {
|
||||||
var res []string
|
res := make([]string, 0, len(query.Tags))
|
||||||
for i, tag := range query.Tags {
|
for i, tag := range query.Tags {
|
||||||
str := ""
|
str := ""
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ func (query *Query) renderTimeFilter(queryContext *backend.QueryDataRequest) str
|
|||||||
func (query *Query) renderSelectors(queryContext *backend.QueryDataRequest) string {
|
func (query *Query) renderSelectors(queryContext *backend.QueryDataRequest) string {
|
||||||
res := "SELECT "
|
res := "SELECT "
|
||||||
|
|
||||||
var selectors []string
|
selectors := make([]string, 0, len(query.Selects))
|
||||||
for _, sel := range query.Selects {
|
for _, sel := range query.Selects {
|
||||||
stk := ""
|
stk := ""
|
||||||
for _, s := range *sel {
|
for _, s := range *sel {
|
||||||
|
@ -189,7 +189,7 @@ func formatFrameName(row Row, column string, query Query) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func buildFrameNameFromQuery(row Row, column string) string {
|
func buildFrameNameFromQuery(row Row, column string) string {
|
||||||
var tags []string
|
tags := make([]string, 0, len(row.Tags))
|
||||||
for k, v := range row.Tags {
|
for k, v := range row.Tags {
|
||||||
tags = append(tags, fmt.Sprintf("%s: %s", k, v))
|
tags = append(tags, fmt.Sprintf("%s: %s", k, v))
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ func makeIdField(stringTimeField *data.Field, lineField *data.Field, labelsField
|
|||||||
}
|
}
|
||||||
|
|
||||||
func formatNamePrometheusStyle(labels map[string]string) string {
|
func formatNamePrometheusStyle(labels map[string]string) string {
|
||||||
var parts []string
|
parts := make([]string, 0, len(labels))
|
||||||
|
|
||||||
for k, v := range labels {
|
for k, v := range labels {
|
||||||
parts = append(parts, fmt.Sprintf("%s=%q", k, v))
|
parts = append(parts, fmt.Sprintf("%s=%q", k, v))
|
||||||
|
@ -142,7 +142,7 @@ type Node struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func walkTree(tree *v1alpha1.FlamegraphRootNode, fn func(level int64, value int64, name string, self int64)) {
|
func walkTree(tree *v1alpha1.FlamegraphRootNode, fn func(level int64, value int64, name string, self int64)) {
|
||||||
var stack []*Node
|
stack := make([]*Node, 0, len(tree.Children))
|
||||||
var childrenValue int64 = 0
|
var childrenValue int64 = 0
|
||||||
|
|
||||||
for _, child := range tree.Children {
|
for _, child := range tree.Children {
|
||||||
@ -217,7 +217,7 @@ func normalizeUnit(unit string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func seriesToDataFrame(seriesResp *connect.Response[v1alpha1.QueryRangeResponse], profileTypeID string) []*data.Frame {
|
func seriesToDataFrame(seriesResp *connect.Response[v1alpha1.QueryRangeResponse], profileTypeID string) []*data.Frame {
|
||||||
var frames []*data.Frame
|
frames := make([]*data.Frame, 0, len(seriesResp.Msg.Series))
|
||||||
|
|
||||||
for _, series := range seriesResp.Msg.Series {
|
for _, series := range seriesResp.Msg.Series {
|
||||||
frame := data.NewFrame("series")
|
frame := data.NewFrame("series")
|
||||||
|
@ -28,7 +28,7 @@ func (d *ParcaDatasource) callProfileTypes(ctx context.Context, req *backend.Cal
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var types []*ProfileType
|
types := make([]*ProfileType, 0, len(res.Msg.Types))
|
||||||
for _, t := range res.Msg.Types {
|
for _, t := range res.Msg.Types {
|
||||||
var id string
|
var id string
|
||||||
if t.Delta {
|
if t.Delta {
|
||||||
|
@ -285,14 +285,14 @@ func walkTree(tree *ProfileTree, fn func(tree *ProfileTree)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func seriesToDataFrames(seriesResp *connect.Response[querierv1.SelectSeriesResponse], profileTypeID string) []*data.Frame {
|
func seriesToDataFrames(seriesResp *connect.Response[querierv1.SelectSeriesResponse], profileTypeID string) []*data.Frame {
|
||||||
var frames []*data.Frame
|
frames := make([]*data.Frame, 0, len(seriesResp.Msg.Series))
|
||||||
|
|
||||||
for _, series := range seriesResp.Msg.Series {
|
for _, series := range seriesResp.Msg.Series {
|
||||||
// We create separate data frames as the series may not have the same length
|
// We create separate data frames as the series may not have the same length
|
||||||
frame := data.NewFrame("series")
|
frame := data.NewFrame("series")
|
||||||
frame.Meta = &data.FrameMeta{PreferredVisualization: "graph"}
|
frame.Meta = &data.FrameMeta{PreferredVisualization: "graph"}
|
||||||
|
|
||||||
fields := data.Fields{}
|
fields := make(data.Fields, 0, 2)
|
||||||
timeField := data.NewField("time", nil, []time.Time{})
|
timeField := data.NewField("time", nil, []time.Time{})
|
||||||
fields = append(fields, timeField)
|
fields = append(fields, timeField)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user