Reduce overhead of debug calls if no log is enabled

In case no debug log is configured, then calls to debug.Log only incur
the costs to check a single boolean flag making the call really cheap.
This commit is contained in:
Michael Eischer 2020-07-26 18:54:41 +02:00
parent 1823b8195c
commit 9ad8250a78
1 changed files with 14 additions and 3 deletions

View File

@ -17,9 +17,10 @@ import (
)
var opts struct {
logger *log.Logger
funcs map[string]bool
files map[string]bool
isEnabled bool
logger *log.Logger
funcs map[string]bool
files map[string]bool
}
// make sure that all the initialization happens before the init() functions
@ -30,6 +31,12 @@ func initDebug() bool {
initDebugLogger()
initDebugTags()
if opts.logger == nil && len(opts.funcs) == 0 && len(opts.files) == 0 {
opts.isEnabled = false
return false
}
opts.isEnabled = true
fmt.Fprintf(os.Stderr, "debug enabled\n")
return true
@ -173,6 +180,10 @@ func checkFilter(filter map[string]bool, key string) bool {
// Log prints a message to the debug log (if debug is enabled).
func Log(f string, args ...interface{}) {
if !opts.isEnabled {
return
}
fn, dir, file, line := getPosition()
goroutine := goroutineNum()