ANN: prof2dot, version 0.4.1

I am pleased to announce the release of prof2dot version 0.4.1, a graphical profiling tool for use with GHC. The program is a filter that takes the profiling output generated by running a GHC-compiled program with the "+RTS -px -RTS" option and turns it into a dot file. (The "dot" format is a textual representation of a directed or undirected graph.) The dot file can rendered in any format supported by Graphviz's dot program, and the file itself can be post-processed or edited to adjust the layout. The new release fixes a number of bugs and has some significant improvements in its internal organization over the previous 0.3.1 ("Premature Optimizations 'r' Us") release. Version 0.4.1 ("Triumph of Hope Over Experience") defaults to generating a call graph colored by number of entries into each call center. There is now an option to annotate the graph edges with the triple of (cost center entries, ticks, allocations). Module names are also given in each cost center. The latest version has been tested on the profiling output of some moderately large programs, e.g., the profile produced by a "darcs get" of the entire ghc repository: $ darcs get http://darcs.haskell.org/ghc +RTS -px -RTS There is also better error reporting of parser errors and consistency checking of the internal graph data structure. If anyone comes across a parse failure or an assertion failure, please report it to the author. The "dot" program from the graphviz tools is required to render the output of prof2dot. Very large graphs, or graphs with extensive annotations, can exceed the capabilities of dot. Prof2dot is available from Hackage in the "development" category. -Greg

Hi Gregory,
Sounds fantastic. I'd love to see a single example of the resultant
.dot file, so I can figure out just how useful this might be to me.
Thanks
Neil
On Tue, Aug 5, 2008 at 8:50 PM, Gregory Wright
I am pleased to announce the release of prof2dot version 0.4.1, a graphical profiling tool for use with GHC.
The program is a filter that takes the profiling output generated by running a GHC-compiled program with the "+RTS -px -RTS" option and turns it into a dot file. (The "dot" format is a textual representation of a directed or undirected graph.) The dot file can rendered in any format supported by Graphviz's dot program, and the file itself can be post-processed or edited to adjust the layout.
The new release fixes a number of bugs and has some significant improvements in its internal organization over the previous 0.3.1 ("Premature Optimizations 'r' Us") release.
Version 0.4.1 ("Triumph of Hope Over Experience") defaults to generating a call graph colored by number of entries into each call center. There is now an option to annotate the graph edges with the triple of (cost center entries, ticks, allocations). Module names are also given in each cost center.
The latest version has been tested on the profiling output of some moderately large programs, e.g., the profile produced by a "darcs get" of the entire ghc repository:
$ darcs get http://darcs.haskell.org/ghc +RTS -px -RTS
There is also better error reporting of parser errors and consistency checking of the internal graph data structure. If anyone comes across a parse failure or an assertion failure, please report it to the author.
The "dot" program from the graphviz tools is required to render the output of prof2dot. Very large graphs, or graphs with extensive annotations, can exceed the capabilities of dot.
Prof2dot is available from Hackage in the "development" category.
-Greg _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Hi Neil, Here's the (compressed) dot file from using darcs to get the whole ghc repo. It was generated by # prof2dot darcs.prof > darcs.dot The structure of the file is lines defining the edges followed by lines defining the nodes, optionally followed by subgraph definitions that group the nodes into modules. If there is a format that would make post- processing easier, I can change it. -Greg On Aug 5, 2008, at 4:02 PM, Neil Mitchell wrote:
Hi Gregory,
Sounds fantastic. I'd love to see a single example of the resultant .dot file, so I can figure out just how useful this might be to me.
Thanks
Neil
On Tue, Aug 5, 2008 at 8:50 PM, Gregory Wright
wrote: I am pleased to announce the release of prof2dot version 0.4.1, a graphical profiling tool for use with GHC.
The program is a filter that takes the profiling output generated by running a GHC-compiled program with the "+RTS -px -RTS" option and turns it into a dot file. (The "dot" format is a textual representation of a directed or undirected graph.) The dot file can rendered in any format supported by Graphviz's dot program, and the file itself can be post-processed or edited to adjust the layout.
<snip>
Prof2dot is available from Hackage in the "development" category.
-Greg _______________________________________________

Sounds fantastic
I'm using 'prof2dot' on a ~3000 LOC project and it's working well. Visual
quality metrics like this and Haskell Program Coverage makes using Haskell
in the corporate world a little easier to pull off. Zero crash reports
helps too. ;-)
-Greg F
On Tue, Aug 5, 2008 at 1:02 PM, Neil Mitchell
Hi Gregory,
Sounds fantastic. I'd love to see a single example of the resultant .dot file, so I can figure out just how useful this might be to me.
Thanks
Neil
On Tue, Aug 5, 2008 at 8:50 PM, Gregory Wright
wrote: I am pleased to announce the release of prof2dot version 0.4.1, a graphical profiling tool for use with GHC.
The program is a filter that takes the profiling output generated by
running
a GHC-compiled program with the "+RTS -px -RTS" option and turns it into a dot file. (The "dot" format is a textual representation of a directed or undirected graph.) The dot file can rendered in any format supported by Graphviz's dot program, and the file itself can be post-processed or edited to adjust the layout.
The new release fixes a number of bugs and has some significant improvements in its internal organization over the previous 0.3.1 ("Premature Optimizations 'r' Us") release.
Version 0.4.1 ("Triumph of Hope Over Experience") defaults to generating a call graph colored by number of entries into each call center. There is now an option to annotate the graph edges with the triple of (cost center entries, ticks, allocations). Module names are also given in each cost center.
The latest version has been tested on the profiling output of some moderately large programs, e.g., the profile produced by a "darcs get" of the entire ghc repository:
$ darcs get http://darcs.haskell.org/ghc +RTS -px -RTS
There is also better error reporting of parser errors and consistency checking of the internal graph data structure. If anyone comes across a parse failure or an assertion failure, please report it to the author.
The "dot" program from the graphviz tools is required to render the output of prof2dot. Very large graphs, or graphs with extensive annotations, can exceed the capabilities of dot.
Prof2dot is available from Hackage in the "development" category.
-Greg _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
participants (3)
-
Greg Fitzgerald
-
Gregory Wright
-
Neil Mitchell