[erlang-questions] [enhancement] string:split/2
Richard O'Keefe
ok@REDACTED
Fri Oct 10 01:21:44 CEST 2008
On 9 Oct 2008, at 7:43 pm, Edwin Fine wrote:
> I'm assuming you are providing this code as an "executable
> requirements document." I was rather hoping that it could be
> implemented as a BIF.
> I'll have to study your code below so I can learn some "fast and
> fancy" Erlang!
Well, no. I was providing the code as a first draft of what
could be dropped into string.erl. I see no reason why it should
be a BIF, if by that you mean something implemented in C.
If the performance of unjoining should be a bottleneck in some
program, after getting over my astonishment I would recommend
unrolling. For example,
> unjoin0([C|Cs]) ->
> [[C] | unjoin0(Cs)];
> unjoin0([]) ->
> [].
would become
unjoin0([A,B,C,D|S]) -> [[A],[B],[C],[D] | unjoin0(S);
unjoin0([A,B,C]) -> [[A],[B],[C]];
unjoin0([A,B]) -> [[A],[B]];
unjoin0([A]) -> [[A]];
unjoin0([]) -> [].
That plus HiPE can often do surprisingly well.
But this is something to do AFTER measurement!
More information about the erlang-questions
mailing list