[GHC] #10289: compiling huge HashSet hogs memory

GHC ghc-devs at haskell.org
Mon Apr 13 07:28:52 UTC 2015


#10289: compiling huge HashSet hogs memory
-------------------------------------+-------------------------------------
        Reporter:  zudov             |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Linux             |            Architecture:  x86_64
 Type of failure:  Runtime           |  (amd64)
  performance bug                    |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by simonpj):

 What happens if you don't have the call to `S.fromList`?  So your file
 looks like
 {{{
 data :: [Text]
 data = [ pack "foo", pack "bar", ...etc... ]
 }}}
 Another thing to try is to cut it down a lot, use `-dshow-passes` and
 compare `HashSet` with `HashMap`.  With luck you'll see that the latter is
 much larger on small examples too.  Then you can use `ddump-simpl` to see
 what the expanded code looks like.  Using `-ddump-inlinings` shows you
 what is being inlined.

 The fact that `HashSet` and `HashMap` differ here makes me think that this
 is to do with over-zealous inlining or rule-rewriting in `HashSet`.

 (`-ddump-rule-firings` to see which rewrite rules are firing.)

 Simon

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


More information about the ghc-tickets mailing list