一、Golang性能分析工具

准备工作

1、安装graphviz
Go语言的内置工具可以借助graphviz软件将性能分析结果图形化。

OS X和Ubuntu可以直接使用brew和apt-get install graphviz
Windows用户可以下载zip包,然后将解压后的目录添加到Path环境变量中。
下载地址:http://www.graphviz.org/download/

2、将$GOPATH/bin目录添加到Path环境变量中

在代码中嵌入性能分析代码

这种方式可以很灵活的对任何代码片段进行性能分析。
示例代码(prof.go):

示例代码中只写了两个功能函数,分别是fillMatrix、calculate。
fillMatrix会使用随机数初始化传入的二维数组,calculate会计算二维数组每行元素的累加和。

在main函数中,通过StartCPUProfile和StopCPUProfile函数来生成程序运行时的CPU占用情况。可以通过控制两个函数的调用位置来生成特定代码片段的运行时CPU占用情况。

后面又调用了WriteHeapProfile函数来生成程序运行时的内存占用情况。

在程序末尾,通过Lookup和WriteTo函数生成了当前所在协程的profile文件。

编译并运行这段代码,会生成三个profile文件:

使用go tool pprof分析cpu性能

上面的命令中,首先使用go tool pprof cpu.prof命令打开一个分析cpu.prof文件的交互式命令行,在交互命令行中使用top命令可以查看各个函数的cpu运行时间占比数据。

cum cum%代表函数以及函数调用其他函数的整体cpu运行时间和总体占比。
flat flat% 两列代表函数本身(不包含调用其他函数的耗时)运行的cpu运行时间和总体占比。

在命令输出中,我们可以看到:

main.fillMatrix函数调用耗时较长,因为我们使用list main.fillMatrix命令来详细查看这个函数每一条语句的cpu耗时情况:


一、Golang性能分析工具

来源:后知晚觉

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月22日
下一篇 2020年1月22日

相关推荐