[Haskell-cafe] Re: Re[2]: Parallel combinator, performance advice
Neil Mitchell
ndmitchell at gmail.com
Tue Apr 7 11:47:17 EDT 2009
Hi Bulat,
> btw, if all that you need is to limit amount of simultaneous
> System.Cmd.system calls, you may go from opposite side: wrap this call
> into semaphore:
>
> sem = unsafePerformIO$ newQSem numCapabilities
>
> mysystem = bracket_ (waitQSem sem) (signalQSem sem) . system
>
> and implement para as simple thread population:
>
> para = mapM_ forkIO
My main motivation is to limit the number of system calls, but it's
also useful from a user point of view if the system is doing a handful
of things at a time - it makes it easier to track what's going on.
I might try that tomorrow and see if it makes a difference to the
performance. While the majority of computation is in system calls,
quite a few of the threads open files etc, and having them all run in
parallel would end up with way too many open handles etc.
Thanks
Neil
More information about the Haskell-Cafe
mailing list