go pprof 性能分析
1.安装
【go pprof 性能分析】下载Graphviz
地址 http://www.graphviz.org/downl...
我本地下载好windows版本后,需要加入到环境变量中
安装pprof
go get github.com/pkg/profile
加入到环境变量中
文章图片
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%是垃圾回收
文章图片
优化后就没有了
文章图片
参考 http://c.biancheng.net/view/1...
推荐阅读
- 如何寻找情感问答App的分析切入点
- D13|D13 张贇 Banner分析
- 自媒体形势分析
- 2020-12(完成事项)
- Android事件传递源码分析
- Python数据分析(一)(Matplotlib使用)
- 泽宇读书会——如何阅读一本书笔记
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- ffmpeg源码分析01(结构体)
- 关于两种潜能生的性格分析