Jan-Willem Maessen wrote:

On Jan 10, 2006, at 4:26 AM, Simon Marlow wrote:

Christian Maeder wrote:

Bulat Ziganshin wrote:

CM> My old version is faster, because the version with makeStableName does
CM> very much GC.

CM>    MUT   time   27.28s  ( 28.91s elapsed)
CM>    GC    time  133.98s  (140.08s elapsed)

try to add infamous "+RTS -A10m" switch ;)

You saved my day, thank you Bulat!
Without that flag:
  MUT   time   24.30s  ( 24.76s elapsed)
  GC    time  131.25s  (140.01s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time  155.55s  (164.77s elapsed)
And with it:
  MUT   time   23.86s  ( 24.86s elapsed)
  GC    time   11.03s  ( 11.68s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time   34.89s  ( 36.54s elapsed)


The real problem seems to be that minor GCs are taking too long. Having said that, you can usually reduce GC overhead with large -A or -H options.


Is the full table of stable names being traversed at every minor GC? If so, it might be worth somehow segregating the nursery stable names. I bet this complicates management a bunch, though, since right now there's only one table to look things up in.

It's traversed, but not re-hashed. So it shouldn't be a bottleneck, unless the table is really huge. I agree that separating the gen 0 stable names into a separate table would be the right fix, though.

Cheers,
        Simon

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to