[erlang-questions] Internal compiler atoms

Mikael Pettersson mikpelinux@REDACTED
Tue Aug 1 15:11:13 CEST 2017

Anthony Ramine writes:
 > > Le 28 juil. 2017 à 08:43, Albin Stigö <albin.stigo@REDACTED> a écrit :
 > > 
 > > 4. If you really DO need to create dynamic atoms for a quick and dirty
 > > hack, keep in mind that atoms with a common prefix ie. foo_1, foo_2,
 > > foo_3 etc will lead worse performance because of how erlang compares
 > > atoms (some Erlang guru correct me if I'm wrong but this used to be
 > > the case).
 > Wrong, atom comparison is always O(1).

Equality/inequality tests on atoms is O(1).  (That's the whole point of atoms,
and their analogues in LISP, i.e. "symbols".)

Comparisons (<, >, etc) is O(length(atom_to_list(Atom)), and with
common prefixes the cost is indeed higher.

C.f. erts/emulator/beam/utils.c:erts_cmp_atoms().

More information about the erlang-questions mailing list