From 997086b7e6db6c74926500aa15fd3c02bc4939b8 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 6 May 2019 18:53:46 +0900 Subject: [PATCH] text/template: replace bytes.Buffer with strings.Builder MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Brad Fitzpatrick --- src/text/template/exec.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/text/template/exec.go b/src/text/template/exec.go index 4db63bfa09..97c9d1f574 100644 --- a/src/text/template/exec.go +++ b/src/text/template/exec.go @@ -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, -- 2.50.0