[GHC] #11146: Manual eta expansion leads to orders of magnitude less allocations

GHC ghc-devs at haskell.org
Mon Nov 30 11:52:40 UTC 2015


#11146: Manual eta expansion leads to orders of magnitude less allocations
-------------------------------------+-------------------------------------
        Reporter:  niteria           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by nomeata):

 Let me be cheeky: Where is the bug in the report?

 It is not a secret that eta-expanded definitions tend to perform better,
 unless you make use of sharing somewhere. So maybe you did expect the
 compiler to make that transformation for you? But for that to happen, the
 compiler needs to be very sure that it is safe to do so (e.g. no loss of
 sharing), and in a modular compiler, that is often not possible.

 Do you have a (hopefully small and self-contained) bit of code where you
 think “duh, obviously the compiler should be a allowed to eta-expand
 here”, but it does not?

 Do things are better if all the relevant code is in one module, with an
 explicit export list that does not include any of the functions you’d like
 to see eta-expanded?

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


More information about the ghc-tickets mailing list