自定义打点的耗时统计工具,并将结果以火焰图的形式输出。
火焰图生成工具目前只支持 Linux 环境
依赖安装
yay -S flamegraph # archlinux
或者直接下载 flamegraph.pl 到同目录
工具安装
go install github.com/eaglexiang/costwhere-go/cmd/costwhere@latest
包引用
go get github.com/eaglexiang/costwhere-go
代码引用
import costwhere "github.com/eaglexiang/costwhere-go"
func main() {
ctx := context.Background()
// 初始化并回收 costwhere 采集
ctx, cw := costwhere.Init(ctx)
defer func() {
stacks, err := cw.EndWithJSON() // 以 JSON 格式对采集结果进行输出
if err != nil {
log.Printf("%+v", err)
return
}
err = os.WriteFile("costwhere.json", stacks, 0644) // 将采集结果保存到文件(或输出到日志)
if err != nil {
log.Printf("%+v", err)
}
}()
F(ctx)
}
func F(ctx context.Context) {
defer costwhere.Mark(ctx)() // 在任何需要进行耗时统计的地方复制粘贴此代码
time.Sleep(100 * time.Millisecond)
}
costwhere -if="./costwhere.json" -of="./flamegraph.svg"
# output flamegraph.svg