1
0
mirror of https://github.com/golang/go synced 2024-11-20 11:14:45 -07:00
go/src/time
Justin Nuß 5f859ba83d time: Use AppendFormat in Marshal[Text|JSON]
The current implementations of MarshalJSON and MarshalText use
time.Format which returns a string (converted from a byte slice),
only to convert it back to a byte slice.

Avoid the conversion (and thus an allocation) by directly appending
the formatted time to a preallocated byte slice, using the new
AppendFormat function, introduced in golang.org/cl/1760.

This reduces the allocations done in Marshal[Text|JSON] by 50%.

benchmark                old ns/op     new ns/op     delta
BenchmarkMarshalJSON     626           507           -19.01%
BenchmarkMarshalText     598           511           -14.55%

benchmark                old allocs     new allocs     delta
BenchmarkMarshalJSON     2              1              -50.00%
BenchmarkMarshalText     2              1              -50.00%

benchmark                old bytes     new bytes     delta
BenchmarkMarshalJSON     96            48            -50.00%
BenchmarkMarshalText     96            48            -50.00%

Fixes #11025

Change-Id: I468f78d075a6ecc1cdc839df7fb407fbc6ff2e70
Reviewed-on: https://go-review.googlesource.com/10555
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-08-22 11:31:58 +00:00
..
example_test.go
export_test.go
export_windows_test.go time: fix registry zone info lookup on Windows 2015-05-12 14:28:40 +00:00
format_test.go
format.go time: make it clearer how to format a fractional second 2015-07-15 05:13:05 +00:00
genzabbrs.go
internal_test.go
sleep_test.go time: deflake TestAfterQueuing 2015-05-06 19:26:27 +00:00
sleep.go
sys_plan9.go
sys_unix.go
sys_windows.go
tick_test.go
tick.go time: document that time.Tick creates an unrecoverable resource 2015-07-13 01:35:36 +00:00
time_test.go time: Use AppendFormat in Marshal[Text|JSON] 2015-08-22 11:31:58 +00:00
time.go time: Use AppendFormat in Marshal[Text|JSON] 2015-08-22 11:31:58 +00:00
zoneinfo_abbrs_windows.go
zoneinfo_ios.go
zoneinfo_plan9.go
zoneinfo_read.go
zoneinfo_test.go
zoneinfo_unix.go
zoneinfo_windows_test.go time: fix registry zone info lookup on Windows 2015-05-12 14:28:40 +00:00
zoneinfo_windows.go time: fix registry zone info lookup on Windows 2015-05-12 14:28:40 +00:00
zoneinfo.go