性能优化分析工具
性能调优原则
- 依靠数据而不是猜测 [产品性能与运行环境等因素有关]
- 抓重点 [优先选择性能更容易提高的部分]
- 不要过早或者过度的优化 [产品更新迭代一定程度后再优化]
Go语言性能分析工具-pprof
分析数据与可视化工具pprof,可以查看消耗CPU与Memory性能
分析源码:github.com/wolfogre/go…
使用go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"命令分析一段时间内程序运行的性能
- 进入pprof命令界面以后,使用
top(topN)命令查看占用资源最多的函数,相应表示如下:
| 类别 | 含义 |
|---|---|
| flat | 当前函数执行耗时 |
| flat% | 该函数执行耗时占总CPU时间的比例 |
| sum% | 以上每一行的flat%总和 |
| cum | 当前函数本身与调用函数的总耗时 |
| cum% | cum占CPU总时间的比例 |
- 通过
list 函数名命令查找具体函数的问题 - 通过
web命令在网页中展开可视化数据 - 也可以在一开始使用
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap"命令进入web页面 - 还可以查看不同类别的数据,如
| 类别 | 含义 |
|---|---|
| alloc_objects | 程序累计申请的对象数 |
| inuse_objects | 当前持有的对象数 |
| alloc_space | 程序累计申请的内存大小 |
| inuse_space | 当前持有的内存大小 |
- goroutine协程排查 使用
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"命令进入web页面 - 更改后缀为
mutex或block可以查看锁和阻塞的问题
学习小结
这节课主要学习了如何使用pprof工具对于Go语言程序进行性能分析,并通过对一个具体程序进行分析实战掌握性能分析的基本步骤与逻辑,也为以后更好地优化代码,提升运行效率奠定了基础,在课后我还会针对老师提供的一些课外项目进行性能优化分析,巩固所学知识。