绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
如何分析你的 Go 程序性能
2019-10-29 09:37:18

当我们写完代码后,不仅是实现了正常的功能,而且还要高效的完成,那么此时我们就需要检查我们的程序的性能了。

今天说一下 Go 的一个工具:pprof,这个的使用也非常简单,在之前关于字符串的文章中大家应该已经看到了,我就是使用这个工具来看性能的。

pprof 的使用是非常简单的,主要代码在:

"runtime/pprof"

这个包中,主要是一下几个接口:

// 堆栈分析

func WriteHeapProfile(w io.Writer) error

// cpu分析

func StartCPUProfile(w io.Writer) error

func StopCPUProfile()

我们有代码如下:

demo

怎么样,是不是很简单?想要 cpu 的分析,直接调用 cpu 相关的接口,想要堆栈的分析直接调用堆栈的接口(不要忘记 close 哦,这是一个好习惯)。

接下来我们要做的就是编译,go build 或者 go run 命令都可以,这里我使用 go run main.go 命令,然后给我们生成了两个文件:

bin

cpu_profile 和 mem_profile 两个二进制的文件。我们可以执行这两个文件,然后看里面的内容:

go tool pprof cpu_profile

上面这个命令就是执行了 cpu 分析的文件,然后就会有一个交互的命令行界面:

pprof

这里我们就可以使用了,在这里我们就可以使用她支持的命令了,至于有哪些这里就 不一一介绍了,因为我们有 help 命令 =。。=

简单的我们可以使用 top 命令,或者 top加上数字(top5 显示前五,数字代表前几),还可以使用 list 命令,那上面的程序举例,我们可以使用命令:list ShareWith,接下来就可以看到:

list

这回不说大家也知道 list 命令的作用了。还有很多命令,大家可以亲自动手试试,试一下理解的就更透彻了。

除此之外,我们还可以生成一个图片,上面会更加直观的表明什么地方用的时间多,或者 cpu 都干了那些事情,有哪些地方可以优化的,生成图片时我们需要一个工具:Graphviz,如果还未安装,大家可以安装一下,安装方式就不细说了,可以参考这里:

https://graphviz.gitlab.io/download/

本人使用 mac ,所以就是用: brew install graphviz 就可以了。安装的过程需要下载很多东西,大家可以耐心的等待。

大家还记得上面我们使用过 list 命令吧,当我们再使用 help 命令后,有一行是 svg,这个就是了。另外呢,我们可以不用执行 cpu_profile 这个文件,执行使用命令行来生成图片,

go tool pprof -svg ./main cpu_profile > cpu.svg

这里就不给大家演示图片了,希望大家可以自己动手一下,因为我个人觉得,这种工具的使用,一定要自己动手,就像 docker、k8s 等等,看了视频,自己觉得懂了,但是当自己动手时就又蒙圈了。好了,今天的文章就到这里,稍等,还有一点,就是这个工具还可以使用在 web 的程序中,而且非常好用,上面我们只是演示了对一个算法程序的使用,以后我们再说对于 web 程序如何使用。

感谢阅读,祝大家生活愉快!

分享好友

分享这个小栈给你的朋友们,一起进步吧。

应用开发
创建时间:2020-06-17 15:31:04
应用软件开发是指使用程序语言C#、java、 c++、vb等语言编写,主要是用于商业、生活应用的软件的开发。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~