「GoCN酷Go推薦」簡(jiǎn)單易用的性能分析工具——nitro
推薦理由
Golang官方在程序性能分析方面提供了用來分析cpu/內(nèi)存等采樣信息的pprof,以及用來追蹤和分析運(yùn)行時(shí)事件的trace,這兩個(gè)工具對(duì)于分析程序的性能瓶頸可以說是得心應(yīng)手。但是,對(duì)于想分析一個(gè)項(xiàng)目中的某個(gè)代碼片段或者函數(shù)的耗時(shí)/內(nèi)存占用,pprof和trace就有點(diǎn)不是很方便了。本文介紹的nitro庫可以簡(jiǎn)單方便的應(yīng)用于類似的性能分析場(chǎng)景。
功能介紹
源碼不到200行的nitro,提供執(zhí)行時(shí)間和內(nèi)存占用的打點(diǎn)和統(tǒng)計(jì)功能。
使用指南
注意:nitro非協(xié)程安全,也不支持調(diào)用鏈上的性能分析。
安裝
go?get?github.com/spf13/nitro
代碼示例
nitro使用起來非常簡(jiǎn)單,下面是個(gè)簡(jiǎn)單示例,分析someFunc和otherFunc函數(shù)執(zhí)行耗時(shí)和內(nèi)存分配。
package?main
import?(
?"flag"
?"github.com/spf13/nitro"
)
func?analysis()?{
?timer?:=?nitro.Initialize()
?//?通過命令行參數(shù)開啟分析
?flag.Parse()
?//?默認(rèn)開啟
?//?nitro.AnalysisOn?=?true
?someFunc()
?timer.Step("step?1,?write?index")
?otherFunc()
?timer.Step("step?2,?batch?insert")
}
nitro將打點(diǎn)結(jié)果直接輸出到標(biāo)準(zhǔn)輸出,對(duì)于想輸出到日志文件或者監(jiān)控系統(tǒng)的,源碼本身也很簡(jiǎn)單,改造一下也比較方便,可結(jié)合場(chǎng)景自行改造。
總結(jié)
nitro適用于分析代碼片段的耗時(shí)/內(nèi)存占用,對(duì)于類似場(chǎng)景可以考慮使用。
參考資料
https://github.com/spf13/nitro
《酷Go推薦》招募:
各位Gopher同學(xué),最近我們社區(qū)打算推出一個(gè)類似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個(gè)庫或者好的項(xiàng)目,然后寫一點(diǎn)這個(gè)庫使用方法或者優(yōu)點(diǎn)之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到
新的庫,并且知道怎么用。
大概規(guī)則和每日新聞?lì)愃?,如果?bào)名人多的話每個(gè)人一個(gè)月輪到一次,歡迎大家報(bào)名!戳「閱讀原文」,即可報(bào)名
掃碼也可以加入 GoCN 的大家族喲~
