「GoCN酷Go推荐」简单易用的性能分析工具——nitro

2023-09-24 15 0

#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 的大家族哟~

1477f93680ae433357a053d51799a300.png

048a5ac5a0c5ddd98c756d7f84f6ac11.png

代码编程
赞赏

相关文章

小议怎么保证系统线上安全
JMS 与 AMQP 区别
数据库优化之innodb_flush_log_at_trx_commit参数性能优化
java代码优化的小建议
SpringCloud 链路追踪应用
各种文件系统特性说明以及对比