On 31/10/2007, Andreas Raab andreas.raab@gmx.de wrote:
Igor Stasenko wrote:
Look. A current multi-core architecture uses shared memory. So the logical way how we can utilize such architecture at maximum power is to build on top of it.
That's like saying: "Look. A current multi-core architecture uses x86 instructions. So the logical way to utilize it is to write assembler programs". It's neither logical nor true.
Any other (such as share nothing) introducing too much noise on such architectures.
And if that statement were true, then Erlang shouldn't be able to benefit from multiple cores. In fact, not even operating systems should be able because running processes in their own address spaces is a "share nothing" approach.
I don't saying that it shouldn't be able to benefit. I'm just like to say, that this haves a considerable cost (a noise). And my point is to select such model, which will have minimum noise for given architecture. (what is noise read below).
More importantly, you are missing a major point in the comparison: Programmer effectiveness. The biggest cost factor for any software is programmer hours. If you can get 80% of the efficiency by investing half the resources you have a powerful advantage already. If you put this together with added robustness in a modern 24/7 software-as-a-service environment, you got a winner. In this sense it may be true that these solutions "introduce noise" (I'm not really sure what you mean when saying this but whatever) but they make it more than up in the amount of time you spend actually solving the problem at hand.
By saying noise i saying that to perform a simple two integers sum we need (for instance) write first integer in file A, write second in file B, then run OS script which reads them, computes the sum and writes result in file C. Then you read from file C, converting result from text and finally got a result. That's what i call the noise :)
Cheers,
- Andreas