go高性能调优 | 青训营笔记

94 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

详细内容

go语言自带的godoc工具可以根据注释生成文档,生成可以自动生成对应的网站(golang.org就是使用godoc工具直接生成的),注释的质量决定了生成的文档的质量。每个包都应该有一个包注释,在package子句之前有一个块注释。对于多文件包,包注释只需要存在于一个文件中,任何一个都可以。包评论应该介绍包,并提供与整个包相关的信息。它将首先出现在godoc页面上,并应设置下面的详细文档。

pprof是golang官方提供的性能测评工具,包含在net/http/pprof和runtime/pprof两个包中,分别用于不同场景。

runtime/pprof主要用于可结束的代码块,如一次编解码操作等; net/http/pprof是对runtime/pprof的二次封装,主要用于不可结束的代码块,如web应用等。

Duration:程序执行时间。在本例中golang自动分配任务给多个核执行程序,总计耗时301.04ms,而采样时间为690ms;也就是说假设有10核执行程序,平均每个核采样69ms的数据。

(pprof) :命令行提示。表示当前在go tool 的pprof工具命令行中,go tool还包括cgo、doc、pprof、test2json、trace等多种命令

top:pprof的指令之一,显示pprof文件中的前10项数据,可以通过top 20等方式显示20行数据;当然pprof下有很多指令,例如list,pdf、eog等等

flat/flat% :分别表示在当前层级cpu的占用时间和百分比。例如runtime.memmove在当前层级占用cpu时间380ms,占比本次采集时间的55.07%。

cum/cum% :分别表示截止到当前层级累积的cpu时间和占比。例如main.counter累积占用时间510ms,占本次采集时间的73.91%。

sum% :所有层级的cpu时间累积占用,从小到大一直累积到100%,即690ms。