Initial compile time benchmarks
Edward Z. Yang
ezyang at mit.edu
Tue Mar 29 22:29:43 UTC 2016
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 <omeragacan at gmail.com>
> 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
> > ghc-devs at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> >
More information about the ghc-devs
mailing list