From acf877b8d8e0fae25c53f3facdc64cb56f938c99 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 16 Jul 2024 00:42:15 +0800 Subject: [PATCH] pprof is finished but not review --- pprof/cpu.pprof | Bin 0 -> 3368 bytes pprof/pprof.go | 23 +++++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 pprof/cpu.pprof diff --git a/pprof/cpu.pprof b/pprof/cpu.pprof new file mode 100644 index 0000000000000000000000000000000000000000..b1bd60afe61b00974b38b3c7a72e9a950fa10abf GIT binary patch literal 3368 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 literal 0 HcmV?d00001 diff --git a/pprof/pprof.go b/pprof/pprof.go index 91eae0c..137afc2 100644 --- a/pprof/pprof.go +++ b/pprof/pprof.go @@ -17,39 +17,46 @@ func logicCode() { case v := <-c: //阻塞 fmt.Printf("recv from chan, value:%v\n", v) default: + //time.Sleep(time.Millisecond * 500) //优化 } } } func main() { - var isCPUPprof bool - var isMemPprof bool + var isCPUPprof bool //是否开启内存profile的标志位 + var isMemPprof bool //是否开启内存profile的标志位 flag.BoolVar(&isCPUPprof, "cpu", false, "turn cpu pprof on") flag.BoolVar(&isMemPprof, "mem", false, "turn mem pprof on") flag.Parse() if isCPUPprof { - file, err := os.Create("./cpu.pprof") + f1, err := os.Create("./cpu.pprof") //在当前目录创建cpu.pprof文件 if err != nil { fmt.Printf("create cpu pprof failed, err:%v\n", err) return } - pprof.StartCPUProfile(file) - defer pprof.StopCPUProfile() + pprof.StartCPUProfile(f1) //往文件中记录cpu的信息 + defer func() { + pprof.StopCPUProfile() + f1.Close() + }() //main函数退出之后结束 } for i := 0; i < 8; i++ { go logicCode() } time.Sleep(20 * time.Second) if isMemPprof { - file, err := os.Create("./mem.pprof") + f2, err := os.Create("./mem.pprof") if err != nil { fmt.Printf("create mem pprof failed, err:%v\n", err) return } - pprof.WriteHeapProfile(file) - file.Close() + pprof.WriteHeapProfile(f2) + f2.Close() } } + +//生成文件之后用 go tool pprof cpu.pprof +//list logicCode 查看哪一行执行时间长