
On Wed, Dec 21, 2005 at 10:33:12AM +0000, Joel Reymont wrote:
My guess is that without tweaks the threads allocate more, which increases the pressure on GC. Try to analyze the GC stats with and without tweaks.
This should not be the case. The amount of work is the same regardless and the issues seem to be with _timing_. Passing in trace that writes to the screen with a lock sort of slows things down.
I was unclear. Of course, every thread does the same amount of work, but "without tweaks" the threads working together can manage to increase the amount of memory that is required at a given point in time. Take an example - you have a computation that requires 1MB of memory. If you run it sequentially 1000 times, you still need only 1MB of memory. But if you span 1000 threads simultaneously and run the computation it each of them, you may need even 1000 * 1MB of memory. This may cause problems with cache, swaping, etc. The other question is how GHC's garbage collection performance scale in such situations? Best regards Tomasz -- I am searching for a programmer who is good at least in some of [Haskell, ML, C++, Linux, FreeBSD, math] for work in Warsaw, Poland