Reuse buffer for hash computation in the engine. (#2218)

Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
pull/2197/head^2
Cyril Tovena 5 years ago committed by GitHub
parent 314531cb04
commit 721256403c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      pkg/logql/evaluator.go

@ -189,6 +189,8 @@ func vectorAggEvaluator(
if err != nil {
return nil, err
}
lb := labels.NewBuilder(nil)
buf := make([]byte, 0, 1024)
return newStepEvaluator(func() (bool, int64, promql.Vector) {
next, ts, vec := nextEvaluator.Next()
@ -210,9 +212,9 @@ func vectorAggEvaluator(
groupingKey uint64
)
if expr.grouping.without {
groupingKey, _ = metric.HashWithoutLabels(make([]byte, 0, 1024), expr.grouping.groups...)
groupingKey, buf = metric.HashWithoutLabels(buf, expr.grouping.groups...)
} else {
groupingKey, _ = metric.HashForLabels(make([]byte, 0, 1024), expr.grouping.groups...)
groupingKey, buf = metric.HashForLabels(buf, expr.grouping.groups...)
}
group, ok := result[groupingKey]
// Add a new group if it doesn't exist.
@ -220,7 +222,7 @@ func vectorAggEvaluator(
var m labels.Labels
if expr.grouping.without {
lb := labels.NewBuilder(metric)
lb.Reset(metric)
lb.Del(expr.grouping.groups...)
lb.Del(labels.MetricName)
m = lb.Labels()

Loading…
Cancel
Save