hp2pretty is a program to graph heap profiles output by Haskell programs compiled by GHC. It makes images like this by default:

Today I hacked on it some more and added some new features, like --reverse to switch the order of the bands:

and --sort=stddev to sort by band standard deviation:

and --sort=name to sort by cost center name:

and --trace=50 to combine the last percentage of trace elements into one band:

and --bands=5 to show only a certain number of bands:

and the icing on the cake, --pattern to use pattern fills for low ink printing:

Here's the --help output, using the optparse-applicative package for command line arguments:

hp2pretty - generate pretty graphs from heap profiles Usage: hp2pretty [--uniform-scale AXES] [--sort FIELD] [--reverse] [--trace PERCENT] [--bands COUNT] [--pattern] FILES... Convert heap profile FILES.hp to pretty graphs FILES.svg Available options: --uniform-scale AXES Whether to use a uniform scale for all outputs. One of: none (default), time, memory, both. --sort FIELD How to sort the bands. One of: size (default), stddev, name. --reverse Reverse the order of bands. --trace PERCENT Percentage of trace elements to combine. (default: 1.0) --bands COUNT Maximum number of bands to draw (0 for unlimited). (default: 15) --pattern Use patterns instead of solid colours to fill bands. FILES... Heap profiles (FILE.hp will be converted to FILE.svg). -h,--help Show this help text

Version 0.7 was also released this week, featuring a contributed bugfix in parsing. You can get the latest from git here:

git clone https://code.mathr.co.uk/hp2pretty.git

or install from Hackage.