From d8c70ff35e35d199a806c79c7fc7384acb778976 Mon Sep 17 00:00:00 2001 From: warnar boekkooi Date: Tue, 2 Sep 2025 11:55:17 +0200 Subject: [PATCH 1/2] pre-allocate slices Signed-off-by: warnar boekkooi --- model/metric.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/model/metric.go b/model/metric.go index f7f61c5d5..aca269f9d 100644 --- a/model/metric.go +++ b/model/metric.go @@ -355,6 +355,9 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF } else { out.Name = proto.String(EscapeName(v.GetName(), scheme)) } + if v.Metric != nil { + out.Metric = make([]*dto.Metric, 0, len(v.Metric)) + } for _, m := range v.Metric { if !metricNeedsEscaping(m) { out.Metric = append(out.Metric, m) @@ -369,7 +372,9 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF Histogram: m.Histogram, TimestampMs: m.TimestampMs, } - + if m.Label != nil { + escaped.Label = make([]*dto.LabelPair, 0, len(m.Label)) + } for _, l := range m.Label { if l.GetName() == MetricNameLabel { if l.Value == nil || IsValidLegacyMetricName(l.GetValue()) { From e1f4baeaec650d5a15d021006ed14022f9fe7de1 Mon Sep 17 00:00:00 2001 From: warnar boekkooi Date: Tue, 2 Sep 2025 11:55:44 +0200 Subject: [PATCH 2/2] pre-allocate strings.Builder for UnderscoreEscaping Signed-off-by: warnar boekkooi --- model/metric.go | 1 + 1 file changed, 1 insertion(+) diff --git a/model/metric.go b/model/metric.go index aca269f9d..aaec4ed43 100644 --- a/model/metric.go +++ b/model/metric.go @@ -429,6 +429,7 @@ func EscapeName(name string, scheme EscapingScheme) string { if IsValidLegacyMetricName(name) { return name } + escaped.Grow(len(name)) for i, b := range name { if isValidLegacyRune(b, i) { escaped.WriteRune(b)