nofib comparisons between 7.0.4, 7.4.2, 7.6.1, and 7.6.2

Johan Tibell johan.tibell at gmail.com
Wed Feb 6 00:48:13 CET 2013


I've now added the shootout programs that could be added without modifying
the programs itself. I described why some programs weren't added in
nofib/shootout/README.

For the curious, here's the change in these benchmarks from 7.0.4 to 7.6.2:

--------------------------------------------------------------------------------
        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
   binary-trees          +2.6%     -0.6%     -2.8%     -2.8%    -22.3%
 fannkuch-redux          +1.4%+11514445.     +0.2%     +0.2%     +0.0%
         n-body          +3.8%     +0.0%     +4.4%     +4.4%     +0.0%
       pidigits          +2.2%     -6.9%     -1.7%     -1.2%    -20.0%
  spectral-norm          +2.1%    -61.3%    -54.8%    -54.8%     +0.0%
--------------------------------------------------------------------------------
            Min          +1.4%    -61.3%    -54.8%    -54.8%    -22.3%
            Max          +3.8%+11514445.     +4.4%     +4.4%     +0.0%
 Geometric Mean          +2.4%   +737.6%    -14.7%    -14.6%     -9.1%

Some interesting differences here (and some really good ones)!

I looked into fannkuch-redux (nofib/shootout/fannkuch-redux) and confirmed
the allocation difference:

7.0.4:

          93,680 bytes allocated in the heap
           2,880 bytes copied during GC
          43,784 bytes maximum residency (1 sample(s))
          21,752 bytes maximum slop
               1 MB total memory in use (0 MB lost due to fragmentation)

  Generation 0:     0 collections,     0 parallel,  0.00s,  0.00s elapsed
  Generation 1:     1 collections,     0 parallel,  0.00s,  0.00s elapsed

  INIT  time    0.00s  (  0.00s elapsed)
  MUT   time   38.53s  ( 38.56s elapsed)
  GC    time    0.00s  (  0.00s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time   38.53s  ( 38.56s elapsed)

  %GC time       0.0%  (0.0% elapsed)

  Alloc rate    2,431 bytes per MUT second

  Productivity 100.0% of total user, 99.9% of total elapsed

7.6.2:

  10,538,113,312 bytes allocated in the heap
         819,304 bytes copied during GC
          44,416 bytes maximum residency (2 sample(s))
          25,216 bytes maximum slop
               1 MB total memory in use (0 MB lost due to fragmentation)

                                    Tot time (elapsed)  Avg pause  Max pause
  Gen  0     20177 colls,     0 par    0.06s    0.05s     0.0000s    0.0000s
  Gen  1         2 colls,     0 par    0.00s    0.00s     0.0001s    0.0002s

  INIT    time    0.00s  (  0.00s elapsed)
  MUT     time   38.76s  ( 38.82s elapsed)
  GC      time    0.06s  (  0.05s elapsed)
  EXIT    time    0.00s  (  0.00s elapsed)
  Total   time   38.83s  ( 38.88s elapsed)

  %GC     time       0.2%  (0.1% elapsed)

  Alloc rate    271,864,153 bytes per MUT second

  Productivity  99.8% of total user, 99.7% of total elapsed

We're going from a essentially non-allocation program to an allocating one.

Aside: I didn't use -fllvm, which is what the shootout normally uses.

-- Johan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130205/2f45b725/attachment.htm>


More information about the ghc-devs mailing list