DiffArray Performance

Simon Marlow simonmar at microsoft.com
Thu Nov 6 09:55:15 EST 2003

> > The problem was whether DiffArrays should be thread-safe in the
> > Concurrent Haskell sense, which means protecting access to 
> the DiffArray
> > with an MVar.
> Can you give some estimate of the cost of using an MVar in this way?

It depends a lot on whether the cost of using the MVar is dwarfed by
other costs in the relevant operations.  For example, Handles are
protected by MVars but this isn't a big deal because you don't usually
do lots of tiny operations on a Handle (well, it bites you if you try to
implement 'cat' using hGetChar/hPutChar).

Compared to an IORef, modifying an MVar is many times more expensive.
takeMVar/putMVar are implemented as out-of-line calls, but they could be
partially inlined to cover the cases where they don't need to block if
efficiency is really critical.

> Could some cheaper mechanism be provided for the special case 
> of a mutex?

My guess is that it wouldn't be worth having a special mutex type
instead of (MVar ()).


More information about the Glasgow-haskell-users mailing list