打赏

golang 查看程序的运行时间和CPU利用率

(1.) 使用系统自带的time工具查看

time -v  go run test.go

(2.)使用top命令

top -p $(pidof 二进制)

(3.)GODEBUG和gctrace

执行程序之前,添加环境变量GODEBUG='gctrace=1'来跟踪垃圾回收信息。

GODEBUG='gctrace=1' ./xxx

(4.) 利用runtime.ReadMemStats()方法

func readMemStats(){
	var ms runtime.MemStats
	runtime.ReadMemStats(&ms)
	log.Printf(Alloc:%d(bytes) HeadIdle:%d(bytes) HeadReleased:%d(bytes))
}
// 说明:将该方法,放到要执行函数的前后,即可查看内存情况

(5.)使用pprof工具

import(
_ "net/http/pprof"
)

func main(){
	// 启动pprof
	go func(){
		log.Println(http.ListenAndServer("0.0.0.0:10000"),nil)
	}()
}

//(1.) 浏览器访问:
http://127.0.0.1:10000/debug/pprof/heap?debug=1   // 查看内存情况

//(2.) 使用go tool pprof工具查看
go tool pprof [binary] [profile]
binary:必须指向生成这个性能分析数据的二进制文件
profile:必须是该二进制文件所生成的性能分析数据文件

示例:
go tool pprof ./demo profile
go tool pprof ./demo profileFile:demo //如果找不到grapviz需要安装



数据说明:
flat:当前函数CPU耗时
sun%:当前函数占用CPU耗时百分比
cum:当前函数+调用当前函数占用的CPU总耗时

(3.)先启动程序,生成proflie文件后再查看
示例:
./demo
go tool pprof http://localhost:10000/debug/pprof/profile?seconds=60
posted @ 2021-03-06 21:32  苍山落暮  阅读(2321)  评论(0编辑  收藏  举报