这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记,复习一下今天学习go语言性能分析和pprof,记录遇到的问题
一: PProf
1. pprof
是用于可视化和分析性能分析数据的工具。
想要进行性能优化,首先瞩目在 Go 自身提供的工具链来作为分析依据,
- runtime/pprof:采集程序(非 Server)的运行数据进行分析
- net/http/pprof:采集 HTTP Server 的运行时数据进行分析
2.
打开浏览器访问http://127.0.0.1:6060/debug/pprof/
3.
跑一下 github.com/wolfogre/go-pprof-practice中的mian.go
出现下面运行结果,然后打开终端执行 go tool pprof http://localhost:6060/debug/pprof/profile
出现下面运行结果,然后打开终端执行 go tool pprof http://localhost:6060/debug/pprof/profile
4.
这时可以观察浏览器的相关操作,可以选中某个命令,我选的是allocs,然后可以看到一下结果
5.
回到终端,这时可以输入相应操作也可以观察到相应的信息
如top
flat:给定函数上运行耗时
flat%:同上的 CPU 运行耗时总比例
sum%:给定函数累积使用 CPU 总比例
cum:当前函数加上它之上的调用运行总耗时
cum%:同上的 CPU 运行耗时总比例
6.
这个时候看到(*Tiger).Eat,这个函数占用了很高的资源,此时可以输入执行list Eat,罗列出信息的代码信息
可以看出是执行了一个数量级挺大的循环,这个时候可以安装 graphviz,在终端下执行web后在浏览器中可以看到相关信息,
[graphviz 官网](https://graphviz.gitlab.io/download/)
7.
相应到可以执行go tool pprof http://localhost:6060/debug/pprof/(heap/allocs)等等指令查找bug,或者直接在第二步看信息
二:遇到的问题
1.
如果才终端下执行go mod init animal,发现提示已存在
2.
解决方法
将里面的目录go-pprof-practice移动到D:\go\src,也就是安装go的路径,然后改一下导入的名称
,然后就可以正常的执行了。