#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相关推荐

  1. 「GoCN酷Go推荐」​QQ机器人 go-cqhttp

    什么是 go-cqhttp?✦ QQ机器人,可以做的事儿太多了,比如一个UP主需要群发多个QQ群,以便通知粉丝们开播:再比如可以检测群内或发给自己的消息,而通过代码直接回复做的简单回复.比如检测群内有 ...

  2. 「GoCN酷Go推荐」高性能内存缓存 ristretto

    背景 ristretto 是 dgraph 团队开源的一款高性能内存缓存库,旨在解决高并发场景下的缓存性能和吞吐瓶颈.dgraph 专攻的方向是高性能图数据库,ristretto 就是其图数据库和 K ...

  3. 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...

    PairMesh是什么? Pairmesh是一款先进的虚拟局域网(VPN)工具,用来搭建与访问安全,易用,高性能的点对点的软件定义虚拟局域网,为远程办公的网络连接问题提供了开箱即用的解决方案. 拥抱开 ...

  4. 「GoCN酷Go推荐」Golang轻量级桌面程序wails2教学

    01 推荐理由 不依赖cgo!不依赖cgo!不依赖cgo!真的不依赖cgo,且跨平台,原生渲染 无嵌入式浏览器,轻量级,生成的文件很小,而且只有一个可执行文件就可运行. 02 功能介绍 后端使用标准 ...

  5. 「GoCN酷Go推荐」​全文检索库bluge

    推荐理由 提到全文检索库,第一个想到的就是Java实现的lucene,今天介绍一款Golang实现的全文检索库bluge.bluge脱胎于Bleve,是当前Github比较火的搜索引擎项目zinc的底 ...

  6. 「GoCN酷Go推荐」重试工具 — retry-go

    简介 在微服务架构中,通常会有很多的小服务,小服务之间存在大量 RPC 调用,但时常因为网络抖动等原因,造成请求失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定.ret ...

  7. 「GoCN酷Go推荐」使用 cmux 实现服务端连接多路复用

    如果一个应用需要同时对外提供 HTTP 和 gRPC 服务,通常情况下我们会为两个服务绑定不同的监听端口,而本文要介绍的 cmux 为我们提供了一种连接多路复用的新选择,使用 cmux 可以将不同服务 ...

  8. 「GoCN酷Go推荐」使用gops诊断运行中的go程序

    介绍 gops是一个命令行工具,配合agent,可以用来很方便的诊断运行中的go程序,使用简单,官方维护 安装 go get github.com/google/gops // 或者 go insta ...

  9. 「GoCN酷Go推荐」交互式命令行工具库survey

    ☆ 什么是 survey? ☆ survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI ☆ 安装 ☆ go get github.com/AlecAivazis/survey/ ...

最新文章

  1. helm部署minio
  2. c#截取字符串指定符号,在.NET中,C#字符串是可截取的,可从指定位置截取,也可指定数量...
  3. 关于DubboMain启动的真相
  4. MFC六大核心机制之三:动态创建
  5. 0020-使用JDBC向Kudu表插入中文字符-双引号的秘密
  6. Android笔记 actionbar学习
  7. 表达式必须具有与对应表达式相同的数据类型_跟光磊学Java开发-运算符和表达式...
  8. wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
  9. 为什么平方损失函数不适应于分类问题?——从概率论的角度
  10. android手机导入iphone,安卓手机文件怎么传到苹果手机
  11. python依赖库是什么_【转】python导出依赖库
  12. iOS 299美元企业账号申请流程及注意事项
  13. 想查看微信好友撤回的消息?Python帮你搞定
  14. matlab+butter+多维,matlab butter c实现
  15. 腾讯43亿QQ号码用完后怎么办?
  16. KaTex的一个简单例子
  17. python多线程爬取海报图片
  18. ui设计师需要学习什么,初学者必了解
  19. 碎碎念--2022,请多指教
  20. Java中settext是什么意思_求问大神【textField.setText(0);是什么意思】

热门文章

  1. 妙用Outlook2003群发商业邮件
  2. 自媒体人的福音,比今日热榜还实用的热点工具来了——全网热点直达
  3. web端页面视频播放
  4. 《谷歌眼镜》新书作者:眼镜需要成为AR的载体吗?
  5. 谈一谈开发网盘中碰到的问题(一)
  6. 顶级域名与二级域名区别
  7. Can't create/write to file '/tmp/MYXTNkg1' (Errcode: 28 - No space left on device); nested exception
  8. 小程序代理加盟创业者如何借由小程序赚钱盈利?
  9. 如何通过应用之星制作一个好的场景app?
  10. 行业内的服装管理软件个性化定制,哪家服务最周到?