excel-export/biz/util/ppro.go

55 lines
669 B
Go

package util
import (
"log"
"os"
"runtime/pprof"
"runtime/trace"
)
type Pprof struct {
fc *os.File
fm *os.File
ft *os.File
}
func NewProf() *Pprof {
fc, err := os.Create("./cpu.prof")
if err != nil {
log.Fatal(err)
}
fm, err := os.Create("./men.prof")
if err != nil {
log.Fatal(err)
}
ft, err := os.Create("./trace.out")
if err != nil {
log.Fatal(err)
}
p := &Pprof{
fc: fc,
fm: fm,
ft: ft,
}
p.Start()
return p
}
func (p *Pprof) Start() {
trace.Start(p.ft)
pprof.StartCPUProfile(p.fc)
}
func (p *Pprof) Close() {
pprof.WriteHeapProfile(p.fm)
pprof.StopCPUProfile()
trace.Stop()
p.fc.Close()
p.fm.Close()
p.ft.Close()
}