#4421: Compilation performance regression
---------------------------------+------------------------------------------
    Reporter:  simonmar          |        Owner:              
        Type:  bug               |       Status:  new         
    Priority:  highest           |    Milestone:  7.0.1       
   Component:  Compiler          |      Version:  6.12.3      
    Keywords:                    |     Testcase:              
   Blockedby:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Blocking:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
 This patch

 {{{
 Tue Oct 19 08:45:52 PDT 2010  Ian Lynagh <[email protected]>
   * seq the unfolding in setUnfoldingInfo
   Contrary to the comment, for the module in #4367 at least, it is a big
   improvement. Without it we get a huge spike of drag.
 }}}

 Had a big impact on compile times, we probably need to address the leak
 some other way.   HEAD before the patch, compiling Cabal with -O:

 {{{
   45,244,270,096 bytes allocated in the heap
    7,967,118,472 bytes copied during GC
      162,341,616 bytes maximum residency (40 sample(s))
       21,318,984 bytes maximum slop
              472 MB total memory in use (0 MB lost due to fragmentation)

   Generation 0: 85611 collections,     0 parallel, 25.94s, 25.95s elapsed
   Generation 1:    40 collections,     0 parallel, 10.13s, 10.14s elapsed

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   42.92s  ( 45.75s elapsed)
   GC    time   36.07s  ( 36.09s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time   78.99s  ( 81.84s elapsed)
 }}}

 and after the patch:

 {{{
   67,912,400,256 bytes allocated in the heap
   10,084,908,352 bytes copied during GC
       88,734,416 bytes maximum residency (67 sample(s))
       18,782,600 bytes maximum slop
              268 MB total memory in use (0 MB lost due to fragmentation)

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   57.62s  ( 60.52s elapsed)
   GC    time   47.92s  ( 47.96s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time  105.55s  (108.48s elapsed)
 }}}

 overall space usage is much better (268M vs. 472M), but allocations and
 total time are much worse.

 Results for 6.12.3:

 {{{
   26,404,281,056 bytes allocated in the heap
    6,533,229,296 bytes copied during GC
       91,037,368 bytes maximum residency (49 sample(s))
       17,657,552 bytes maximum slop
              271 MB total memory in use (4 MB lost due to fragmentation)

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   34.32s  ( 36.88s elapsed)
   GC    time   24.46s  ( 25.25s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time   58.78s  ( 62.13s elapsed)
 }}}

 and for STABLE (before the offending patch):

 {{{
   32,812,959,504 bytes allocated in the heap
    7,358,388,512 bytes copied during GC
      159,592,480 bytes maximum residency (39 sample(s))
       20,403,664 bytes maximum slop
              466 MB total memory in use (0 MB lost due to fragmentation)

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   38.59s  ( 41.45s elapsed)
   GC    time   30.72s  ( 30.74s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time   69.32s  ( 72.19s elapsed)
 }}}

 HEAD is worse than STABLE right now, probably due to the containers
 package changes.

 STABLE has still regressed relative to 6.12.3, though.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4421>
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