package log15 import ( "bytes" "testing" "time" ) func BenchmarkStreamNoCtx(b *testing.B) { lg := New() buf := bytes.Buffer{} lg.SetHandler(StreamHandler(&buf, LogfmtFormat())) for i := 0; i < b.N; i++ { lg.Info("test message") buf.Reset() } } func BenchmarkDiscard(b *testing.B) { lg := New() lg.SetHandler(DiscardHandler()) for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkCallerFileHandler(b *testing.B) { lg := New() lg.SetHandler(CallerFileHandler(DiscardHandler())) for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkCallerFuncHandler(b *testing.B) { lg := New() lg.SetHandler(CallerFuncHandler(DiscardHandler())) for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkLogfmtNoCtx(b *testing.B) { r := Record{ Time: time.Now(), Lvl: LvlInfo, Msg: "test message", Ctx: []interface{}{}, } logfmt := LogfmtFormat() for i := 0; i < b.N; i++ { logfmt.Format(&r) } } func BenchmarkJsonNoCtx(b *testing.B) { r := Record{ Time: time.Now(), Lvl: LvlInfo, Msg: "test message", Ctx: []interface{}{}, } jsonfmt := JsonFormat() for i := 0; i < b.N; i++ { jsonfmt.Format(&r) } } func BenchmarkMultiLevelFilter(b *testing.B) { handler := MultiHandler( LvlFilterHandler(LvlDebug, DiscardHandler()), LvlFilterHandler(LvlError, DiscardHandler()), ) lg := New() lg.SetHandler(handler) for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkDescendant1(b *testing.B) { lg := New() lg.SetHandler(DiscardHandler()) lg = lg.New() for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkDescendant2(b *testing.B) { lg := New() lg.SetHandler(DiscardHandler()) for i := 0; i < 2; i++ { lg = lg.New() } for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkDescendant4(b *testing.B) { lg := New() lg.SetHandler(DiscardHandler()) for i := 0; i < 4; i++ { lg = lg.New() } for i := 0; i < b.N; i++ { lg.Info("test message") } } func BenchmarkDescendant8(b *testing.B) { lg := New() lg.SetHandler(DiscardHandler()) for i := 0; i < 8; i++ { lg = lg.New() } for i := 0; i < b.N; i++ { lg.Info("test message") } }