I wrote a little tool to graph the fine-grained timing logs produced by ghc
-v (verbose) flag is given. These logs to STDERR look like, e.g.
!!! Liberate case [Data.Binary.Class]: finished in 32.06 milliseconds, allocated 14.879 megabytes !!! Simplifier [Data.Binary.Class]: finished in 873.97 milliseconds, allocated 563.867 megabytes
The project is on GitHub at jberryman/ghc-timing-treemap, along with a screenshot.
Navigating within the graph is pretty slow at least in firefox, and there are some other improvements that could be made, for instance some of the phases are run multiple times on the same module and it would be nice to see these grouped, where the module name is logged.