Since atoms are not garbage collected it is not a good
idea to create atoms dynamically in a system that will run
continously. Sooner or later the limit 1048576 for number of
atoms will be reached with a emulator crash as result. In
addition to the bad memory consumption characteristics the
function is also quite expensive to execute.
length/1
is an operation on lists and each time the
length is tested the entire list must be traversed. Since
length is implemented in C it is quite efficient anyway but it
still has linear characteristics. The size/1 function which
can be applied on tuples and binaries is for example much more
efficient since it only reads a size field in the internal
data structure.
setelement/3
Compared with element/2 that is very efficient and independent of the tuple size
setelement/3 is an expensive operation for large tuples
(>50 elements) since it implies that all fields must be copied
to a new tuple. Therefore it is not recommended to use setelement in recursions
involving large tuples.
split_binary/2
Depending on the situation it is in most cases more
efficient to split a binary through matching instead of calling
the split_binary/2 function. DO