Libraries and utilities for pprof, written in Go.
The Golang profiling tools are a pain to get set up in Windows, and they're quite dated compared to the tools available in IDEs like Visual Studio nowadays.
The over-ambitious goal of this is to start building a cross platform toolkit for the profiling of the performance of Go programs using Go itself and web browsers as the IDE. Being able to recreate the results from http://blog.golang.org/profiling-go-programs would be expecially nice.
The largest problem may end up being that there is currently no debugging information available on the Windows platform. Until that issue is resolved somehow, a lot of the most detailed information in the blog may be unavailable on Windows, but we can still make the tools that are available more accessible.
- Automated profiling of production cloud based golang systems
 - Easy, dependency free local profiling tools
 
2013/12/05 13:31:12 Starting profile collection (this will take ~30 secs)
2013/12/05 13:31:42 Done collecting profile
2013/12/05 13:31:42 Grinding callstack
Profile with 2996 samples
 runtime.goexit 100.00% (0.00%)
   runtime.main 100.00% (0.00%)
     main.main 100.00% (0.00%)
       main.HttpProfileServer 100.00% (0.00%)
         main.DoWork 100.00% (0.00%)
           main.ShortRunningFunction 95.53% (9.68%)
             math.Sqrt 85.85% (85.85%)
           main.LongRunningFuncion 4.47% (0.10%)
             math.Sinh 4.37% (0.27%)
               math.Exp 4.11% (4.11%)
go build github.com/Redundancy/pprofit/pprofit
<run program to profile for > 30 sec, running the http pprof module>
pprofit f -p 6060
go build github.com/Redundancy/pprofit/sampleapp github.com/Redundancy/pprofit/integrationtest
Running integrationtest should execute sampleapp and interrogate it to generate a profile, get other symbol information and then shut it down.
This is currently being developed on Windows, but there shouldn't be anything particularly special about that. I will look into getting a CI loop set up on Travis or some other service.
- ☑ Backend code is able to interrogate a sample application using net/http/pprof and obtain a profile
 - ☑ Profile can be interpreted using http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile-fileformat.html
 - ☑ Function pointers can be interpreted
 - ☑ Callgraph structure can be built from the samples
 - ☐ Simple web-app running displaying some information
 - ☐ Bootstap / D3 / AngularJS evaluated and potentially integrated