一、官方文档
https://blog.golang.org/profiling-go-programs
$cd your_programe_dir
$go build
$./your_programe -cpuprofile=xxx.prof
$go tool pprof ./your_programe xxx.prof
Entering interactive mode (type "help" for commands)
(pprof) top 10
...
1.如果出现提示:
Cannot find dot, have you installed Graphviz?
需要用root用户安装Graphviz
$sudo brew install Graphviz
2.如果出现提示:
profile is empty
那是因为默认的pprof的采样频率是每秒100次,如果你的程序运行太快,在第一次采样前就结束了,就会出现这个情况。
要不就在程序里面加for循环或者sleep,要不就调整采样频率(见二)
二、
一开始,有人写了一个package,可以定制化profiing:
https://github.com/davecheney/profile
但是后来又更新了,具体原因如下:
http://dave.cheney.net/2014/10/22/simple-profiling-package-moved-updated
因为有些项目已经用了旧的API,所以作者直接给了个新package:
https://github.com/pkg/profile
https://blog.golang.org/profiling-go-programs
$cd your_programe_dir
$go build
$./your_programe -cpuprofile=xxx.prof
$go tool pprof ./your_programe xxx.prof
Entering interactive mode (type "help" for commands)
(pprof) top 10
...
(pprof) web 生成svg文件并打开
注:mac默认用sublime打开,需要修改成chrome: http://blog.csdn.net/jiaolongdy/article/details/50945684
1.如果出现提示:
Cannot find dot, have you installed Graphviz?
需要用root用户安装Graphviz
$sudo brew install Graphviz
2.如果出现提示:
profile is empty
那是因为默认的pprof的采样频率是每秒100次,如果你的程序运行太快,在第一次采样前就结束了,就会出现这个情况。
要不就在程序里面加for循环或者sleep,要不就调整采样频率(见二)
二、
一开始,有人写了一个package,可以定制化profiing:
https://github.com/davecheney/profile
但是后来又更新了,具体原因如下:
http://dave.cheney.net/2014/10/22/simple-profiling-package-moved-updated
因为有些项目已经用了旧的API,所以作者直接给了个新package:
https://github.com/pkg/profile
有疑问加站长微信联系(非本文作者)