From 4a6efc74aebcc689a734d05bc8435eb9560340e1 Mon Sep 17 00:00:00 2001 From: Flu0r1ne Date: Sun, 5 Sep 2021 02:11:09 -0500 Subject: Add CPU profiling flag --- cmd/planr/main.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'cmd/planr/main.go') diff --git a/cmd/planr/main.go b/cmd/planr/main.go index 4ff57eb..d7f62aa 100644 --- a/cmd/planr/main.go +++ b/cmd/planr/main.go @@ -1,15 +1,16 @@ package main import ( + "flag" "fmt" "io" "log" "os" - "flag" + "runtime/pprof" "golang.flu0r1ne.net/planr" - "golang.flu0r1ne.net/planr/cmd/planr/sub" "golang.flu0r1ne.net/planr/adapters/gtest" + "golang.flu0r1ne.net/planr/cmd/planr/sub" ) func printUsage(w io.Writer) { @@ -27,6 +28,11 @@ func dieUsage() { os.Exit(1) } +var src = flag.String("srcdir", "", "source directory") +var config = flag.String("configdir", "", "config directory") +var build = flag.String("builddir", "", "build directory") +var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") + func getConfiguredRunner() planr.Runner { r := planr.ConfigureRunner() r = planr.RegisterAdapter(r, gtest.NewAdapter()) @@ -35,21 +41,15 @@ func getConfiguredRunner() planr.Runner { r = planr.SetConfigDirFromTree(r, wd) } - src := flag.String("srcdir", "", "source directory") - config := flag.String("configdir", "", "config directory") - build := flag.String("builddir", "", "build directory") - - flag.Parse() - - if src != nil && *src != "" { + if *src != "" { r = planr.SetSrcDir(r, *src) } - if config != nil && *config != "" { + if *config != "" { r = planr.SetConfigDir(r, *config) } - if build != nil && *build != "" { + if *build != "" { r = planr.SetBuildDir(r, *build) } @@ -57,6 +57,18 @@ func getConfiguredRunner() planr.Runner { } func main() { + flag.Parse() + + if *cpuprofile != "" { + f, err := os.Create(*cpuprofile) + + if err != nil { + log.Fatal(err) + } + + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + } log.SetFlags(log.Llongfile | log.Lmsgprefix) log.SetPrefix("planr: ") -- cgit v1.2.3