As far as I understand Erlang performance is reached by horizontal scheduling (i'm not sure i used exact word) by which i mean that if you have lack of performance you can buy new hardware nodes (servers) and without any changes in code and even recompiling you can distribute workload.

That is very good approach in situation when processor stopped getting faster but become more parallelized and cheaper.

GC is just a mater of implementation. In presence of resources implement good GC algorithm offers no difficulty.

All languages have their place

sure. and many people doubt of place of D. It would be nice if such good lang will find it's place.

On 2011-12-18 12:19:43 +0000, Alex Rønne Petersen said:

On 18-12-2011 12:45, Somedude wrote:
Le 18/12/2011 12:13, Ruslan Mullakhmetov a écrit :
I do not want to make a flame over D vs C++11.

...
Once again, i'm not trying to make a holywar. I'm D lover myself. But a
lot of people do not consider this benefits of D enough to shift to it
as for my opinion and experience.



These people will not change their mind whatever you throw at them. For
them, it's a matter of religion, not a matter of comparison. We
shouldn't bother pleasing such or such group of people.

BTW, your comparison with Erlang misses one crucial point: performance.
A part for some very specific applications for which it is designed,
Erlang's general performance is simply not comparable to that of D. A
lot of D's complex set of features is geared towards increasing runtime
performance. Erlang just doesn't compare.

On the other hand, Erlang's runtime is built around message-passing. I *extremely strongly doubt* that you can get similar performance out of message-passing in D, for two reasons:

1) The Erlang runtime is written in highly optimized C.
2) Erlang uses better garbage collection strategies than D.

On point 1: Of course, you can write a message-passing implementation in D that's basically just glorified C, but that defeats the point of using D in the first place IMHO.

On point 2: This is highly unlikely to change. It seems (from reading the NG's past discussions) that there is virtually no interest from the core devs of D to do The Right Thing to make precise garbage collection possible, sadly (and neither to make thread-local GC possible, and other such techniques (Erlang runs a separate GC per Erlang process, very successfully)).

Yes, Erlang's emulator is not good in raw performance. It was never geared for this (that's why it has easy interfacing with C for performance-sensitive code). However, things like HiPE improve the situation.

All languages have their place, and Erlang is still going strong in the world of massive concurrency. I doubt D will be able to challenge this until its GC issues have been resolved (and even then, D is nowhere near as convenient, lacking fault tolerance and location transparency; sometimes these traits are *much* more desirable than raw performance when dealing with concurrency on such high levels).

- Alex


--
BR, Ruslan Mullakhmetov

Reply via email to