[GHC] #16233: HIE file generation is inefficient

GHC ghc-devs at haskell.org
Fri Jan 25 01:32:35 UTC 2019


#16233: HIE file generation is inefficient
-------------------------------------+-------------------------------------
           Reporter:  harpocrates    |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.7
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Generating HIE files eats up a lot of memory and takes a long time. There
 are at least two big parts to this:

   * Every expression in the AST is desugared via `deSugarExpr` for the
 purpose of extracting a type. GHC ends up doing the same work multiple
 times for the same nodes. Ex: in order to desugar `HsApp _ fun arg`, GHC
 desugars both `fun` and `arg`, yet the HIE code doesn't cache that (so it
 ends up desugaring `fun` and `arg` at least once more).

   * There is a lot of stuff being written into these HIE files, making
 them quite big (even after compressing/deduplicating type information).
 One data point: the largest HIE file at time of writing is `Parser.hie`,
 which is 7.2MB, compared to just 58K for `Parser.hi`Q Writing large files
 is naturally going to take up memory and be slow.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16233>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list