[erlang-questions] A couple of design questions
Fri Mar 27 11:22:31 CET 2009
mats cronqvist wrote:
> Oldtimers avoid the process dict because it used to be slow.
> "Real" functional programmers avoid both ets and the dict
> for religious reasons. AFAIK, there's no real reason to
> avoid the process dict in favor of ets.
I agree, sort of. I've argued before that the process
dictionary is better than its reputation suggests. (:
There are some different tradeoffs, though:
- No GC on ets data, but data in the process dict will
be subject to GC. Good or bad depending on how you
look at it.
- Objects in the process dict will be included in a
crash report, while objects in ets will simply go
away silently. Good or bad depending on your needs.
- No copying when accessing the PD, while ETS accesses
always copy (except large binaries, of course).
The fact that the PD is GC:d will to some degree cancel
out this advantage.
- No lock contention when accessing the PD. Not sure
exactly how this looks when other processes try to
peek at your PD, but please don't use that for anything
but debugging. (:
In Steve's case, I guess there are no significant
disadvantages in using the PD over ETS.
CTO, Erlang Training & Consulting Ltd
More information about the erlang-questions