From 5fb74fc13853b950b5102ef26d665db97f4838fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20M=C3=B6hrmann?= Date: Mon, 10 Jun 2019 12:56:59 +0200 Subject: [PATCH] runtime: reduce allocations when building pprof LabelSet MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Pre-allocate the slice of labels with enough capacity to avoid growslice calls. Change-Id: I89db59ac722c03b0202e042d1f707bb041e0999f Reviewed-on: https://go-review.googlesource.com/c/go/+/181517 Run-TryBot: Martin Möhrmann TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Michael Matloob --- src/runtime/pprof/label.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/runtime/pprof/label.go b/src/runtime/pprof/label.go index 20f9cdbae6..2d92ef7e8a 100644 --- a/src/runtime/pprof/label.go +++ b/src/runtime/pprof/label.go @@ -60,11 +60,11 @@ func Labels(args ...string) LabelSet { if len(args)%2 != 0 { panic("uneven number of arguments to pprof.Labels") } - labels := LabelSet{} + list := make([]label, 0, len(args)/2) for i := 0; i+1 < len(args); i += 2 { - labels.list = append(labels.list, label{key: args[i], value: args[i+1]}) + list = append(list, label{key: args[i], value: args[i+1]}) } - return labels + return LabelSet{list: list} } // Label returns the value of the label with the given key on ctx, and a boolean indicating -- 2.50.0