Golang 大杀器之性能剖析 PProf( 二 )


文章插图
 
三、PProf 可视化界面这是令人期待的一小节 。在这之前,我们需要简单的编写好测试用例来跑一下
编写测试用例(1)新建 data/d_test.go,文件内容:

Golang 大杀器之性能剖析 PProf

文章插图
 
(2)执行测试用例
Golang 大杀器之性能剖析 PProf

文章插图
 
-memprofile 也可以了解一下
启动 PProf 可视化界面方法一:
$ go tool pprof -http=:8080 cpu.prof方法二:
$ go tool pprof cpu.prof $ (pprof) web如果出现 Could not execute dot; may need to install graphviz.,就是提示你要安装 graphviz 了 (请右拐谷歌)
查看 PProf 可视化界面(1)Top
Golang 大杀器之性能剖析 PProf

文章插图
 
(2)Graph
Golang 大杀器之性能剖析 PProf

文章插图
 
框越大,线越粗代表它占用的时间越大哦
(3)Peek
Golang 大杀器之性能剖析 PProf

文章插图
 
(4)Source
Golang 大杀器之性能剖析 PProf

文章插图
 
通过 PProf 的可视化界面,我们能够更方便、更直观的看到 Go 应用程序的调用链、使用情况等,并且在 View 菜单栏中,还支持如上多种方式的切换
你想想,在烦恼不知道什么问题的时候,能用这些辅助工具来检测问题,是不是瞬间效率翻倍了呢
四、PProf 火焰图另一种可视化数据的方法是火焰图,需手动安装原生 PProf 工具:
Golang 大杀器之性能剖析 PProf

文章插图
 
(3) 查看 PProf 可视化界面
打开 PProf 的可视化界面时,你会明显发现比官方工具链的 PProf 精致一些,并且多了 Flame Graph(火焰图)
它就是本次的目标之一,它的最大优点是动态的 。调用顺序由上到下(A -> B -> C -> D),每一块代表一个函数,越大代表占用 CPU 的时间更长 。同时它也支持点击块深入进行分析!
Golang 大杀器之性能剖析 PProf

文章插图
 
总结在本章节,粗略地介绍了 Go 的性能利器 PProf 。在特定的场景中,PProf 给定位、剖析问题带了极大的帮助
希望本文对你有所帮助,另外建议能够自己实际操作一遍,最好是可以深入琢磨一下,内含大量的用法、知识点
思考题你很优秀的看到了最后,那么有两道简单的思考题,希望拓展你的思路
(1)flat 一定大于 cum 吗,为什么?什么场景下 cum 会比 flat 大?
(2)本章节的 demo 代码,有什么性能问题?怎么解决它?
本文作者:煎鱼,原创授权发布

【Golang 大杀器之性能剖析 PProf】


推荐阅读