3 Jun 2013
There is already a great article on Profiling Go Programs. However that article only discusses how to profile a standalone binary - what about a library?
For example, I’ve been working on the GoSNMP SNMP library, here’s how I profiled it (it wasn’t obvious):
# produce cpu profiling information from the tests - this part was well documented % go test -cpuprofile cpu.out # compile the test binary to pkg.test but do not run it (from `go help test`) # this part wasn't obvious % go test -c # now run pprof using `go teste -c` output # using gosnmp.test - this part wasn't obvious % go tool pprof gosnmp.test cpu.out
Doing a memory profile was similar:
% go test -memprofile mem.out % go test -c % go tool pprof gosnmp.test mem.out