]> Cypherpunks.ru repositories - gostls13.git/commitdiff
runtime: reduce allocations when building pprof LabelSet
authorMartin Möhrmann <moehrmann@google.com>
Mon, 10 Jun 2019 10:56:59 +0000 (12:56 +0200)
committerMartin Möhrmann <moehrmann@google.com>
Wed, 28 Aug 2019 10:43:11 +0000 (10:43 +0000)
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>
src/runtime/pprof/label.go

index 20f9cdbae6fe0b3b1c2a3bebb39ccdfd654209b9..2d92ef7e8a278d8d7a9ee683cddba1b557c800dc 100644 (file)
@@ -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