From 6a1d7d2fe69c29ec08d498d30721995f58fadafc Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 22 May 2018 11:42:56 -0400 Subject: Add go profiling CLI flag --- main.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'main.go') diff --git a/main.go b/main.go index ebeaf87c1..8e01567cc 100644 --- a/main.go +++ b/main.go @@ -5,14 +5,17 @@ import ( "fmt" "github.com/golang/protobuf/proto" "github.com/ry/v8worker2" + "log" "net/url" "os" "path" + "runtime/pprof" ) var flagReload = flag.Bool("reload", false, "Reload cached remote source code.") var flagV8Options = flag.Bool("v8-options", false, "Print V8 command line options.") var flagDebug = flag.Bool("debug", false, "Enable debug output.") +var flagGoProf = flag.String("goprof", "", "Write golang cpu profile to file.") var DenoDir string var CompileDir string @@ -53,6 +56,17 @@ func main() { } args = v8worker2.SetFlags(args) + // Maybe start Golang CPU profiler. + // Use --prof for profiling JS. + if *flagGoProf != "" { + f, err := os.Create(*flagGoProf) + if err != nil { + log.Fatal(err) + } + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + } + createDirs() createWorker() -- cgit v1.2.3