[Haskell-cafe] derivation of mapP, a parallel, lazy map
Dan Zwell
dzwell at gmail.com
Mon Feb 25 22:49:34 EST 2008
Felipe Lessa wrote:
> On Sun, Feb 24, 2008 at 1:45 AM, Dan Zwell <dzwell at gmail.com> wrote:
>> If anybody is curious to see this, the page is
>> http://zwell.net/content/haskell.html#mapP . I would appreciate any
>> criticism, too. I hope somebody finds this helpful.
>
> Have you seen parBuffer? I'd also recommend looking at its source.
> http://haskell.org/ghc/docs/latest/html/libraries/parallel/Control-Parallel-Strategies.html#v%3AparBuffer
>
Thanks. parBuffer looks more elegant than what I wrote, though it seems
that it performs slightly slower--I assume that pattern matching (x:[])
versus (x:y:[]) (etc.) is faster than recursing and keeping a count of
the number of elements left to spark. I tested this with
mapP f xs = parBuffer 2 rwhnf $ map f xs
(though I had to change the test from doing a few slow operations to
doing many fast operations, to see any difference.)
Clearly using parBuffer would be a win on machines with lots of CPUs,
but is there any reason that I would want to use it instead of the mapP
I've already defined?
Dan
More information about the Haskell-Cafe
mailing list