Perfomance: Add preallocation for some slices (#61632)

pull/61944/head
Denis Limarev 2 years ago committed by GitHub
parent 46cbf9d24c
commit 812c90ec69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      pkg/codegen/jenny_docs.go
  2. 2
      pkg/setting/setting.go
  3. 2
      pkg/tsdb/cloudmonitoring/cloudmonitoring.go
  4. 2
      pkg/tsdb/cloudwatch/models/cloudwatch_query.go
  5. 10
      pkg/tsdb/elasticsearch/parse_query.go
  6. 2
      pkg/tsdb/influxdb/influxdb.go
  7. 15
      pkg/tsdb/influxdb/model_parser.go
  8. 4
      pkg/tsdb/influxdb/query.go
  9. 2
      pkg/tsdb/influxdb/response_parser.go
  10. 2
      pkg/tsdb/loki/frame.go
  11. 4
      pkg/tsdb/parca/query.go
  12. 2
      pkg/tsdb/parca/resources.go
  13. 4
      pkg/tsdb/phlare/query.go

@ -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)

Loading…
Cancel
Save