[GHC] #8900: Strictness analysis regression

GHC ghc-devs at haskell.org
Sun Mar 16 16:57:31 UTC 2014


#8900: Strictness analysis regression
--------------------------------------------+------------------------------
        Reporter:  tibbe                    |            Owner:
            Type:  bug                      |           Status:  new
        Priority:  normal                   |        Milestone:
       Component:  Compiler                 |          Version:  7.8.1-rc2
      Resolution:                           |         Keywords:
Operating System:  MacOS X                  |     Architecture:  x86_64
 Type of failure:  Runtime performance bug  |  (amd64)
       Test Case:                           |       Difficulty:  Unknown
        Blocking:                           |       Blocked By:
                                            |  Related Tickets:
--------------------------------------------+------------------------------

Comment (by tibbe):

 Without the extra case expression, there's still a small difference. Using
 the best of 5 runs, here are the numbers:

 HEAD (46d05ba03d1491cade4a3fe33f0b8c404ad3c760):
 {{{
 $ ./HashMapInsert +RTS -s -A2G
    1,191,223,096 bytes allocated in the heap
            3,312 bytes copied during GC
           35,992 bytes maximum residency (1 sample(s))
           13,160 bytes maximum slop
             2081 MB total memory in use (0 MB lost due to fragmentation)

                                     Tot time (elapsed)  Avg pause  Max
 pause
   Gen  0         0 colls,     0 par    0.00s    0.00s     0.0000s
 0.0000s
   Gen  1         1 colls,     0 par    0.01s    0.01s     0.0060s
 0.0060s

   INIT    time    0.01s  (  0.02s elapsed)
   MUT     time    0.60s  (  0.89s elapsed)
   GC      time    0.01s  (  0.01s elapsed)
   EXIT    time    0.01s  (  0.01s elapsed)
   Total   time    0.62s  (  0.92s elapsed)

   %GC     time       0.9%  (0.6% elapsed)

   Alloc rate    1,991,359,179 bytes per MUT second

   Productivity  97.8% of total user, 66.0% of total elapsed
 }}}

 7.6.3:
 {{{
 $ ./HashMapInsert +RTS -s -A2G
    1,191,223,528 bytes allocated in the heap
            3,400 bytes copied during GC
           36,080 bytes maximum residency (1 sample(s))
           13,072 bytes maximum slop
             2081 MB total memory in use (0 MB lost due to fragmentation)

                                     Tot time (elapsed)  Avg pause  Max
 pause
   Gen  0         0 colls,     0 par    0.00s    0.00s     0.0000s
 0.0000s
   Gen  1         1 colls,     0 par    0.01s    0.01s     0.0057s
 0.0057s

   INIT    time    0.01s  (  0.02s elapsed)
   MUT     time    0.59s  (  0.86s elapsed)
   GC      time    0.01s  (  0.01s elapsed)
   EXIT    time    0.01s  (  0.01s elapsed)
   Total   time    0.61s  (  0.90s elapsed)

   %GC     time       0.9%  (0.6% elapsed)

   Alloc rate    2,033,686,150 bytes per MUT second

   Productivity  97.8% of total user, 66.4% of total elapsed
 }}}

 I've attached the Cmm for both HEAD and 7.6.3. They're not trivial to
 compare as in HEAD everything is in one function, `$wpoly_go_entry`, while
 in 7.6.3 it's split over two, `$wpoly_go_info` and `s2ZS_ret`.

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


More information about the ghc-tickets mailing list