Analyze and visualize event logs

Latest on Hackage:0.2.5

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD-3-Clause licensed by Edsko de Vries, Duncan Coutts, Mikolaj Konarski
Maintained by

ghc-events-analyze is a simple Haskell profiling tool that uses GHC's eventlog system. It helps with some profiling use cases that are not covered by the existing GHC profiling modes or tools. It has two major features:

  1. While ThreadScope shows CPU activity across all your cores, ghc-events-analyze shows CPU activity across all your Haskell threads.

  2. It lets you label periods of time during program execution (by instrumenting your code with special trace calls) and then lets you visualize those time periods or get statistics on them.

It is very useful for profiling code when ghc's normal profiling mode is not available, or when using profiling mode would perturb the code too much. It is also useful when you want time-profiling information with a breakdown over time rather than totals for the whole run.

The blog post Performance profiling with ghc-events-analyze describes the motivation in more detail.



* Add suppor for filtering threads by name, and improve
performance of relabelling.
(2017-03-11 Pepe Iborra <>)


* Fix bug in timeline rendering when using --tick-every
(2016-10-04 Edsko de Vries <>)
* Backwards compatibility with older ghc


* Add new command line options: `--tick-every`, `--bucket-width`,
`--bucket-height`, and `--border-width`. This allows to get both the
behaviour we used in the blogpost and the behaviour that was implemented
by Andrew Farmer in 0.2.1
(2016-10-03 Edsko de Vries <>)
* Fix issue with thread creation before window start
(2015-09-29, Will Sewell <>)
* Bump optparse-applicative and lens versions
(2015-01-19, Will Sewell <>)


* Adds support for GHC 7.10
(2015-09-23, Will Sewell <>)
(2015-05-29, GaneshRapolu <>)


* Various new features: slice time more finely, add sorting options for timed
report, more colours, support for ms on the timeline, use alternating
colours for background, support for windowing.
(2014-12-06, Andrew Farmer <>)
* Make sure _shutdown is always set, so that event logs from programs
that terminated abnormally can still be visualized
(2014-03-14, Bas van Dijk <>)
* Relax bounds
(2014-05-28, Dominic Steinitz <>)
(2014-11-05, Alexander Vershilov <>)
(2014-11-07, Andrew Farmer <>)
* Move to diagrams 1.2
(2014-06-25, Carter Tazio Schonwald <>)
* Fix space leak in recordShutdown
(2014-08-15, John Lato <>)


* Initial release
(2014-02-12, Edsko de Vries <>)
comments powered byDisqus