Things I Learned from ACCU 2010

Walter Bright newshound1 at digitalmars.com
Fri Apr 23 05:16:50 PDT 2010


bearophile wrote:
> Walter Bright:
> 
>> * Not all functional programming languages do concurrency well. Haskell and
>> OCaml in particular have severe fundamental problems with it such that
>> parallelizing your code makes it slower.<
> 
> What kind of problems have you seen in Haskell? I have read several articles
> about parallel code written in Haskell, and its situation doesn't look so
> bad.

It wasn't me, it was Russell Wider. He wrote a parallel pi calculating program 
in several languages, and then tried it with 1, 2, 4, and 8 cores. The more 
cores, the longer the Haskell program took. Charting the core use showed that 
only one core would run at a time.

Same with OCaml.

OCaml has a global interpreter lock which explains its behavior. Russell didn't 
know why the Haskell behavior was so bad. He allowed that it was possible he was 
misusing it.


>> Erlang and Clojure parallelize well, in that performance scales up
>> proportionally as cores are added.<
> 
> There is no way for this to be true in general. "Scalability" is a lot a
> characteristic of the algorithm (and the way its subparts exchange data), not
> the language. And if you care of performance Erlang is not the best: 
> http://proliferationofniches.blogspot.com/2008/07/multi-core-problem.html 
> Erlang is good for other things, like reliability.

With Erlang and Clojure and the parallel pi programming, doubling the number of 
cores doubled the speed. Graphing the core use showed they were utilizing the 
cores simultaneously.

Erlang was slow in general, but it *did* scale well with the number of cores.



More information about the Digitalmars-d mailing list