[GHC] #7206: Implement cheap build

GHC cvs-ghc at haskell.org
Wed Feb 13 09:56:22 CET 2013


#7206: Implement cheap build
---------------------------------+------------------------------------------
    Reporter:  simonpj           |       Owner:  simonpj         
        Type:  bug               |      Status:  new             
    Priority:  normal            |   Milestone:  _|_             
   Component:  Compiler          |     Version:  7.4.2           
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------
Changes (by simonpj):

  * milestone:  7.8.1 => _|_


Comment:

 I tried this again, but got disappointing results:
 {{{
 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
            anna          -0.4%     +0.0%     -6.3%     -5.9%     +0.0%
            ansi          -0.2%     -0.6%      0.00      0.00     +0.0%
            atom          -0.1%     +0.0%     +2.0%     +2.0%     +0.0%
          awards          -0.4%     +0.0%      0.00      0.00     +0.0%
          banner          -0.1%     +0.0%      0.00      0.00     +0.0%
      bernouilli          -0.0%     +0.0%     -1.6%     -1.6%     +0.0%
    binary-trees          -0.2%     +0.0%     +4.4%     +4.4%     +0.0%
           boyer          -0.2%     +0.0%      0.07      0.07     +0.0%
          boyer2          -0.5%     +0.0%      0.01      0.01     +0.0%
            bspt          -0.3%     +0.0%      0.02      0.02     +0.0%
       cacheprof          -1.4%     +0.2%     -0.7%     -0.9%     -0.5%
        calendar          -0.2%     +0.0%      0.00      0.00     +0.0%
        cichelli          -0.4%     -0.0%      0.13      0.13     +0.0%
         circsim          -0.2%     +0.0%     -4.6%     -4.7%     +0.0%
        clausify          -0.2%     +0.0%      0.06      0.06     +0.0%
   comp_lab_zift          -0.2%     +0.0%     -2.6%     -2.6%     +0.0%
        compress          -0.3%     +0.0%     +3.0%     +3.7%     +0.0%
       compress2          -0.1%     +0.0%     +1.3%     +1.3%     +0.0%
     constraints          -0.2%     +0.0%     -3.9%     -3.9%     +0.0%
    cryptarithm1          -0.2%     +0.0%     +6.3%     +6.3%     +0.0%
    cryptarithm2          -0.5%     +0.0%      0.02      0.02     +0.0%
             cse          -0.5%     +0.0%      0.00      0.00     +0.0%
           eliza          -0.1%     +0.0%      0.00      0.00     +0.0%
           event          -0.2%     +0.0%     +2.9%     +2.9%     +0.0%
          exp3_8          -0.2%     +0.0%     -2.8%     -2.8%     +0.0%
          expert          -0.1%     +0.0%      0.00      0.00     +0.0%
  fannkuch-redux          -0.1%     +0.0%     -2.4%     -2.4%     +0.0%
           fasta          -0.2%     +0.0%     -0.4%     -0.4%     +0.0%
             fem          -0.0%     +0.0%      0.04      0.04     +0.0%
             fft          -0.1%     +0.0%      0.06      0.06     +0.0%
            fft2          -0.1%     +0.0%      0.10      0.10     +0.0%
        fibheaps          -0.2%     +0.0%      0.05      0.05     +0.0%
            fish          -0.1%     +2.7%      0.03      0.03     +0.0%
           fluid          -0.1%     +0.2%      0.01      0.01   +100.0%
          fulsom          -0.3%     +0.0%     -4.0%     -4.0%     +3.2%
          gamteb          -0.1%     -0.0%      0.07      0.07     +0.0%
             gcd          -0.1%     +0.0%      0.05      0.05     +0.0%
     gen_regexps          -0.1%     +0.0%      0.00      0.00     +0.0%
          genfft          -0.1%     +0.0%      0.06      0.06     +0.0%
              gg          -0.5%     +0.1%      0.02      0.02     +0.0%
            grep          -0.1%     +0.0%      0.00      0.00     +0.0%
          hidden          -0.1%     +0.0%     +4.2%     +4.2%     +0.0%
             hpg          -0.4%     -0.2%     +8.8%     +8.8%     +0.0%
             ida          -0.2%     +0.0%      0.14      0.14     +0.0%
           infer          -0.3%     +0.0%      0.13      0.13     +0.0%
         integer          -0.1%     +0.0%     +0.1%     +0.1%     +0.0%
       integrate          -0.1%     +0.0%    +18.2%    +18.2%     +0.0%
    k-nucleotide          -0.1%     +0.0%     -6.2%     -6.2%     +0.0%
           kahan          -0.1%     +0.0%     +1.1%     +1.1%     +0.0%
         knights          -0.2%     +1.4%      0.01      0.01     +0.0%
            lcss          -0.2%     +0.0%     -3.5%     -3.5%     +0.0%
            life          -0.2%     +0.0%     +2.5%     +2.5%     +0.0%
            lift          -0.3%     +0.0%      0.00      0.00     +0.0%
       listcompr          -0.2%     +0.0%      0.15      0.15     +0.0%
        listcopy          -0.2%     +0.0%      0.16      0.16     +0.0%
        maillist          -0.3%     +0.0%      0.10      0.11     -3.9%
          mandel          -0.0%     -0.0%      0.12      0.12     +0.0%
         mandel2          -0.5%     +0.0%      0.00      0.00     +0.0%
         minimax          -0.3%     +0.0%      0.00      0.00     +0.0%
         mkhprog          -0.2%     +0.0%      0.00      0.00     +0.0%
      multiplier          -0.3%     +0.0%     +1.8%     +1.8%     +0.0%
          n-body          -0.2%     +0.0%     -0.7%     -0.6%     +0.0%
        nucleic2          -0.1%     +0.0%      0.11      0.11     +0.0%
            para          -0.0%     +0.0%     +1.4%     +0.8%     +0.0%
       paraffins          -0.2%     +0.0%    +13.6%    +13.6%     +0.0%
          parser          -1.3%     +3.5%      0.05      0.05     +0.0%
         parstof          -0.3%     +0.0%      0.01      0.01     +0.0%
             pic          -0.1%     +0.1%      0.00      0.00     +0.0%
        pidigits          -0.1%     +0.0%     +1.5%     +1.9%     +0.0%
           power          -0.1%     +0.0%     -4.9%     -4.9%     +0.0%
          pretty          -0.1%     -0.0%      0.00      0.00     +0.0%
          primes          -0.1%     +0.0%      0.11      0.11     +0.0%
       primetest          -0.0%     +0.0%      0.14      0.14     +0.0%
          prolog          -0.2%     +0.1%      0.00      0.17     +0.0%
          puzzle          -0.3%     +0.0%     +1.7%     +1.7%     +0.0%
          queens          -0.2%     +0.0%      0.02      0.02     +0.0%
         reptile          -0.2%     -0.0%      0.02      0.02     +0.0%
 reverse-complem          -0.3%     +0.0%     +3.8%     +3.8%     +0.0%
         rewrite          -0.2%     +0.0%      0.02      0.02     +0.0%
            rfib          -0.1%     +0.0%      0.03      0.03     +0.0%
             rsa          -0.0%     +0.0%      0.03      0.12     +0.0%
             scc          -0.2%     +0.0%      0.00      0.00     +0.0%
           sched          -0.2%     +0.0%      0.03      0.03     +0.0%
             scs          -0.0%     +0.1%     -2.9%     -3.1%     +0.0%
          simple          -0.9%     +0.6%    -10.8%    -10.8%    +13.8%
           solid          -0.1%     +0.0%     +3.2%     +3.2%     +0.0%
         sorting          -0.1%     +0.0%      0.00      0.00     +0.0%
   spectral-norm          -0.2%     +0.0%     +0.1%     +0.1%     +0.0%
          sphere          -0.2%     +0.0%      0.08      0.08     +0.0%
          symalg          -0.2%     +0.0%      0.01      0.04     +0.0%
             tak          -0.2%     +0.0%      0.02      0.02     +0.0%
       transform          -0.2%     +0.0%     -0.6%     -0.6%     +0.0%
        treejoin          -0.2%     +0.0%     +0.0%     -0.7%     +0.0%
       typecheck          -0.2%     -0.0%     +0.0%     +0.0%     +0.0%
         veritas          +0.7%     +0.0%      0.00      0.00     +0.0%
            wang          -0.1%     +0.0%     -5.5%     -5.5%     +0.0%
       wave4main          -0.2%     +0.0%     -2.4%     -2.4%     +0.0%
    wheel-sieve1          -0.1%     +0.0%     -0.5%     -0.5%     +0.0%
    wheel-sieve2          -0.1%     +0.0%     -6.4%     -6.4%     +0.0%
            x2n1          -0.2%     +0.0%      0.00      0.00     +0.0%
 --------------------------------------------------------------------------------
             Min          -1.4%     -0.6%    -10.8%    -10.8%     -3.9%
             Max          +0.7%     +3.5%    +18.2%    +18.2%   +100.0%
  Geometric Mean          -0.2%     +0.1%     +0.1%     +0.1%     +0.8%
 }}}
 On investigation it seemed that although it was good to fuse away the
 intermediate ''lists'', we were duplicating the individual `Int`s or
 `Char`s that would otherwise have been shared, and this pushes up
 allocation.  So we often lose a bit and seldom win much.

 So I'm parking this again.  I attach the patches I used.

 Simon

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



More information about the ghc-tickets mailing list