diff options
author | korzhao <korzhao95@gmail.com> | 2021-08-21 07:26:19 +0800 |
---|---|---|
committer | Alexander Rakoczy <alex@golang.org> | 2021-08-25 18:27:41 +0000 |
commit | d2f002cb39bebdfac560282a43f3199c5d0903d7 (patch) | |
tree | 27d2d7af4211c2f7c1fc44817d23f12f872278d7 /src | |
parent | 08d4cc20cad0e95b4e368c2f38268199f9c68548 (diff) | |
download | go-d2f002cb39bebdfac560282a43f3199c5d0903d7.tar.gz go-d2f002cb39bebdfac560282a43f3199c5d0903d7.zip |
time/format: avoid growslice in time.String()/time.GoString()
Pre-allocate the slice of buf with enough capacity
to avoid growslice calls.
benchmark old ns/op new ns/op delta
BenchmarkTimeString-4 493 409 -17.12%
BenchmarkTimeGoString-4 309 182 -41.30%
benchmark old allocs new allocs delta
BenchmarkTimeString-4 5 3 -40.00%
BenchmarkTimeGoString-4 4 1 -75.00%
benchmark old bytes new bytes delta
BenchmarkTimeString-4 152 128 -15.79%
BenchmarkTimeGoString-4 248 80 -67.74%
Change-Id: I64eabe2ab0b3d4a846453c2e8e548a831d720b8c
Reviewed-on: https://go-review.googlesource.com/c/go/+/343971
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Alexander Rakoczy <alex@golang.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/time/format.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/time/format.go b/src/time/format.go index f4b4f48142..7ae89c557d 100644 --- a/src/time/format.go +++ b/src/time/format.go @@ -479,7 +479,7 @@ func (t Time) String() string { } m1, m2 := m2/1e9, m2%1e9 m0, m1 := m1/1e9, m1%1e9 - var buf []byte + buf := make([]byte, 0, 24) buf = append(buf, " m="...) buf = append(buf, sign) wid := 0 @@ -498,7 +498,8 @@ func (t Time) String() string { // GoString implements fmt.GoStringer and formats t to be printed in Go source // code. func (t Time) GoString() string { - buf := []byte("time.Date(") + buf := make([]byte, 0, 70) + buf = append(buf, "time.Date("...) buf = appendInt(buf, t.Year(), 0) month := t.Month() if January <= month && month <= December { |