mirror of https://github.com/spf13/cast.git
Pull the 2006-01-02 layout to the top when checking
The current top 2 formats are, from some checks I've done, 2 dominant formats used in Hugo projects. Checking these first has a big effect: ```bash name old time/op new time/op delta CommonTimeLayouts-10 1.45µs ± 0% 0.33µs ± 1% -77.45% (p=0.029 n=4+4) name old alloc/op new alloc/op delta CommonTimeLayouts-10 1.55kB ± 0% 0.18kB ± 0% -88.14% (p=0.029 n=4+4) name old allocs/op new allocs/op delta CommonTimeLayouts-10 38.0 ± 0% 6.0 ± 0% -84.21% (p=0.029 n=4+4) ``` See https://github.com/gohugoio/hugo/issues/10942
This commit is contained in:
parent
ba0a5b63c8
commit
bbed5559a5
11
cast_test.go
11
cast_test.go
|
@ -897,6 +897,17 @@ func BenchmarkTrimZeroDecimal(b *testing.B) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkCommonTimeLayouts(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
for _, commonLayout := range []string{"2019-04-29", "2017-05-30T00:00:00Z"} {
|
||||||
|
_, err := StringToDateInDefaultLocation(commonLayout, time.UTC)
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestIndirectPointers(t *testing.T) {
|
func TestIndirectPointers(t *testing.T) {
|
||||||
c := qt.New(t)
|
c := qt.New(t)
|
||||||
|
|
||||||
|
|
3
caste.go
3
caste.go
|
@ -1406,6 +1406,8 @@ func (f timeFormat) hasTimezone() bool {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
timeFormats = []timeFormat{
|
timeFormats = []timeFormat{
|
||||||
|
// Keep common formats at the top.
|
||||||
|
{"2006-01-02", timeFormatNoTimezone},
|
||||||
{time.RFC3339, timeFormatNumericTimezone},
|
{time.RFC3339, timeFormatNumericTimezone},
|
||||||
{"2006-01-02T15:04:05", timeFormatNoTimezone}, // iso8601 without timezone
|
{"2006-01-02T15:04:05", timeFormatNoTimezone}, // iso8601 without timezone
|
||||||
{time.RFC1123Z, timeFormatNumericTimezone},
|
{time.RFC1123Z, timeFormatNumericTimezone},
|
||||||
|
@ -1421,7 +1423,6 @@ var (
|
||||||
{time.UnixDate, timeFormatNamedTimezone},
|
{time.UnixDate, timeFormatNamedTimezone},
|
||||||
{time.RubyDate, timeFormatNumericTimezone},
|
{time.RubyDate, timeFormatNumericTimezone},
|
||||||
{"2006-01-02 15:04:05Z07:00", timeFormatNumericTimezone},
|
{"2006-01-02 15:04:05Z07:00", timeFormatNumericTimezone},
|
||||||
{"2006-01-02", timeFormatNoTimezone},
|
|
||||||
{"02 Jan 2006", timeFormatNoTimezone},
|
{"02 Jan 2006", timeFormatNoTimezone},
|
||||||
{"2006-01-02 15:04:05 -07:00", timeFormatNumericTimezone},
|
{"2006-01-02 15:04:05 -07:00", timeFormatNumericTimezone},
|
||||||
{"2006-01-02 15:04:05 -0700", timeFormatNumericTimezone},
|
{"2006-01-02 15:04:05 -0700", timeFormatNumericTimezone},
|
||||||
|
|
Loading…
Reference in New Issue