Monthly Downloads: 8
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags: Development     GHC     Profiling     Trace    
Latest version: v0.2.4

ghc-events-analyze alternatives and similar packages

Based on the "ghc" category.
Alternatively, view ghc-events-analyze alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ghc-events-analyze or a related project?

Add another 'ghc' Package



See Performance profiling with ghc-events-analyze for an introduction to this tool. Below we describe some features that were introduced since the blog post.

Controlling layout

As of version 0.2.3, there are a number of options for controlling the layout. To slice time coarsely, as we did in the blog post, you can run

ghc-events-analyze -b 50 ...

This results in something like


By default (in 0.2.0 and again from 0.2.3) time is split into 100 buckets. To slice time more finely (this was the default for versions 0.2.1 and 0.2.2), you can run

ghc-events-analyze -b 500 --tick-every 10 --bucket-width 1 --border-width 0

The results in something like



Windowing can be used to split all events into a bunch of reports, one per window. You can use it like this:

  traceEventIO "START WINDOW"
  traceEventIO "STOP WINDOW"

  traceEventIO "START WINDOW"
  traceEventIO "STOP WINDOW"

  traceEventIO "START WINDOW"
  traceEventIO "STOP WINDOW"

If you then run ghc-events-analyze using --window "WINDOW" it will create one report per window; for instance, in the above example it would create


Event subscripts

Suppose you have multiple events that should all show up as request in the generated reports, but should nonetheless be distinguished from each other. There are two ways to do this. One is to call the events request0, request1, etc.

traceEventIO "START request0"
traceEventIO "STOP request0"

traceEventIO "START request1"
traceEventIO "STOP request1"

and then use the ghc-events-analyze DSL to add some renaming instructions. However, that might get tedious if there are a lof of these. Alternatively, you can use event subscripts, like this:

traceEventIO "START 0 request"
traceEventIO "STOP 0 request"

traceEventIO "START 1 request"
traceEventIO "STOP 1 request"

These subscripts are used to distinguish events, but do not show up in the report.