I am wondering if the Erlang OTP dict module is implemented as a hash table and in that case does it give the performance of such?
Average Case
Search: O(1 + n/k)
Insert: O(1)
Delete: O(1 + n/k)
Worst Case
Search: O(n)
Insert: O(1)
Delete: O(n)
Source: Wikipedia Hash Table
Because the dict module is implemented in Erlang itself using the built-in data types (tuples and lists), and is nondestructive, that is, every “update” actually creates a slightly rewritten new version of the previous dict, the time complexity can never be better than logarithmic (the implementation must use some kind of tree), but the details can vary with the implementation.
The current implementation (which has been around for many years) doesn’t actually scale well when the number of entries gets large. The author (Robert Virding) has recently been experimenting with other tree implementations such as 2-3-trees, and it is possible that the default implementation of the dict module will be changed in a future release. See http://erlang.org/pipermail/erlang-questions/2012-June/067311.html
If you’re interested in this sort of thing, you might want to read up more about pure functional data structures. This seems like a good starting point: http://en.wikipedia.org/wiki/Purely_functional (in particular the link to Okasaki’s thesis).