[GHC] #1600: Optimisation: CPR the results of IO

GHC ghc-devs at haskell.org
Mon Nov 18 15:49:14 UTC 2013


#1600: Optimisation: CPR the results of IO
-------------------------------------+-------------------------------------
        Reporter:  simonmar          |            Owner:
            Type:  task              |           Status:  new
        Priority:  lowest            |        Milestone:  7.6.2
       Component:  Compiler          |          Version:  6.6.1
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  Runtime           |       Difficulty:  Moderate (less
  performance bug                    |  than a day)
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+-------------------------------------

Comment (by nomeata):

 Looking at examples for code where nested CPR could, would and should
 work, I found this ticket. At first glance, this looks good. But isn’t it
 the case that a usage like
 {{{
 main = do
     _ <- facIO 1000
 }}}
 will not do any calculation (besides counting down from 1000, and
 allocating a lot of thunks)?

 This shows that the transformation wanted here cannot be obtained without
 either offering two variants of the function (would inflate code size), or
 requires an analysis that calculating the factorial ''even if not needed''
 will still always be better than allocating the thunks.

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


More information about the ghc-tickets mailing list