[GHC] #14152: Float exit paths out of recursive functions

GHC ghc-devs at haskell.org
Mon Sep 4 22:15:04 UTC 2017


#14152: Float exit paths out of recursive functions
-------------------------------------+-------------------------------------
        Reporter:  nomeata           |                Owner:  (none)
            Type:  task              |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:  JoinPoints
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #14137 #10918     |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by nomeata):

 Some of these measurements seem to be unreliably, in particular `time/VS`.

 Right now the whole branch, including inlining them back in the end,
 yields this:
 {{{
 Nofib allocations
 Benchmark name                  previous        change          now
 nofib/allocs/fannkuch-redux     870976696       - 99.99%        64700
 bytes
 nofib/allocs/k-nucleotide       1089567552      - 91.78%        89603872
 bytes

 Nofib runtimes
 Benchmark name                  previous        change          now
 nofib/time/CSD                  0.536           - 8.02%         0.493
 seconds
 nofib/time/cryptarithm1         0.529           - 4.73%         0.504
 seconds
 nofib/time/digits-of-e1         0.704           - 3.27%         0.681
 seconds
 nofib/time/fannkuch-redux       4.401           + 3.84%         4.57
 seconds
 nofib/time/integer              1.562           + 3.59%         1.618
 seconds
 nofib/time/k-nucleotide         5.426           - 6.28%         5.085
 seconds
 }}}
 The effect of just the inlining patch is
 {{{
 Nofib runtimes
 Benchmark name                  previous        change          now
 nofib/time/VS                   0.442           - 17.19%        0.366
 seconds
 nofib/time/digits-of-e1         0.704           - 3.27%         0.681
 seconds
 nofib/time/k-nucleotide         5.585           - 8.95%         5.085
 seconds
 }}}
 That the inlining patch has not changed over the version in comment:18, it
 was just rebased onto a slightly improved exitification patch, yet the
 runtime of `VS` now ''improves'' by 17% rather than regress by 16%. I draw
 this conclusion: There is some sensitivity to layout in `SD` that seems to
 be tickled by my changes in a non-systematic way. I might have a closer
 look at the regressions (and gains), but not sure if ICFP is the right
 time to do that.

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


More information about the ghc-tickets mailing list