This ticket may be of interest: https://ghc.haskell.org/trac/ghc/ticket/9630
Deriving costs a lot and we just need someone to figure out what's going on. Edward Excerpts from Michael Sloan's message of 2016-03-29 15:23:50 -0700: > Great! Thanks for y'all putting effort towards performance. It really is > crucial > for developer productivity. > > In the particular case of haskell-src-exts, I found that removing many of > the > more complicated typeclasses from deriving (Data, Generics, etc) brought the > compilation time way down. IIRC it was pretty drastic, like 40 seconds vs 10 > seconds (that could be just the timing for that one types module though, I > don't recall). Could be valuable to investigate exactly what's going on > there. > > -Michael > > On Tue, Mar 29, 2016 at 2:00 PM, Ömer Sinan Ağacan <[email protected]> > wrote: > > > Hi all, > > > > Using Ben's timing patch [^1], Cabal, and a Haskell program to parse > > generated > > logs [^2], I generated some tables that show compile times of modules in > > hxt, > > haskell-src-exts, lens, and all of their dependencies: > > > > > > https://gist.githubusercontent.com/osa1/fd82335181a584679c9f3200b7b0a8a5/raw/5d46b0e7006c7ef9fae913f7d6932b74c83835f1/gistfile1.txt > > > > Some notes: > > > > - Modules and passes in modules are sorted. > > > > - At the end of the file you can see the cumulative numbers for the > > passes. In > > fact, that's a small table so I'm just going to paste it here: > > > > ======================Total====================== > > CodeGen 41.32% > > Simplifier 34.83% > > Renamer/typechecker 12.22% > > Desugar 2.11% > > CorePrep 1.90% > > Demand analysis 1.44% > > CoreTidy 1.35% > > Called arity analysis 1.10% > > Float inwards 0.96% > > Common sub-expression 0.87% > > Parser 0.75% > > SpecConstr 0.57% > > Specialise 0.30% > > Worker Wrapper binds 0.17% > > Liberate case 0.12% > > ByteCodeGen 0.00% > > Simplify 0.00% > > > > I don't know how to make use of this yet, but I thought ghc-devs may find > > it > > useful. > > > > As a next thing I'm hoping to add some more `withTiming` calls. The analyze > > program can handle nested `withTiming` calls and renders passes as a tree > > (GHC > > HEAD doesn't have nested `withTiming`s so we don't see it in the file > > above), > > so we can benchmark things in more details. I also want to experiment a > > little > > bit with different `force` parameters to `withTiming`. If anyone has any > > other > > ideas I can also try those. > > > > --- > > > > [^1]: https://phabricator.haskell.org/D1959 > > [^2]: https://github.com/osa1/analyze-ghc-timings > > _______________________________________________ > > ghc-devs mailing list > > [email protected] > > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > > _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
