[erlang-questions] Erlang shows its slow face!

Edmond Begumisa <>
Mon Nov 15 16:02:50 CET 2010

Hello Richard,

I have a question...

> Erlang is a fine tool for jobs like this one.

Interesting... I would have never thought this. I would have instinctively  
reached for a language with mutable memory, thinking that this would make  
the most sense for combinatorial* work (I don't know this for fact, and I  
could be very wrong, but that's what instinct would tell me.) But then,  
I'm relatively new to Erlang.

* I've been calling this permutation but I don't know if that's accurate.

> There is little point in optimising a bad algorithm.

Well put. But say you have an 'ok' algorithm. Not the best, but not  
blatantly flawed either.

I think of optimisation as something you put on a version 2 to-do list.  
Optimisation to me means staring hard at code and trying to figure out  
ways to get it to perform better (faster, less memory, less CPU time,  
etc). This normally means re-writing code that's easy to follow into code  
that's no-so-easy to follow. Mind you, for Erlang, I don't look at  
parallelising as optimisation as others seem to. To me, it's just a  
building block made available and normally it can be applied without  
changing an algo too much (I'd say it's not used enough).

Of all the variations presented so far, IMO, Garcia's first is the easiest  
to follow (ignoring that obvious flaw with the repeated list:seq call). A  
non-mathematical mind like myself can see exactly what he's trying to do.  
The others (including the ones from Willem and Tony that I tried to  
parallelise), seem harder to follow. Maybe that's coz they are optimised  
versions. The authors could have stared long and hard.

So my question is: if version 1 isn't performing "reasonably" acceptably  
for Garcia's purpose, and version 1 isn't blatantly flawed. Isn't this a  
strong indicator that he's using the wrong tool?

- Edmond -

On Mon, 15 Nov 2010 12:29:49 +1100, Richard O'Keefe <>  

> On 14/11/2010, at 10:17 PM, Hynek Vychodil wrote:
>  Anyway Erlang is not
>> right tool for this job. You should use NIF if performance matter.
> Erlang is a fine tool for jobs like this one.
> In fact, given its support for large integers,
> it is about as good for combinatorial algorithms as
> Smalltalk, though perhaps not as good as Lisp.
> (But see LFE...)
> There is little point in optimising a bad algorithm.
> A fairly naive rewrite turns it from O(N**3) into O(N**2).
> What really counts here is how easy it is to spot the
> algorithmic problem and switch to a better algorithm.
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:

Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

More information about the erlang-questions mailing list