How to profile a Haskell program
From HaskellWiki
(Difference between revisions)
m |
|||
| Line 9: | Line 9: | ||
== Setting things up == | == Setting things up == | ||
| - | + | === Enable profiling on libraries === | |
| + | |||
| + | For example, my script uses HaXmL, which uses a library called polyparse: | ||
cd polyparse | cd polyparse | ||
runhaskell Setup.hs configure --enable-library-profiling | runhaskell Setup.hs configure --enable-library-profiling | ||
| Line 19: | Line 21: | ||
runhaskell Setup.hs configure --enable-library-profiling | runhaskell Setup.hs configure --enable-library-profiling | ||
runhaskell Setup.hs build | runhaskell Setup.hs build | ||
| - | sudo runhaskell Setup.hs install | + | sudo runhaskell Setup.hs install |
| + | |||
| + | === Enable profiling on your stuff === | ||
| + | |||
| + | Note that I assume you are using Cabal. If not, see [[How to write a Haskell program]]. It's super easy, and you'll be happy you did it. | ||
Revision as of 11:57, 20 March 2007
- Just jotting down my notes whilst profiling one of my helper scripts. It would be great if the community could transform this into a tutorial
Contents |
1 The case study
I have a script that converts from an XML format to some pickled data structures via Data.Binary. The XML part is generated by HaXml's DtdToHaskell. On a 54M XML file, the thing swaps like crazy and takes several hours. I would like to improve the situation.
2 Setting things up
2.1 Enable profiling on libraries
For example, my script uses HaXmL, which uses a library called polyparse:
cd polyparse runhaskell Setup.hs configure --enable-library-profiling runhaskell Setup.hs build sudo runhaskell Setup.hs install cd ..
cd HaXml runhaskell Setup.hs configure --enable-library-profiling runhaskell Setup.hs build sudo runhaskell Setup.hs install
2.2 Enable profiling on your stuff
Note that I assume you are using Cabal. If not, see How to write a Haskell program. It's super easy, and you'll be happy you did it.
