「GoCN酷Go推荐」简单易用的性能分析工具——nitro
#1
推荐理由
Golang官方在程序性能分析方面提供了用来分析cpu/内存等采样信息的pprof,以及用来追踪和分析运行时事件的trace,这两个工具对于分析程序的性能瓶颈可以说是得心应手。但是,对于想分析一个项目中的某个代码片段或者函数的耗时/内存占用,pprof和trace就有点不是很方便了。本文介绍的nitro库可以简单方便的应用于类似的性能分析场景。
#2
功能介绍
源码不到200行的nitro,提供执行时间和内存占用的打点和统计功能。
#3
使用指南
注意:nitro非协程安全,也不支持调用链上的性能分析。
安装
go get github.com/spf13/nitro
代码示例
nitro使用起来非常简单,下面是个简单示例,分析someFunc和otherFunc函数执行耗时和内存分配。
package mainimport ("flag""github.com/spf13/nitro"
)func analysis() {timer := nitro.Initialize()// 通过命令行参数开启分析flag.Parse()// 默认开启// nitro.AnalysisOn = truesomeFunc()timer.Step("step 1, write index")otherFunc()timer.Step("step 2, batch insert")
}
nitro将打点结果直接输出到标准输出,对于想输出到日志文件或者监控系统的,源码本身也很简单,改造一下也比较方便,可结合场景自行改造。
#4
总结
nitro适用于分析代码片段的耗时/内存占用,对于类似场景可以考虑使用。
#5
参考资料
https://github.com/spf13/nitro
《酷Go推荐》招募:
各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到
新的库,并且知道怎么用。
大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名
扫码也可以加入 GoCN 的大家族哟~
「GoCN酷Go推荐」简单易用的性能分析工具——nitro相关推荐
- 「GoCN酷Go推荐」QQ机器人 go-cqhttp
什么是 go-cqhttp?✦ QQ机器人,可以做的事儿太多了,比如一个UP主需要群发多个QQ群,以便通知粉丝们开播:再比如可以检测群内或发给自己的消息,而通过代码直接回复做的简单回复.比如检测群内有 ...
- 「GoCN酷Go推荐」高性能内存缓存 ristretto
背景 ristretto 是 dgraph 团队开源的一款高性能内存缓存库,旨在解决高并发场景下的缓存性能和吞吐瓶颈.dgraph 专攻的方向是高性能图数据库,ristretto 就是其图数据库和 K ...
- 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...
PairMesh是什么? Pairmesh是一款先进的虚拟局域网(VPN)工具,用来搭建与访问安全,易用,高性能的点对点的软件定义虚拟局域网,为远程办公的网络连接问题提供了开箱即用的解决方案. 拥抱开 ...
- 「GoCN酷Go推荐」Golang轻量级桌面程序wails2教学
01 推荐理由 不依赖cgo!不依赖cgo!不依赖cgo!真的不依赖cgo,且跨平台,原生渲染 无嵌入式浏览器,轻量级,生成的文件很小,而且只有一个可执行文件就可运行. 02 功能介绍 后端使用标准 ...
- 「GoCN酷Go推荐」全文检索库bluge
推荐理由 提到全文检索库,第一个想到的就是Java实现的lucene,今天介绍一款Golang实现的全文检索库bluge.bluge脱胎于Bleve,是当前Github比较火的搜索引擎项目zinc的底 ...
- 「GoCN酷Go推荐」重试工具 — retry-go
简介 在微服务架构中,通常会有很多的小服务,小服务之间存在大量 RPC 调用,但时常因为网络抖动等原因,造成请求失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定.ret ...
- 「GoCN酷Go推荐」使用 cmux 实现服务端连接多路复用
如果一个应用需要同时对外提供 HTTP 和 gRPC 服务,通常情况下我们会为两个服务绑定不同的监听端口,而本文要介绍的 cmux 为我们提供了一种连接多路复用的新选择,使用 cmux 可以将不同服务 ...
- 「GoCN酷Go推荐」使用gops诊断运行中的go程序
介绍 gops是一个命令行工具,配合agent,可以用来很方便的诊断运行中的go程序,使用简单,官方维护 安装 go get github.com/google/gops // 或者 go insta ...
- 「GoCN酷Go推荐」交互式命令行工具库survey
☆ 什么是 survey? ☆ survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI ☆ 安装 ☆ go get github.com/AlecAivazis/survey/ ...
最新文章
- helm部署minio
- c#截取字符串指定符号,在.NET中,C#字符串是可截取的,可从指定位置截取,也可指定数量...
- 关于DubboMain启动的真相
- MFC六大核心机制之三:动态创建
- 0020-使用JDBC向Kudu表插入中文字符-双引号的秘密
- Android笔记 actionbar学习
- 表达式必须具有与对应表达式相同的数据类型_跟光磊学Java开发-运算符和表达式...
- wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
- 为什么平方损失函数不适应于分类问题?——从概率论的角度
- android手机导入iphone,安卓手机文件怎么传到苹果手机
- python依赖库是什么_【转】python导出依赖库
- iOS 299美元企业账号申请流程及注意事项
- 想查看微信好友撤回的消息?Python帮你搞定
- matlab+butter+多维,matlab butter c实现
- 腾讯43亿QQ号码用完后怎么办?
- KaTex的一个简单例子
- python多线程爬取海报图片
- ui设计师需要学习什么,初学者必了解
- 碎碎念--2022,请多指教
- Java中settext是什么意思_求问大神【textField.setText(0);是什么意思】
热门文章
- 妙用Outlook2003群发商业邮件
- 自媒体人的福音,比今日热榜还实用的热点工具来了——全网热点直达
- web端页面视频播放
- 《谷歌眼镜》新书作者:眼镜需要成为AR的载体吗?
- 谈一谈开发网盘中碰到的问题(一)
- 顶级域名与二级域名区别
- Can't create/write to file '/tmp/MYXTNkg1' (Errcode: 28 - No space left on device); nested exception
- 小程序代理加盟创业者如何借由小程序赚钱盈利?
- 如何通过应用之星制作一个好的场景app?
- 行业内的服装管理软件个性化定制,哪家服务最周到?