runtime/pprof(工具型应用)¶
cpu:
使用: runtime/pprof
具体做法就是用到pprof.StartCPUProfile和pprof.StopCPUProfile
比如下面的例子:
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
func main() {
flag.Parse()
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
xxxx
xxxx
}
运行程序的时候加一个--cpuprofile参数,比如:
$ fabonacci --cpuprofile=cpu.prof // 这样程序运行的时候的cpu信息就会记录到XXX.prof中了
下一步就可以使用这个prof信息做出性能分析图了(需要安装graphviz)
堆内存:
func main() {
f, err := os.OpenFile("heap.prof", os.O_RDWR|os.O_CREATE, 0644)
if err != nil {
log.Fatal(err)
}
defer f.Close()
time.Sleep(30 * time.Second)
pprof.WriteHeapProfile(f)
fmt.Println("Heap Profile generated")
}
使用:
$ go tool pprof <二进制文件> cpu.prof
$ go tool pprof <二进制文件> heap.prof