golang 程序性能优化工具介绍

来源:互联网 发布:c语言 大括号 是什么 编辑:程序博客网 时间:2024/05/22 01:00

golang程序性能优化

本文内容

本文旨在介绍go语言中用来分析性能的工具

工具列表

go tool pprof

简介:

pprof是go自带的性能分析工具,可以分析程序的各个函数的cpu占用情况,内存占用情况等。

使用方法

方法一 :基于go的功能测试函数

go的功能测试函数有两种,一种是func TestXXX(t*testing.T){},一种是BenchmarkXXX(b*testing.B){}。前者只对函数体运行一次,用来测试函数的功能。后者对函数体运行多次,并输出平均执行时间,用来进行性能测试。这两种模式都可以在命令行模式下生成测试文件。对应的命令行代码如下:
go test . -cpuprofile cpu.profile -memprofile mem.profile
go test -test.bench . -cpuprofile cpu.profile -memprofile mem.profile
1.生成性能分析文件:
通过以上的命令行参数,go 的test会自动往测试函数中加入相关的代码(下面介绍的方法二就是自己往测试函数中嵌入相关生成性能分析文件的代码),用来生成分析性能的文件。最终会在可执行文件目录下产生这样三个文件:可执行文件.exe(或者linux下没有.exe),cpu.profile,mem.profile。
2.利用性能分析文件分析程序性能:
go tool pprof 可执行文件.exe cpu.profile
go tool pprof 可执行文件.exe mem.profile
进入后,可以使用top ,web等命令分析程序性能。具体可参考网络上的相关博客。

方法二:手动在main()函数中嵌入代码

func main(){    //打开文件    cpuf, err := os.OpenFile("cpu.prof", os.O_RDWR|os.O_CREATE, 0644)    memf, err := os.OpenFile("mem.prof", os.O_RDWR|os.O_CREATE, 0644)    pprof.StartCPUProfile(cpuf)    defer pprof.StopCPUProfile()    defer pprof.WriteHeapProfile(memf)    yourtestfunc() }   

运行可执行文件就会产生cpu.prof和mem.prof文件

go-torch

简介:

go-torch是uber开源的一个生成火焰图的工具,火焰图用来分析cpu使用情况,相对于上面的pprof生成的分析文件更加直观,代码路径:
https://github.com/uber/go-torch

使用方法

使用方法参考go-torch提供的README,这里只进行一个自己实践过程中遇到的一个问题:go-torch在windows下运行时候,总是提示依赖的perl文件不是有效文件。但是在ubuntu下运行正常。

友情提示

pprof可以在windows环境下运行linux生成的可执行文件和profile。
比如你在linux环境下生成 yourexec cpu.profile mem.profile
把上面的文件拷贝到windows下,运行go tool pprof yourexec cpu.profile 以及
go tool pprof yourexec mem.profile是可以的。这个特性非常友好,我们可以借助windows的图形化环境更加便利地分析程序性能。

原创粉丝点击