diff --git a/zapio/writer_test.go b/zapio/writer_test.go index e731f8ca3..d1994ba7a 100644 --- a/zapio/writer_test.go +++ b/zapio/writer_test.go @@ -22,6 +22,7 @@ package zapio import ( "io" + "io/ioutil" "testing" "github.com/stretchr/testify/assert" @@ -156,3 +157,49 @@ func TestWriter(t *testing.T) { }) } } + +func BenchmarkWriter(b *testing.B) { + tests := []struct { + name string + writes [][]byte + }{ + { + name: "single", + writes: [][]byte{ + []byte("foobar\n"), + []byte("bazqux\n"), + }, + }, + { + name: "splits", + writes: [][]byte{ + []byte("foo"), + []byte("bar\nbaz"), + []byte("qux\n"), + }, + }, + } + + writer := Writer{ + Log: zap.New( + zapcore.NewCore( + zapcore.NewJSONEncoder(zapcore.EncoderConfig{MessageKey: "m"}), + zapcore.AddSync(ioutil.Discard), + zapcore.DebugLevel, + ), + ), + Level: zapcore.DebugLevel, + } + + for _, tt := range tests { + b.Run(tt.name, func(b *testing.B) { + b.ResetTimer() + + for i := 0; i < b.N; i++ { + for _, bs := range tt.writes { + writer.Write(bs) + } + } + }) + } +}