Go 性能分析
性能分析工具
package tool
// 安装graphviz brew install graphviz
// 将GOPATH加入到/bin加入$PATH
// 安装go-torch go get github.com/uber/go-torch
// 下载并复制 flamegraph.p1 https://github.com/brendangregg/FlameGraph到$GOPATH/bin
// 将$GOPATH/bin 加入$PATH 火炬图
//
//
//
/*
通过文件方式输出Profile
灵活性高,适用于特定的代码段的分析
通过手动调用runtime/pprof的API
go tool pprof[binary][binary.prof]
创建输出文件夹
f,err := os.Create("cpu.prof")
if err != nil{
log.Fatal("Could not create CPU profile",err)
}
获取系统信息
if err := pprof.StartCPUProfile(f);err!=nil{
log.Fatal("Could not Start CPU profile",err)
}
defer pprof.StopCPUProfile()
WriteHeapProfile 写入内存
观测协程
if gProf := pprof.Lookup("goroutine");gProf == nil{
log.Fatal("could not write groutine profile:")
}else{
gProf.WriteTo(f2,0)
}
Go支持多种Profile
go help testflag
https://golang.org/src/runtime/pprof/pprof.go
go tool pprof prof cpu.prof
*/