Let's perform some example profiling on a simple Go program in order to understand how the profiler works. We will create a sample program with a couple of sleep parameters in order to see the timings for different function calls:
- First, we instantiate our package and add all of our imports:
import (
"fmt"
"io"
"net/http"
_ "net/http/pprof"
"time"
)
- Next, in our main function, we have an HTTP handler that has two sleep functions that are called as part of the handler:
func main() {
Handler := func(w http.ResponseWriter, req *http.Request) {
sleep(5)
sleep(10)
io.WriteString(w, "Memory Management Test")
}
http.HandleFunc("/", Handler)
http.ListenAndServe(":1234", nil)
}
Our sleep function just sleeps for a particular millisecond...