使用pprof分析golang程序性能

go 1.10 以后对go tool pprof做了一个较大的改变:增加了Web UI,以后可以和go trace一起通过图形化的方法对Go程序进行调优了。可视化的pprof使用起来十分简单,我们以gocmpp为例,试用一下go 1.10的pprof。

###1、首先我们生成cpu profile文件:

$GOPATH/src/github.com/bigwhite/gocmpp git:(master)$go test -run=^$ -bench=. -cpuprofile=profile.out
goos: darwin
goarch: amd64
pkg: github.com/bigwhite/gocmpp
BenchmarkRecvAndUnpackPkt-4                1000000          1534 ns/op
BenchmarkCmppConnReqPktPack-4              1000000          1398 ns/op
BenchmarkCmppConnReqPktUnpack-4            3000000           450 ns/op
BenchmarkCmpp2DeliverReqPktPack-4          1000000          1156 ns/op
BenchmarkCmpp2DeliverReqPktUnpack-4        3000000           567 ns/op
BenchmarkCmpp3DeliverReqPktPack-4          1000000          1173 ns/op
BenchmarkCmpp3DeliverReqPktUnpack-4        3000000           465 ns/op
BenchmarkCmpp2FwdReqPktPack-4              1000000          2079 ns/op
BenchmarkCmpp2FwdReqPktUnpack-4            1000000          1276 ns/op
BenchmarkCmpp3FwdReqPktPack-4              1000000          2507 ns/op
BenchmarkCmpp3FwdReqPktUnpack-4            1000000          1286 ns/op
BenchmarkCmpp2SubmitReqPktPack-4           1000000          1845 ns/op
BenchmarkCmpp2SubmitReqPktUnpack-4         1000000          1251 ns/op
BenchmarkCmpp3SubmitReqPktPack-4           1000000          1863 ns/op
BenchmarkCmpp3SubmitReqPktUnpack-4         2000000           656 ns/op
PASS
ok      github.com/bigwhite/gocmpp    26.621s

###2、启动pprof web ui:

$go tool pprof -http=:8080 profile.out

pprof会自动打开默认浏览器,进入下面页面:
这里写图片描述

在view菜单中,我们可以看到”top”、”graph”、”peek”、”source”和”disassemble”几个选项,这些选项可以帮助你在各种视图间切换,默认初始为graph view。不过目前view菜单中并没有”Flame Graph(火焰图)”选项,要想使用Flame Graph,我们需要使用原生的pprof工具,

###3、安装pprof
该工具可通过go get -u github.com/google/pprof获取,install后原生pprof将出现在$GOPATH/bin下面。

使用原生pprof启动Web UI:

$pprof -http=:8080 profile.out

原生pprof同样会自动打开浏览器,进入下面页面:
这里写图片描述

原生的pprof的web ui看起来比go 1.10 tool中的pprof更为精致,且最大的不同在于VIEW菜单下出现了”Flame Graph”菜单项!我们点击该菜单项,一幅Flame Graph便呈现在眼前:
这里写图片描述

###4、一个实际使用pprof分析的例子
Go 代码重构:23 倍性能提升!原文1原文2

参考:

  1. Go 1.10中值得关注的几个变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值