[erlang-questions] foldl vs foldr and ++
Richard O'Keefe
ok@REDACTED
Fri May 11 04:02:41 CEST 2012
On 11/05/2012, at 7:30 AM, Robert Virding wrote:
> These say more about it:
>
> http://www.erlang.org/doc/efficiency_guide/myths.html#tail_recursive
Four key points from that:
the relative costs of tail and body recursion have *changed*,
they are *different* on different machines,
don't assume but measure, and
you should probably do whatever is easiest to get your
program working correctly rather than micro-optimising.
I was just looking at some student Java code where he'd
read a line of code as a String,
reversed it so he could process it from right to left,
and reversed it again for printing.
Since there is no String.reverse() -- yet -- in Java,
he had written something like this:
StringBuilder b = new StringBuilder(s.length());
for (int i = 0; i < s.length(); i++)
b = b.append(s.substring(i, 1).toCharArray()[0]);
return b.toString();
This can be written more efficiently, but it's best of all
just not to reverse the string in the first place. Keep
the code at a level where you can see what's going on well
enough to spot the really _big_ efficiency gains.
More information about the erlang-questions
mailing list