Golang 使用 Profiling 来分析程序的瓶颈的方法很简单。

引入后在main 里添加一行
Go: profile
1
2
3
4
5
6 |
import "github.com/davecheney/profile"
func main() {
defer profile.Start(profile.CPUProfile).Stop()
...
}
|
首先运行 go build
,然后跑程序,程序开始时会有提示:
Bash: profile
1 |
profile: cpu profiling enabled, /tmp/profile488201610/cpu.pprof
|
程序终止后查看结果:
Bash: pprof
1 |
go tool pprof -raw /tmp/profile488201610/cpu.pprof
|
项目 https://github.com/davecheney/profile
本文网址: https://golangnote.com/topic/98.html 转摘请注明来源
Related articles
有两种方法,runtime/pprof 和 net/http/pprof ,后者封装了前者...
Go 分片切割大文件...
一个 web 应用通常是跑在一个前端代理,如 Nginx 后,这样可以方便的在同一个服务器部署多个应用。这里说的独立部署是指让 go web 程序直接暴露在外面,独占 443、80 端口(俗称裸跑)。这样做除了性能有些提高外,更重要的是部署方便。...
Go 很适于网络编程,下面是实现一个简单的 TCP 服务...
获取golang 编译好的包本身的md5值,在验证开源的程序有没有被修改时很有用。...
Golang 内置库net 有一些函数能方便获取DNS 记录信息。...
两个不错的可以实现均衡负载的 go 库,sslb 比较简单,seesaw 功能较多,使用也比较复杂。...
Go 1.5.1版本对编译器,汇编器, fmt, net/textproto, net/http, 和 runtime 包的 bug 修复。...
这些 go 格言谚语大多出自 Rob Pike 振奋人心的演讲视频,有很大参考价值。...
Blb是一种用go 实现的分布式对象存储系统。 它专为在集群计算环境中的裸机上使用而设计。客户端API 也用Go来实现,它使用类似于Go文件(io.ReadWriteSeeker)的接口公开对象。...