Peter Verswyvelen wrote:
Hi all,
I did some experiments with concurrent Haskell, and unfortunately I
couldn't get my code run faster when using more cores, actually it ran
a bit slower.
Now I noticed after profiling that about 70% of the time my program
was performing garbage collection (I had lists of 50000 tiny objects
that got recreated 100 times per second).
If I understood it correctly, the current garbage collector of GHC is
single threaded, which really hinders SMP
Any plans on improving this or workarounds?
Parallel or not, if you can figure out a way to make your program
require less GC work, it will go faster.
The current GC requires all Haskell threads to be halted while it does
its work. I understand there is a new GC under development that uses
multiple cores [i.e., a GC pass now takes less time]. However, it still
required all Haskell threads to be halted while it runs. (It's just that
it takes less time to run now.)
Either way, if you can somehow figure out how to do less GC, you'll win.
Notice that sometimes just doing work in a different order can
significantly reduce GC load.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe