forked from TrueCloudLab/restic
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package logrus
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
// smallFields is a small size data set for benchmarking
|
|
var loggerFields = Fields{
|
|
"foo": "bar",
|
|
"baz": "qux",
|
|
"one": "two",
|
|
"three": "four",
|
|
}
|
|
|
|
func BenchmarkDummyLogger(b *testing.B) {
|
|
nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666)
|
|
if err != nil {
|
|
b.Fatalf("%v", err)
|
|
}
|
|
defer nullf.Close()
|
|
doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
|
|
}
|
|
|
|
func BenchmarkDummyLoggerNoLock(b *testing.B) {
|
|
nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666)
|
|
if err != nil {
|
|
b.Fatalf("%v", err)
|
|
}
|
|
defer nullf.Close()
|
|
doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
|
|
}
|
|
|
|
func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
|
|
logger := Logger{
|
|
Out: out,
|
|
Level: InfoLevel,
|
|
Formatter: formatter,
|
|
}
|
|
entry := logger.WithFields(fields)
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
entry.Info("aaa")
|
|
}
|
|
})
|
|
}
|
|
|
|
func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
|
|
logger := Logger{
|
|
Out: out,
|
|
Level: InfoLevel,
|
|
Formatter: formatter,
|
|
}
|
|
logger.SetNoLock()
|
|
entry := logger.WithFields(fields)
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
entry.Info("aaa")
|
|
}
|
|
})
|
|
}
|