推荐理由
Golang官方在程序性能分析方面提供了用来分析cpu/内存等采样信息的pprof,以及用来追踪和分析运行时事件的trace,这两个工具对于分析程序的性能瓶颈可以说是得心应手。但是,对于想分析一个项目中的某个代码片段或者函数的耗时/内存占用,pprof和trace就有点不是很方便了。本文介绍的nitro库可以简单方便的应用于类似的性能分析场景。
功能介绍
源码不到200行的nitro,提供执行时间和内存占用的打点和统计功能。
使用指南
注意:nitro非协程安全,也不支持调用链上的性能分析。
安装
go get github.com/spf13/nitro
代码示例
nitro使用起来非常简单,下面是个简单示例,分析someFunc和otherFunc函数执行耗时和内存分配。
package main
import (
"flag"
"github.com/spf13/nitro"
)
func analysis() {
timer := nitro.Initialize()
// 通过命令行参数开启分析
flag.Parse()
// 默认开启
// nitro.AnalysisOn = true
someFunc()
timer.Step("step 1, write index")
otherFunc()
timer.Step("step 2, batch insert")
}
nitro将打点结果直接输出到标准输出,对于想输出到日志文件或者监控系统的,源码本身也很简单,改造一下也比较方便,可结合场景自行改造。
总结
nitro适用于分析代码片段的耗时/内存占用,对于类似场景可以考虑使用。
参考资料
-
https://github.com/spf13/nitro
《酷Go推荐》招募:
各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到
新的库,并且知道怎么用。
大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名
扫码也可以加入 GoCN 的大家族哟~
原文始发于微信公众号(GoCN):「GoCN酷Go推荐」简单易用的性能分析工具——nitro
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论