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的图形化环境更加便利地分析程序性能。
- golang 程序性能优化工具介绍
- Oracle10g的AWR性能优化工具介绍
- Oracle10g的AWR性能优化工具介绍
- Android系统性能优化工具介绍
- Android性能优化的工具介绍
- Android性能优化之Systrace工具介绍
- 深入介绍iOS程序性能优化
- gprof使用介绍-优化程序性能
- 程序性能分析工具gprof介绍
- 【golang】Go 性能优化技巧
- [golang]pprof性能分析工具
- 创新谈-AWR性能优化工具介绍-刘斌
- The Python Profilers (python性能优化工具介绍)
- Linux进程管理优化及性能评估工具介绍
- Android性能优化之Systrace工具介绍(一)
- Android性能优化之Systrace工具介绍(一)
- VTune 分析和优化程序性能的工具
- gprof-Linux下程序的性能优化工具
- Python 批量合并sqlite db文件笔记
- Symmetric Difference
- xml格式化去空格
- SPI学习笔记(1)
- 道路交通实时流量监控预测系统
- golang 程序性能优化工具介绍
- Git版本恢复命令reset和revert
- 3D引擎数据结构与glTF(1):简介
- leetcode 436. Find Right Interval 最右边的区间
- c++学习总结2
- 高中数学?
- 电子商务网站(模块化布局)实战开发
- 最小二乘法线性拟合计算器
- [JZOJ5500]【清华集训2017模拟12.10】营养餐