Example of how to use defer
in golang as a crude way of measure execution time. Start by defining the timeit
function. The function just prints the duration from the time given by start
.
func timeit(start time.Time, text string) {
log.Info("PERF [%s] [%s]", text, time.Since(start))
}
Using the defer
keyword we can make timeit
execute directly after the function that we want to measure. Passing time.Now()
as argument gives us a timer that measures execution time for the function body.
func timedFunction() {
defer timeit(time.Now())
time.Sleep(500 * time.Millisecond)
}
Calling timedFunction()
should print
PERF [timedFunction] [500ms]