Prechádzať zdrojové kódy

pkg/jsonlog: avoid JSONLog allocation in loop

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
unclejack 10 rokov pred
rodič
commit
473bb5274c
1 zmenil súbory, kde vykonal 8 pridanie a 2 odobranie
  1. 8 2
      pkg/jsonlog/jsonlog.go

+ 8 - 2
pkg/jsonlog/jsonlog.go

@@ -25,11 +25,16 @@ func (jl *JSONLog) Format(format string) (string, error) {
 	return fmt.Sprintf("[%s] %s", jl.Created.Format(format), jl.Log), nil
 	return fmt.Sprintf("[%s] %s", jl.Created.Format(format), jl.Log), nil
 }
 }
 
 
+func (jl *JSONLog) Reset() {
+	jl.Log = ""
+	jl.Stream = ""
+	jl.Created = time.Time{}
+}
+
 func WriteLog(src io.Reader, dst io.Writer, format string) error {
 func WriteLog(src io.Reader, dst io.Writer, format string) error {
 	dec := json.NewDecoder(src)
 	dec := json.NewDecoder(src)
+	l := &JSONLog{}
 	for {
 	for {
-		l := &JSONLog{}
-
 		if err := dec.Decode(l); err == io.EOF {
 		if err := dec.Decode(l); err == io.EOF {
 			return nil
 			return nil
 		} else if err != nil {
 		} else if err != nil {
@@ -43,5 +48,6 @@ func WriteLog(src io.Reader, dst io.Writer, format string) error {
 		if _, err := io.WriteString(dst, line); err != nil {
 		if _, err := io.WriteString(dst, line); err != nil {
 			return err
 			return err
 		}
 		}
+		l.Reset()
 	}
 	}
 }
 }