1
0
mirror of https://github.com/golang/go synced 2024-11-17 07:35:05 -07:00

runtime: reduce allocations when building pprof LabelSet

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 <moehrmann@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
Martin Möhrmann 2019-06-10 12:56:59 +02:00
parent 37373592af
commit 5fb74fc138

View File

@ -60,11 +60,11 @@ func Labels(args ...string) LabelSet {
if len(args)%2 != 0 { if len(args)%2 != 0 {
panic("uneven number of arguments to pprof.Labels") 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 { 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 // Label returns the value of the label with the given key on ctx, and a boolean indicating