The Go Performance Playground Is No Longer Available

The Go Performance Playground at play.stackimpact.com is no longer available. It turned out not to be as useful and demanded as we originally anticipated. We apologize for any incontinence.

Alternatives

As an alternative you can use a benchmark profiling or profile a running program.

Benchmark profiling

Generating a CPU profile for a benchmark test:

go test -bench=BenchmarkXXX -benchmem -cpuprofile profile.out

The -memprofile and -blockprofile flags can be used to generate memory allocation and blocking call profiles.

Analyzing the profile using Go tool:

go tool pprof profile.out
(pprof) top

Other profile presentations and output formats are also possible, e.g. tree. Type help for more options.

Please note, the benchmark initialization code will also be profiled and may represent a big part of the profile.

Application profiling

To profile a running program in development or production environment, StackImpact Profiler can be used. Import the stackimpact package and add the following code to your application.

stackimpact.Start(stackimpact.Options{
    AgentKey: "your agent key here",
    AppName: "MyGoApp",
})

See setup instructions for more options.