Golang性能分析神器:pprof与火焰图实战揭秘
package main
import (
"net/http"
_ "net/http/pprof" // 启用pprof
"runtime/pprof"
"time"
)
func cpuProfile() {
// 创建CPU性能分析文件
f, err := os.Create("cpu.prof")
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// 执行你的代码
doWork()
}
func doWork() {
// 模拟耗时工作
time.Sleep(10 * time.Second)
}
func main() {
go func() {
// 启动一个HTTP服务器以供pprof使用
http.ListenAndServe(":8080", nil)
}()
cpuProfile()
}
这段代码首先导入了必要的pprof包,启用了pprof的HTTP服务。然后定义了一个cpuProfile函数,用于创建CPU性能分析文件并在该文件上启动CPU性能分析。在工作函数doWork中,我们模拟了一些耗时的工作。最后,在main函数中,我们启动了一个HTTP服务器以便于使用pprof进行性能分析,并调用cpuProfile函数。
评论已关闭