Performance of Erlang data structures
Raimo Niskanen
raimo@REDACTED
Tue Jan 25 13:55:56 CET 2005
You can have a look at:
http://otp.ericsson.se:8000/product/info/otp_unix/doc/efficiency_guide/part_frame.html
but there might be other documents that more directly answers your
question.
Regarding the basic types, lists are chains of cons cells and there
are no reverse pointers, nor pointers to the end of the list. This
means that append, search, insert, indexing, etc. are O(n), while consing
or matching from the head is O(1).
Tuples are fixed size arrays, but when replacing an element in
a tuple, a copy of the whole tuple except for one element
has to be made. This means that search, replace, copy is O(n) while
indexing is O(1).
Often you want to use higher abstraction data organisation, e.g
ets, gb_trees, gb_sets. Look at their manpages. They might at
least contain a hint of what basic algorithms are used,
tree or hash or such, and that might give you indirect
information about their performance.
sebastian@REDACTED (Sebastian Bello) writes:
> Hi,
>
> is there a document regarding performance of Erlang data structures? For example, what is the performance (order, o(n), constant, etc) of the insertion in a list, the lookup, etc. Just to know what data structures to use when performance is an issue.
> Thanks,
> Sebastian-
>
--
/ Raimo Niskanen, Erlang/OTP, Ericsson AB
More information about the erlang-questions
mailing list