chore(perf): Pre-allocate where possible (enable prealloc linter) (#88952)
* chore(perf): Pre-allocate where possible (enable prealloc linter) Signed-off-by: Dave Henderson <dave.henderson@grafana.com> * fix TestAlertManagers_buildRedactedAMs Signed-off-by: Dave Henderson <dave.henderson@grafana.com> * prealloc a slice that appeared after rebase Signed-off-by: Dave Henderson <dave.henderson@grafana.com> --------- Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
This commit is contained in:
@@ -88,9 +88,8 @@ type argJSONQuery struct {
|
||||
}
|
||||
|
||||
func (e *AzureResourceGraphDatasource) buildQueries(queries []backend.DataQuery, dsInfo types.DatasourceInfo) ([]*AzureResourceGraphQuery, error) {
|
||||
var azureResourceGraphQueries []*AzureResourceGraphQuery
|
||||
|
||||
for _, query := range queries {
|
||||
azureResourceGraphQueries := make([]*AzureResourceGraphQuery, len(queries))
|
||||
for i, query := range queries {
|
||||
queryJSONModel := argJSONQuery{}
|
||||
err := json.Unmarshal(query.JSON, &queryJSONModel)
|
||||
if err != nil {
|
||||
@@ -105,19 +104,18 @@ func (e *AzureResourceGraphDatasource) buildQueries(queries []backend.DataQuery,
|
||||
}
|
||||
|
||||
interpolatedQuery, err := macros.KqlInterpolate(query, dsInfo, azureResourceGraphTarget.Query)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
azureResourceGraphQueries = append(azureResourceGraphQueries, &AzureResourceGraphQuery{
|
||||
azureResourceGraphQueries[i] = &AzureResourceGraphQuery{
|
||||
RefID: query.RefID,
|
||||
ResultFormat: resultFormat,
|
||||
JSON: query.JSON,
|
||||
InterpolatedQuery: interpolatedQuery,
|
||||
TimeRange: query.TimeRange,
|
||||
QueryType: query.QueryType,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return azureResourceGraphQueries, nil
|
||||
|
||||
@@ -129,8 +129,8 @@ type AzureMonitorDimensionFilterBackend struct {
|
||||
}
|
||||
|
||||
func ConstructFiltersString(a dataquery.AzureMetricDimension) string {
|
||||
var filterStrings []string
|
||||
for _, filter := range a.Filters {
|
||||
filterStrings := make([]string, len(a.Filters))
|
||||
for i, filter := range a.Filters {
|
||||
dimension := ""
|
||||
operator := ""
|
||||
if a.Dimension != nil {
|
||||
@@ -139,11 +139,14 @@ func ConstructFiltersString(a dataquery.AzureMetricDimension) string {
|
||||
if a.Operator != nil {
|
||||
operator = *a.Operator
|
||||
}
|
||||
filterStrings = append(filterStrings, fmt.Sprintf("%v %v '%v'", dimension, operator, filter))
|
||||
|
||||
filterStrings[i] = fmt.Sprintf("%v %v '%v'", dimension, operator, filter)
|
||||
}
|
||||
|
||||
if a.Operator != nil && *a.Operator == "eq" {
|
||||
return strings.Join(filterStrings, " or ")
|
||||
}
|
||||
|
||||
return strings.Join(filterStrings, " and ")
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
)
|
||||
|
||||
func valuesToListMetricRespone[T any](values []T) []resources.ResourceResponse[T] {
|
||||
var response []resources.ResourceResponse[T]
|
||||
response := make([]resources.ResourceResponse[T], 0, len(values))
|
||||
for _, value := range values {
|
||||
response = append(response, resources.ResourceResponse[T]{Value: value})
|
||||
}
|
||||
|
||||
@@ -84,15 +84,16 @@ func newFlowTestQueries(allJsonBytes []byte) ([]backend.DataQuery, error) {
|
||||
return nil, fmt.Errorf("error unmarshaling query-json: %w", err)
|
||||
}
|
||||
|
||||
var queries []backend.DataQuery
|
||||
|
||||
for _, jsonBytes := range jsonBytesArray {
|
||||
queries := make([]backend.DataQuery, len(jsonBytesArray))
|
||||
for i, jsonBytes := range jsonBytesArray {
|
||||
// we need to extract some fields from the json-array
|
||||
var jsonInfo queryDataTestQueryJSON
|
||||
|
||||
err = json.Unmarshal(jsonBytes, &jsonInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// we setup the DataQuery, with values loaded from the json
|
||||
query := backend.DataQuery{
|
||||
RefID: jsonInfo.RefID,
|
||||
@@ -101,7 +102,8 @@ func newFlowTestQueries(allJsonBytes []byte) ([]backend.DataQuery, error) {
|
||||
TimeRange: timeRange,
|
||||
JSON: jsonBytes,
|
||||
}
|
||||
queries = append(queries, query)
|
||||
|
||||
queries[i] = query
|
||||
}
|
||||
return queries, nil
|
||||
}
|
||||
|
||||
@@ -873,16 +873,16 @@ func trimDatapoints(queryResult backend.DataResponse, target *Query) {
|
||||
// we sort the label's pairs by the label-key,
|
||||
// and return the label-values
|
||||
func getSortedLabelValues(labels data.Labels) []string {
|
||||
var keys []string
|
||||
keys := make([]string, 0, len(labels))
|
||||
for key := range labels {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
|
||||
sort.Strings(keys)
|
||||
|
||||
var values []string
|
||||
for _, key := range keys {
|
||||
values = append(values, labels[key])
|
||||
values := make([]string, len(keys))
|
||||
for i, key := range keys {
|
||||
values[i] = labels[key]
|
||||
}
|
||||
|
||||
return values
|
||||
|
||||
@@ -60,7 +60,7 @@ func TestNewQueryDataResponse(t *testing.T) {
|
||||
newJSONArray(`[0, 1, 2]`, &arrow.TimestampType{}),
|
||||
}
|
||||
|
||||
var arr []arrow.Array
|
||||
arr := make([]arrow.Array, 0, len(strValues))
|
||||
for _, v := range strValues {
|
||||
tarr, _, err := array.FromJSON(
|
||||
alloc,
|
||||
|
||||
@@ -269,12 +269,12 @@ func transformRowsForTimeSeries(rows []models.Row, query models.Query) data.Fram
|
||||
}
|
||||
|
||||
func newFrameWithTimeField(row models.Row, column string, colIndex int, query models.Query, frameName []byte) *data.Frame {
|
||||
var timeArray []time.Time
|
||||
var floatArray []*float64
|
||||
var stringArray []*string
|
||||
var boolArray []*bool
|
||||
valType := util.Typeof(row.Values, colIndex)
|
||||
|
||||
timeArray := make([]time.Time, 0, len(row.Values))
|
||||
for _, valuePair := range row.Values {
|
||||
timestamp, timestampErr := util.ParseTimestamp(valuePair[0])
|
||||
// we only add this row if the timestamp is valid
|
||||
|
||||
@@ -136,10 +136,11 @@ func rootSpan(frame *BetterFrame) Row {
|
||||
}
|
||||
|
||||
func fieldNames(frame *data.Frame) []string {
|
||||
var names []string
|
||||
for _, f := range frame.Fields {
|
||||
names = append(names, f.Name)
|
||||
names := make([]string, len(frame.Fields))
|
||||
for i, f := range frame.Fields {
|
||||
names[i] = f.Name
|
||||
}
|
||||
|
||||
return names
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user