[erlang-questions] Efficiency of splitting binaries

Bjorn Gustavsson <>
Wed Oct 24 16:06:33 CEST 2007


Richard Andrews <> writes:

> I'm looking for advice on efficiently splitting a binary into smaller chunks.
> 
> I currently use iolist_size() to check the size of the input binary then
> recursively break off a chunk from the front with something like, eg.
> 
>     << ChunkData:30/binary-unit:8, RestData/binary >> = Data

unit:8 is default for binaries, so you don't have to specify it.

> ... then use RestData as input to the next cycle.
> 
> Is this sensible? Are there more efficient approaches?
> What effect does the binary-unit specifier have on performance? eg.
> 
>     ChunkData:1/binary-unit:240
> versus
>     ChunkData:240/binary

None if both the size and unit are known at compile-time.

If the size is variable, the size and unit values will be multiplied at run-time.
The run-time system may optimize common sizes such as 1 and 8.

I recommend that you don't change the unit size for binaries, but use the
default 8.

/Bjorn
-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list