| package logrus |
| |
| import ( |
| "fmt" |
| "testing" |
| "time" |
| ) |
| |
| // smallFields is a small size data set for benchmarking |
| var smallFields = Fields{ |
| "foo": "bar", |
| "baz": "qux", |
| "one": "two", |
| "three": "four", |
| } |
| |
| // largeFields is a large size data set for benchmarking |
| var largeFields = Fields{ |
| "foo": "bar", |
| "baz": "qux", |
| "one": "two", |
| "three": "four", |
| "five": "six", |
| "seven": "eight", |
| "nine": "ten", |
| "eleven": "twelve", |
| "thirteen": "fourteen", |
| "fifteen": "sixteen", |
| "seventeen": "eighteen", |
| "nineteen": "twenty", |
| "a": "b", |
| "c": "d", |
| "e": "f", |
| "g": "h", |
| "i": "j", |
| "k": "l", |
| "m": "n", |
| "o": "p", |
| "q": "r", |
| "s": "t", |
| "u": "v", |
| "w": "x", |
| "y": "z", |
| "this": "will", |
| "make": "thirty", |
| "entries": "yeah", |
| } |
| |
| var errorFields = Fields{ |
| "foo": fmt.Errorf("bar"), |
| "baz": fmt.Errorf("qux"), |
| } |
| |
| func BenchmarkErrorTextFormatter(b *testing.B) { |
| doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields) |
| } |
| |
| func BenchmarkSmallTextFormatter(b *testing.B) { |
| doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields) |
| } |
| |
| func BenchmarkLargeTextFormatter(b *testing.B) { |
| doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields) |
| } |
| |
| func BenchmarkSmallColoredTextFormatter(b *testing.B) { |
| doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields) |
| } |
| |
| func BenchmarkLargeColoredTextFormatter(b *testing.B) { |
| doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields) |
| } |
| |
| func BenchmarkSmallJSONFormatter(b *testing.B) { |
| doBenchmark(b, &JSONFormatter{}, smallFields) |
| } |
| |
| func BenchmarkLargeJSONFormatter(b *testing.B) { |
| doBenchmark(b, &JSONFormatter{}, largeFields) |
| } |
| |
| func doBenchmark(b *testing.B, formatter Formatter, fields Fields) { |
| logger := New() |
| |
| entry := &Entry{ |
| Time: time.Time{}, |
| Level: InfoLevel, |
| Message: "message", |
| Data: fields, |
| Logger: logger, |
| } |
| var d []byte |
| var err error |
| for i := 0; i < b.N; i++ { |
| d, err = formatter.Format(entry) |
| if err != nil { |
| b.Fatal(err) |
| } |
| b.SetBytes(int64(len(d))) |
| } |
| } |