[GHC] #4965: 60% performance regression in continuation-heavy code between 6.12 and 7

GHC cvs-ghc at haskell.org
Tue Feb 22 18:23:56 CET 2011


#4965: 60% performance regression in continuation-heavy code between 6.12 and 7
---------------------------------+------------------------------------------
    Reporter:  bos               |        Owner:                         
        Type:  bug               |       Status:  new                    
    Priority:  normal            |    Milestone:                         
   Component:  Compiler          |      Version:  7.0.1                  
    Keywords:                    |     Testcase:                         
   Blockedby:                    |   Difficulty:                         
          Os:  Unknown/Multiple  |     Blocking:                         
Architecture:  Unknown/Multiple  |      Failure:  Runtime performance bug
---------------------------------+------------------------------------------

Comment(by simonpj):

 OK well I managed to get it built ok.  Here are my numbers (on a 64-bit
 Linux machine). With 6.12.3:
 {{{
 ./AesonParse 1000 json-data/twitter100.json +RTS -s
 json-data/twitter100.json:
   1000 good, 3.456034s
    4,198,375,016 bytes allocated in the heap
      498,417,024 bytes copied during GC
          275,208 bytes maximum residency (334 sample(s))
          162,648 bytes maximum slop
                2 MB total memory in use (0 MB lost due to fragmentation)

   Generation 0:  7005 collections,     0 parallel,  0.93s,  0.94s elapsed
   Generation 1:   334 collections,     0 parallel,  0.13s,  0.18s elapsed

   INIT  time    0.01s  (  0.00s elapsed)
   MUT   time    2.34s  (  2.33s elapsed)
   GC    time    1.06s  (  1.13s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time    3.41s  (  3.46s elapsed)

   %GC time      31.1%  (32.7% elapsed)

   Alloc rate    1,786,542,560 bytes per MUT second

   Productivity  68.6% of total user, 67.7% of total elapsed
 }}}
 With HEAD
 {{{
 ./AesonParse 1000 json-data/twitter100.json +RTS -s
 json-data/twitter100.json:
   1000 good, 3.594115s
    4,033,775,472 bytes allocated in the heap
      504,649,504 bytes copied during GC
          260,344 bytes maximum residency (334 sample(s))
          156,400 bytes maximum slop
                2 MB total memory in use (0 MB lost due to fragmentation)

   Generation 0:  7037 collections,     0 parallel,  0.90s,  0.90s elapsed
   Generation 1:   334 collections,     0 parallel,  0.14s,  0.14s elapsed

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time    2.55s  (  2.55s elapsed)
   GC    time    1.04s  (  1.04s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time    3.60s  (  3.60s elapsed)

   %GC time      28.9%  (28.9% elapsed)

   Alloc rate    1,578,226,103 bytes per MUT second

   Productivity  71.0% of total user, 71.0% of total elapsed
 }}}
 So HEAD allocates a bit less, but consistently takes a bit longer (3.6s
 against 3.45s).  At the moment.  I don't think I can unpick where that
 time is going; it it was in bigger allocation then ticky would show, but
 it isn't.  So I'm not sure how to proceed here.

 Simon

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



More information about the Glasgow-haskell-bugs mailing list