hs-speedscope
is a simple executable for converting an eventlog into a format suitable to load into speedscope.
WARNING: Only GHC 8.10 supports generating an eventlog with the correct events for this program to work.
- Create an eventlog which contains time profiling events by running your program with
program +RTS -p -l-au
. - Run
hs-speedscope
on the resulting eventloghs-speedscope program.eventlog
. - Load the resulting
program.eventlog.json
file into speedscope to visualise the profile.
cabal update
cabal install exe:hs-speedscope
This will install to cabal's per-user default location: ~/.cabal/bin/hs-speedscope
.
It is sometimes useful to isolate a specific part of the sample, for example, when I was profiling ghcide, I want to isolate a single hover request.
The --start
and --end
options can be used to indicate which parts of the
eventlog to keep. The filtering options look for messages inserted into the
eventlog by traceMarker
events.
- No events before the first marker which matches the prefix given by
--start
will be included in the result - No events after the first marker which matches the prefix given by
--end
will be included in the result.
For example, the following invocation will filter the profile between the START and END markers.
hs-speedscope File.eventlog --start START --end END