Benchmarking lexical scan during the downsweep for the ImplicitQualifiedImport proposal

Matthew Pickering matthewtpickering at gmail.com
Mon Aug 29 09:08:21 UTC 2022


1. You want to test this in the context of recompilation, that is
where the cost of downsweep is most prominent. Ie, compile all the
modules normally once and then test how long it takes to recompile.
There is already a test in tree which does this
(MultiLayerModulesRecomp).

2. You can build GHC using `--make` mode with an invocation something like..

 $GHC -O -hidir $out -odir $out -i$dir -Icompiler
-I_perf/stage1/compiler/build/ -i_perf/stage1/compiler/build/ GHC
-XNoImplicitPrelude -XNoPolyKinds -O

3. The way to extract timing information is to use the `+RTS -s` option.

Matt


On Sun, Aug 28, 2022 at 7:55 PM Tristan Cacqueray <tdecacqu at redhat.com> wrote:
>
>
> Hello all,
>
> In the context of https://github.com/ghc-proposals/ghc-proposals/pull/500,
> I am looking for a strategy to measure the impact of resolving modules
> dependencies using a lexical scan during the downsweep phase.
>
> For example, in this branch: https://gitlab.haskell.org/TristanCacqueray/ghc/-/tree/make-lexical-analysis
> I've added a tokenizer pass in the GHC.Driver.Make.getPreprocessedImports function,
> and using `/usr/bin/time -o /dev/stdout -v _build/stage1/bin/ghc compiler/GHC/Tc/TyCl.hs 2> /dev/null`
> I measure:
>
>   LexicalAnalysis found 91 qualified name, and lasted: 150msec
>   Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.72
>   Maximum resident set size (kbytes): 142396
>
> Using a clean build I get:
>
>   Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.68
>   Maximum resident set size (kbytes): 140012
>
>
> Now my question is, how would you measure the time and space cost of
> such change. For example, what profiling tool would you recommend and
> how can I test a modified ghc to build ghc itself?
>
> Thanks in advance,
> -Tristan
> _______________________________________________
> 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