go pprof 性能分析

1.安装 【go pprof 性能分析】下载Graphviz
地址 http://www.graphviz.org/downl...
我本地下载好windows版本后,需要加入到环境变量中
安装pprof

go get github.com/pkg/profile

加入到环境变量中
go pprof 性能分析
文章图片

2.代码样例
package mainimport ( "github.com/pkg/profile" "log" "time" ) func joinSlice() []string { var arr []string for i := 0; i < 100000; i++ { arr = append(arr, "arr") } return arr }func main() { // 开始性能分析, 返回一个停止接口 stopper := profile.Start(profile.CPUProfile, profile.ProfilePath(".")) // 在main()结束时停止性能分析 defer stopper.Stop() // 分析的核心逻辑 joinSlice() // 让程序至少运行1秒 time.Sleep(time.Second) log.Println("finished") } //go build -o cpu cpu.go //go tool pprof --pdf cpu.exe cpu.pprof > cpu.pdf

优化后的
func joinSlice() []string { arr := make([]string,100000) for i := 0; i < 100000; i++ { arr = append(arr, "arr") } return arr }

按照顺序执行
go build//生成可执行文件.\golangdemo.ext//执行生成cpu.pprof文件 go tool pprof --pdf golagndemo.ext cpu.pprof > cpu.pdf

3.结果
两次生成的结果
第一次可以看到joinSlice占用了50%的cpu时间,另外50%是垃圾回收
go pprof 性能分析
文章图片

优化后就没有了
go pprof 性能分析
文章图片

参考 http://c.biancheng.net/view/1...

    推荐阅读