binaries vs lists

Bengt Kleberg Bengt.Kleberg@REDACTED
Tue Nov 11 14:24:28 CET 2003


Serge Aleynikov wrote:
> Hi!
> 
> I was wonderting if someone could contribute a thought to the following 
> question regarding efficiency.
> 

does it have to be efficient? have you found this to be a bottle neck?


> I have an Erlang TCP client that processes a binary stream which needs 
> to be post-processed by removing escaped bytes.  Let's say, that byte 
> 16$FF is escaped as <<16#FE, 16$01>>, and the 16#FF value is used as a 
> message separator.  The variable hex messages are within 512 bytes each.
> 

if i understood the 512 bytes statement correctly, it is ok to build the 
list on the stack, thus avoiding lists:reverse/1 in solution 1.


> What would be faster for Erlang:
> 
> 1. Declare a socket to return a *list* of bytes, and do something like:
> 
...deleted
> 
> 2. Alternatively, declare a socket to return *binaries*, and do:
> 
...deleted
> 
> Intuitively I think that the binary approach should work faster, but I 
> want to make sure that concat_binary is not expensive to do for every 
> byte in a stream.

have you tried to measure the performance of both? i do not know about 
your intuition, but mine is very unreliable.


bengt




More information about the erlang-questions mailing list