]> Cypherpunks repositories - gostls13.git/commitdiff
text/template: replace bytes.Buffer with strings.Builder
authorDong-hee Na <donghee.na92@gmail.com>
Mon, 6 May 2019 09:53:46 +0000 (18:53 +0900)
committerEmmanuel Odeke <emm.odeke@gmail.com>
Tue, 27 Aug 2019 16:54:06 +0000 (16:54 +0000)
After Go.1.10+ strings.Builder is known as more efficient in
concatenating and building strings than bytes.Buffer.

In this CL,
there is a minor logic fix for getting advantage of strings.builder.

name               old time/op    new time/op    delta
DefinedTemplate-8     543ns ± 3%     512ns ± 2%   -5.73%  (p=0.000 n=8+8)

name               old alloc/op   new alloc/op   delta
DefinedTemplate-8      192B ± 0%      160B ± 0%  -16.67%  (p=0.000 n=8+8)

name               old allocs/op  new allocs/op  delta
DefinedTemplate-8      5.00 ± 0%      5.00 ± 0%     ~     (all equal)

Change-Id: Icda0054d146e6c5e32ed8a4d13221bb6850d31b4
Reviewed-on: https://go-review.googlesource.com/c/go/+/175261
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/text/template/exec.go

index 4db63bfa09dc651ef2d164397e7dd519d467cf87..97c9d1f5748ce1e5b583f7c224d9e0b444cd0b6c 100644 (file)
@@ -5,7 +5,6 @@
 package template
 
 import (
-       "bytes"
        "fmt"
        "internal/fmtsort"
        "io"
@@ -230,21 +229,19 @@ func (t *Template) DefinedTemplates() string {
        if t.common == nil {
                return ""
        }
-       var b bytes.Buffer
+       var b strings.Builder
        for name, tmpl := range t.tmpl {
                if tmpl.Tree == nil || tmpl.Root == nil {
                        continue
                }
-               if b.Len() > 0 {
+               if b.Len() == 0 {
+                       b.WriteString("; defined templates are: ")
+               } else {
                        b.WriteString(", ")
                }
                fmt.Fprintf(&b, "%q", name)
        }
-       var s string
-       if b.Len() > 0 {
-               s = "; defined templates are: " + b.String()
-       }
-       return s
+       return b.String()
 }
 
 // Walk functions step through the major pieces of the template structure,