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

本文介绍了如何通过Go语言的time, top, GODEBUG, runtime.ReadMemStats以及pprof工具来监控程序运行时的内存使用情况,包括使用gctrace跟踪垃圾回收,利用MemStats获取内存状态,并演示了如何通过http/pprof进行性能分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值