Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Haskell: Debugging Long Compilation Times on Stack Projects

I'm currently using Stack to build a project, which totals about 80 modules and 13,000 lines of code. Currently, compilation takes about 3 minutes for a minor change in my types files, which is unacceptable -- it prevents me from rapidly testing my code via stack ghci. It also significantly slows down a number of things: for instance, pair programming with peers or consulting with experts.

I would like to be able to figure out why compilation is taking so long, and what I can do to speed it up. Is there some way to profile compilation times?

Additionally, how can I tell whether it is stack or ghc that is slow?

I know about setting -O0, though this does not seem to help compilation times. I also know that TemplateHaskell and Typeclass Resolution can take a while -- is there any way I can get better resolution on how long these are taking?

Note: i have seen Speed up compilation in GHC, but that was from 2013, and hdevtools currently does not work on my setup.

like image 943
Timothy Chu Avatar asked Feb 13 '16 01:02

Timothy Chu


1 Answers

In case this question is still relevant, you could try this:

stack ghci --fast --no-build --ghc-options="-fbyte-code"

IIRC using this got me the quickest results with stack ghci.

If this doesn't help enough, you could look in the direction of --ghc-options="-dshow-passes". I myself am also looking in this direction currently to try to speed up a build/ghci-reload.

like image 107
Wizek Avatar answered Sep 23 '22 10:09

Wizek