github.com/rudderlabs/rudder-go-kit@v0.30.0/logger/benchmark_test.go (about) 1 package logger 2 3 import ( 4 "testing" 5 6 "go.uber.org/zap" 7 "go.uber.org/zap/zapcore" 8 9 "github.com/rudderlabs/rudder-go-kit/config" 10 ) 11 12 // BenchmarkKit results: 13 // non-sugared: 496.6 ns/op 14 // sugared: 723.5 ns/op 15 func BenchmarkKit(b *testing.B) { 16 c := config.New() 17 c.Set("LOG_LEVEL", "DEBUG") 18 c.Set("Logger.consoleJsonFormat", "json") 19 c.Set("Logger.discardConsole", true) 20 c.Set("Logger.enableFileNameInLog", true) 21 22 b.Run("non-sugared", func(b *testing.B) { 23 f := NewFactory(c) 24 l := f.NewLogger() 25 defer f.Sync() 26 27 fields := []Field{ 28 NewStringField("key1", "111"), NewStringField("key2", "222"), 29 NewStringField("key3", "333"), NewStringField("key4", "444"), 30 NewStringField("key5", "555"), NewStringField("key6", "666"), 31 NewStringField("key7", "777"), NewStringField("key8", "888"), 32 NewStringField("key9", "999"), NewStringField("key10", "101010"), 33 } 34 35 b.ResetTimer() 36 b.RunParallel(func(pb *testing.PB) { 37 for pb.Next() { 38 l.Debugn("test", fields...) 39 } 40 }) 41 }) 42 43 b.Run("sugared", func(b *testing.B) { 44 f := NewFactory(c) 45 l := f.NewLogger() 46 defer f.Sync() 47 48 fields := []any{ 49 "key1", "111", "key2", "222", 50 "key3", "333", "key4", "444", 51 "key5", "555", "key6", "666", 52 "key7", "777", "key8", "888", 53 "key9", "999", "key10", "101010", 54 } 55 56 b.ResetTimer() 57 b.RunParallel(func(pb *testing.PB) { 58 for pb.Next() { 59 l.Debugw("test", fields...) 60 } 61 }) 62 }) 63 } 64 65 // BenchmarkZap results: 66 // Zap: 60.96 ns/op 67 // Zap.Sugar: 94.57 ns/op 68 func BenchmarkZap(b *testing.B) { 69 newZap := func(lvl zapcore.Level) *zap.Logger { 70 ec := zap.NewProductionEncoderConfig() 71 ec.EncodeDuration = zapcore.NanosDurationEncoder 72 ec.EncodeTime = zapcore.EpochNanosTimeEncoder 73 enc := zapcore.NewJSONEncoder(ec) 74 return zap.New(zapcore.NewCore( 75 enc, 76 &discarder{}, 77 lvl, 78 )) 79 } 80 b.Run("Zap", func(b *testing.B) { 81 logger := newZap(zapcore.DebugLevel) 82 b.ResetTimer() 83 b.RunParallel(func(pb *testing.PB) { 84 for pb.Next() { 85 logger.Debug("message", zap.String("key1", "111"), zap.String("key2", "222")) 86 } 87 }) 88 }) 89 b.Run("Zap.Sugar", func(b *testing.B) { 90 logger := newZap(zapcore.DebugLevel).Sugar() 91 b.ResetTimer() 92 b.RunParallel(func(pb *testing.PB) { 93 for pb.Next() { 94 logger.Debugw("message", "key1", "111", "key2", "222") 95 } 96 }) 97 }) 98 }