[GHC] #8173: GHC uses nub

GHC ghc-devs at haskell.org
Thu Sep 26 11:07:31 CEST 2013


#8173: GHC uses nub
-------------------------------------+-------------------------------------
        Reporter:  nh2               |            Owner:  leroux
            Type:  bug               |           Status:  new
        Priority:  normal            |        Milestone:
       Component:  Compiler          |          Version:  7.6.3
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  Compile-time      |       Difficulty:  Moderate (less
  performance bug                    |  than a day)
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+-------------------------------------

Comment (by leroux):

 Patch: attachment:ordNub-analysis (just an initial point to start at)

 Based on nofib-analyse attachment:ordNub-analysis​, it seems that it may
 be a good idea to selectively replace `nub`'s where it is applied over
 larger lists so that it cuts down on overhead.

 Snippet from nofib-analysis

 {{{

 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
            anna          +0.0%     +0.0%      0.11      0.12     +0.0%
            ansi          +0.0%     +0.0%      0.00      0.00     +0.0%
            atom          +0.0%     +0.0%     -0.9%     -0.4%     +0.0%
          awards          +0.0%     +0.0%      0.00      0.00     +0.0%
          banner          +0.0%     +0.0%      0.00      0.00     +0.0%
      bernouilli          +0.0%     +0.0%      0.17      0.18     +0.0%
    binary-trees          +0.0%     +0.0%     -7.3%     -8.8%     +0.0%
           boyer          +0.0%     +0.0%      0.04      0.05     +0.0%
          boyer2          +0.0%     +0.0%      0.00      0.00     +0.0%
            bspt          -0.1%     +0.0%      0.00      0.01     +0.0%
       cacheprof          +0.1%     +0.0%     -3.2%     -2.1%     +0.9%
        calendar          +0.0%     +0.0%      0.00      0.00     +0.0%
        cichelli          +0.0%     +0.0%      0.08      0.09     +0.0%
         circsim          +0.0%     +0.0%     +6.0%     +6.1%     +0.0%
        clausify          +0.0%     +0.0%      0.04      0.05     +0.0%
   comp_lab_zift          +0.0%     +0.0%      0.20     +5.0%     +0.0%
        compress          +0.0%     +0.0%      0.17      0.18     +0.0%
       compress2          +0.0%     +0.0%      0.16      0.17     +0.0%
     constraints          +0.0%     +0.0%     +1.7%     +2.0%     +0.0%
    cryptarithm1          +0.0%     +0.0%     -2.5%     -2.4%     +0.0%
    cryptarithm2          +0.0%     +0.0%      0.01      0.01     +0.0%
             cse          +0.0%     +0.0%      0.00      0.00     +0.0%
           eliza          +0.0%     +0.0%      0.00      0.00     +0.0%
           event          +0.0%     +0.0%      0.14      0.15     +0.0%
          exp3_8          -0.1%     +0.0%     +1.9%     +1.8%     +0.0%
          expert          +0.0%     +0.0%      0.00      0.00     +0.0%
  fannkuch-redux          -0.1%     +0.0%     +0.9%     +1.0%     +0.0%
           fasta          -0.1%     +0.0%     +2.7%     +4.5%     +0.0%
             fem          +0.0%     +0.0%      0.02      0.03     +0.0%
             fft          -0.1%     +0.0%      0.03      0.04     +0.0%
            fft2          +0.0%     +0.0%      0.05      0.05     +0.0%
        fibheaps          +0.1%     +0.0%      0.03      0.03     +0.0%
            fish          +0.0%     +0.0%      0.01      0.02     +0.0%
           fluid          +0.0%     +0.0%      0.01      0.01     +0.0%
          fulsom          +0.1%     +0.0%     +1.3%     +3.2%     -1.3%
          gamteb          +0.0%     +0.0%      0.05      0.05     +0.0%
             gcd          +0.0%     +0.0%      0.03      0.03     +0.0%
     gen_regexps          +0.0%     +0.0%      0.00      0.00     +0.0%
          genfft          -0.1%     +0.0%      0.03      0.03     +0.0%
              gg          +0.0%     +0.0%      0.00      0.02     +0.0%
            grep          +0.0%     +0.0%      0.00      0.00     +0.0%
          hidden          +0.0%     +0.0%     +2.5%     +1.9%     +0.0%
             hpg          +0.0%     +0.0%      0.10     +1.8%     +0.0%
             ida          +0.0%     +0.0%      0.08      0.08     +0.0%
           infer          +0.0%     +0.0%      0.06      0.07     +0.0%
         integer          +0.0%     +0.0%     +0.2%     +0.0%     +0.0%
       integrate          +0.0%     +0.0%      0.16      0.20     +0.0%
    k-nucleotide          -0.1%     +0.0%     +3.3%     +5.5%     +0.0%
           kahan          +0.0%     +0.0%      0.17      0.17     +0.0%
         knights          +0.0%     +0.0%      0.00      0.01     +0.0%
            lcss          +0.0%     +0.0%     -2.4%     -2.2%     +0.0%
            life          +0.0%     +0.0%     -5.2%     -8.5%     +0.0%
            lift          +0.0%     +0.0%      0.00      0.00     +0.0%
       listcompr          +0.0%     +0.0%      0.07      0.08     +0.0%
        listcopy          +0.0%     +0.0%      0.07      0.09     +0.0%
        maillist          +0.0%     -0.0%      0.05     -8.1%    +10.0%
          mandel          +0.0%     +0.0%      0.06      0.07     +0.0%
         mandel2          +0.0%     +0.0%      0.00      0.00     +0.0%
         minimax          +0.0%     +0.0%      0.00      0.00     +0.0%
         mkhprog          +0.0%     +0.0%      0.00      0.00     +0.0%
      multiplier          +0.0%     +0.0%      0.11      0.12     +0.0%
          n-body          +0.0%     +0.0%    +19.0%    +22.2%     +0.0%
        nucleic2          +0.0%     +0.0%      0.06      0.07     +0.0%
            para          +0.0%     +0.0%     -4.5%     -3.1%     +0.0%
       paraffins          +0.0%     +0.0%      0.11      0.12     +0.0%
          parser          +0.0%     +0.0%      0.03      0.03     +0.0%
         parstof          +0.0%     +0.0%      0.00      0.00     +0.0%
             pic          +0.0%     +0.0%      0.00      0.00     +0.0%
        pidigits          +0.0%     +0.0%     +2.3%     +1.7%     +0.0%
           power          +0.0%     +0.0%     +3.4%     +4.2%     +0.0%
          pretty          +0.0%     +0.0%      0.00      0.00     +0.0%
          primes          +0.0%     +0.0%      0.06      0.07     +0.0%
       primetest          +0.0%     +0.0%      0.11      0.11     +0.0%
          prolog          +0.0%     +0.0%      0.00      0.01     +0.0%
          puzzle          +0.0%     +0.0%      0.14      0.15     +0.0%
          queens          +0.0%     +0.0%      0.01      0.02     +0.0%
         reptile          +0.0%     +0.0%      0.00      0.01     +0.0%
 reverse-complem          +0.0%     +0.0%      0.10      0.17     +0.0%
         rewrite          +0.0%     +0.0%      0.01      0.02     +0.0%
            rfib          +0.0%     +0.0%      0.01      0.01     +0.0%
             rsa          +0.1%     +0.0%      0.02      0.03     +0.0%
             scc          +0.0%     +0.0%      0.00      0.00     +0.0%
           sched          +0.0%     +0.0%      0.01      0.02     +0.0%
             scs          +0.0%     +0.0%    -25.4%    -32.2%     +0.0%
          simple          +0.0%     +0.0%     +0.0%     -0.7%     +0.0%
           solid          +0.0%     +0.0%      0.16      0.16     +0.0%
         sorting          +0.0%     +0.0%      0.00      0.00     +0.0%
   spectral-norm          +0.0%     +0.0%     -0.4%     -0.1%     +0.0%
          sphere          +0.0%     +0.0%      0.04      0.05     +0.0%
          symalg          +0.0%     +0.0%      0.01      0.01     +0.0%
             tak          +0.0%     +0.0%      0.01      0.01     +0.0%
       transform          +0.0%     +0.0%     +2.5%     +1.8%     +0.0%
        treejoin          +0.0%     +0.0%      0.15      0.17     +0.0%
       typecheck          +0.1%     +0.0%     +1.0%     +1.9%     +0.0%
         veritas          +0.0%     +0.0%      0.00      0.01     +0.0%
            wang          +0.1%     +0.0%      0.13      0.14     +0.0%
       wave4main          +0.0%     +0.0%     +3.0%     +7.3%     +0.0%
    wheel-sieve1          +0.0%     +0.0%     -1.1%     -1.6%     +0.0%
    wheel-sieve2          +0.0%     +0.0%      0.21     +5.6%     +0.0%
            x2n1          -0.1%     +0.0%      0.00      0.01     +0.0%
 --------------------------------------------------------------------------------
             Min          -0.1%     -0.0%    -25.4%    -32.2%     -1.3%
             Max          +0.1%     +0.0%    +19.0%    +22.2%    +10.0%
  Geometric Mean          -0.0%     -0.0%     -0.3%     -0.1%     +0.1%

 }}}

 There's more work to be done!

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



More information about the ghc-tickets mailing list