#4007: Look again at eta expansion during gentle simplification
---------------------------------+------------------------------------------
    Reporter:  simonmar          |        Owner:                         
        Type:  bug               |       Status:  new                    
    Priority:  normal            |    Milestone:  6.14.1                 
   Component:  Compiler          |      Version:  6.13                   
    Keywords:                    |   Difficulty:                         
          Os:  Unknown/Multiple  |     Testcase:                         
Architecture:  Unknown/Multiple  |      Failure:  Runtime performance bug
       Patch:  0                 |  
---------------------------------+------------------------------------------
 Today I noticed that `sequence_ . replicate` was not being optimised in
 the HEAD, and Simon and I tracked it down to `sequence_` not being
 inlined, which was a result of it not being eta-expanded early.  This
 patch reverted to the 6.12.x behaviour:

 {{{
 Fri Apr 23 05:48:53 PDT 2010  Simon Marlow <[email protected]>
   * reinstate eta-expansion during SimplGently, to fix inlining of
 sequence_
 }}}

 We might want to revisit this before 6.14.1.

 The effects on nofib follow:

 {{{
 
--------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed
 
--------------------------------------------------------------------------------
            anna          -0.7%     -0.0%      0.14      0.14
            ansi          -0.8%     +0.2%      0.00      0.00
            atom          -0.9%     +0.0%     +0.6%     +1.4%
          awards          -0.8%     +0.1%      0.00      0.00
          banner          -0.7%     -0.1%      0.00      0.00
      bernouilli          -0.8%     +0.0%     +0.0%     -0.3%
          boyer2          -0.7%     -0.0%      0.01      0.01
            bspt          -0.7%     -0.0%      0.01      0.01
       cacheprof          -0.8%     -0.1%     +0.7%     +6.2%
        calendar          -0.9%     +0.0%      0.00      0.00
        cichelli          -0.7%     -0.0%      0.12      0.13
         circsim          -0.9%     +0.0%     -0.1%     -0.2%
        clausify          -0.8%     +0.0%      0.05      0.05
   comp_lab_zift          -0.7%     -0.0%     -0.5%     +0.0%
        compress          -0.7%     -0.0%     -0.8%     -1.0%
       compress2          -0.8%     -0.0%    +11.0%    +12.5%
     constraints          -0.9%     +0.0%     +0.8%     +1.0%
    cryptarithm1          -0.8%     -0.0%     +0.5%     +0.1%
    cryptarithm2          -0.8%     -0.0%      0.01      0.02
             cse          -0.8%     -0.2%      0.00      0.00
           eliza          -0.7%     -0.0%      0.00      0.00
           event          -0.7%     -0.0%     -3.9%     -0.3%
          exp3_8          -0.9%     +0.0%      0.16      0.17
          expert          -0.9%     -0.1%      0.00      0.00
             fem          -0.7%     -0.0%      0.03      0.04
             fft          -0.7%     -0.0%      0.04      0.05
            fft2          -0.7%     -0.0%      0.09      0.10
        fibheaps          -1.1%     +0.0%      0.04      0.04
            fish          -0.7%     -0.1%      0.02      0.02
           fluid          -0.7%     +4.7%      0.01      0.01
          fulsom          -0.8%     -0.0%     +0.9%     -0.2%
          gamteb          -0.7%     -0.0%      0.12      0.13
             gcd          -0.8%     -0.0%      0.03      0.03
     gen_regexps          -0.8%     -0.1%      0.00      0.00
          genfft          -0.7%     -0.0%      0.05      0.05
              gg          -0.8%     -0.0%      0.01      0.02
            grep          -0.9%     -0.1%      0.00      0.00
          hidden          -0.8%  (stdout)  (stdout)  (stdout)
             hpg          -0.9%     -1.4%     +0.6%     +2.6%
             ida          -0.7%     +0.0%      0.14      0.15
           infer          -0.7%     -0.0%      0.06      0.07
         integer          -0.9%     +0.0%     -0.6%     -0.3%
       integrate          -0.9%     -0.0%     +2.5%     +3.0%
         knights          -0.9%     -0.0%      0.01      0.01
            lcss          -0.9%     +0.0%     +0.3%     +0.9%
            life          -0.8%     -0.0%     -0.4%     +0.0%
            lift          -0.7%     -0.0%      0.00      0.00
       listcompr          -0.7%     -0.0%      0.14      0.15
        listcopy          -0.7%     -0.0%      0.15      0.15
        maillist          -0.8%     -0.4%      0.08      0.12
          mandel          -0.7%     +0.0%      0.16      0.16
         mandel2          -0.8%     -0.0%      0.01      0.01
         minimax          -0.7%     -0.0%      0.00      0.00
         mkhprog          -0.9%     -0.3%      0.00      0.00
      multiplier          -0.8%     -0.0%      0.15      0.16
        nucleic2          -0.7%     -0.0%      0.10      0.10
            para          -0.9%     -0.0%     -4.8%     -4.5%
       paraffins          -0.9%     -0.0%      0.12      0.14
          parser          -0.7%     -0.0%      0.04      0.05
         parstof          -0.6%     -0.0%      0.00      0.01
             pic          -0.7%     -0.0%      0.01      0.01
           power          -0.8%     -0.0%     +1.1%     +1.1%
          pretty          -0.8%     -0.0%      0.00      0.00
          primes          -0.9%     +0.0%      0.07      0.08
       primetest          -0.8%     +0.0%     -0.5%     +0.3%
          prolog          -0.7%     -0.1%      0.00      0.00
          puzzle          -0.7%     -0.0%     -0.5%     +3.7%
          queens          -0.9%     -0.0%      0.02      0.03
         reptile          -0.7%     +0.7%      0.02      0.02
         rewrite          -0.8%     -0.0%      0.02      0.02
            rfib          -0.9%     +0.4%      0.06      0.06
             rsa          -0.8%     -0.0%      0.12      0.12
             scc          -0.8%     -0.2%      0.00      0.00
           sched          -0.7%     -0.0%      0.02      0.03
             scs          -0.8%     +0.7%     -1.0%     -1.0%
          simple          -0.7%     -0.0%     +2.0%     +1.7%
           solid          -0.7%     -0.0%      0.20      0.21
         sorting          -0.8%     -0.1%      0.00      0.00
          sphere          -0.9%     -7.8%      0.14      0.14
          symalg          -0.7%     +0.1%      0.04      0.04
             tak          -0.9%     +2.6%      0.02      0.02
       transform          -0.7%     +0.0%     +2.0%     +2.1%
        treejoin          -0.9%     -0.0%     -2.7%     +0.2%
       typecheck          -0.7%     -0.0%     +0.4%     -0.2%
         veritas          -0.6%     +0.0%      0.00      0.00
            wang          -0.7%     +0.0%      0.12      0.14
       wave4main          -0.7%     +0.0%     +2.5%     +2.2%
    wheel-sieve1          -0.9%     +0.0%     -2.2%     -2.7%
    wheel-sieve2          -0.9%     +0.0%     +4.9%     +3.1%
            x2n1          -0.8%     -0.0%      0.03      0.03
 
--------------------------------------------------------------------------------
             Min          -1.1%     -7.8%     -4.8%     -4.5%
             Max          -0.6%     +4.7%    +11.0%    +12.5%
  Geometric Mean          -0.8%     -0.0%     +0.4%     +1.1%
 }}}

 compress2 might be worth a look.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4007>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to