From bed1d9bd27d2209c7d10d8d5d0d420b4049002e0 Mon Sep 17 00:00:00 2001 From: astaxie Date: Wed, 17 Aug 2016 22:33:36 +0800 Subject: [PATCH] update the performance --- logs/logger.go | 49 ++++++++++++++++++++++++++++++++++++++++++--- logs/logger_test.go | 4 ++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/logs/logger.go b/logs/logger.go index a8333089..1d480c07 100644 --- a/logs/logger.go +++ b/logs/logger.go @@ -72,10 +72,53 @@ func NewModeAnsiColorWriter(w io.Writer, mode outputMode) io.Writer { return w } +const ( + y1 = `0123456789` + y2 = `0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789` + y3 = `0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999` + y4 = `0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789` + mo1 = `000000000111` + mo2 = `123456789012` + d1 = `0000000001111111111222222222233` + d2 = `1234567890123456789012345678901` + h1 = `000000000011111111112222` + h2 = `012345678901234567890123` + mi1 = `000000000011111111112222222222333333333344444444445555555555` + mi2 = `012345678901234567890123456789012345678901234567890123456789` + s1 = `000000000011111111112222222222333333333344444444445555555555` + s2 = `012345678901234567890123456789012345678901234567890123456789` +) + func formatTimeHeader(when time.Time) ([]byte, int) { - _, _, d := when.Date() - s := when.Format("2006/01/02 15:04:05 ") - return []byte(s), d + y, mo, d := when.Date() + h, mi, s := when.Clock() + //len("2006/01/02 15:04:05 ")==20 + var buf [20]byte + + //change to '3' after 984 years, LOL + buf[0] = y1[y/1000%10] + //change to '1' after 84 years, LOL + buf[1] = y2[y/100] + buf[2] = y3[y-y/100*100] + buf[3] = y4[y-y/100*100] + buf[4] = '/' + buf[5] = mo1[mo-1] + buf[6] = mo2[mo-1] + buf[7] = '/' + buf[8] = d1[d-1] + buf[9] = d2[d-1] + buf[10] = ' ' + buf[11] = h1[h] + buf[12] = h2[h] + buf[13] = ':' + buf[14] = mi1[mi] + buf[15] = mi2[mi] + buf[16] = ':' + buf[17] = s1[s] + buf[18] = s2[s] + buf[19] = ' ' + + return buf[0:], d } var ( diff --git a/logs/logger_test.go b/logs/logger_test.go index c65d70d5..119b7bd3 100644 --- a/logs/logger_test.go +++ b/logs/logger_test.go @@ -15,9 +15,9 @@ package logs import ( + "bytes" "testing" "time" - "bytes" ) func TestFormatHeader_0(t *testing.T) { @@ -72,4 +72,4 @@ func TestNewAnsiColor2(t *testing.T) { if w1 != w2 { t.Errorf("Get %#v, want %#v", w1, w2) } -} \ No newline at end of file +}