[erlang-questions] [eeps] EEP 9
Sun Mar 9 18:53:00 CET 2008
> In addition I would like to add functions to transform and filter
> binaries in a more efficient fashion than can be done by binary
> comprehensions, e.g. by a lookup table as suggested by Jay here:
> http://www.duomark.com/erlang/publications/acm2005.pdf (chapter
> especially interesting). This would mean some new built-in functions,
> binary:translate, binary:extract and possibly some more.
Just a caveat that I did these comparisons on R10B-5 and I have not
yet had a chance to rerun using R12B-1. The main speed up in
stream_xlate was the elimination of excess memory allocation by pre-
allocating the result binary and filling it in place, although the
fast table lookup also helped.
My understanding of how R12B binaries works using binary
comprehensions indicates that you may approach the speed of the BIF
now with a direct erlang expression, but I would still expect the BIF
to be 2-4x faster (rather than 70-200x, just a random guess on my part):
XlatedBinary = << if B >= $A andalso B =< $Z -> B - $A + $a; true ->
B end || B <= RawBinary>>.
I'm not sure how the result is allocated if there are any filter
clauses, I just assume without filter clauses the entire binary size
can be pre-computed and pre-allocated.
More information about the erlang-questions