Re: ETS table with only counters

Jesper Louis Andersen <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAGrdgiUnGOHKz8M1u=LQARXYCg7-VuRYxvhaRzdXpKpYcvAZmA@mail.gmail.com>
On Tue, Nov 24, 2020 at 8:33 PM Frank Muller <[email protected]>
wrote:

> Question: how should i set my table?
> 1. both concurrency set to true:
> 2. only read concurrency set to true:
> 3. only write concurrency set to true:
>
> Please explain why?
>
>
4. Use the 'counters' module.

The caveat is that your counter set is of fixed arity and you have a way to
look up an index. If both are true, they are likely to beat ETS in a
measurement benchmark shootout because less locks will be taken on them.
I'd measure your results.

The answer depends on your read/write patterns for solutions 1-3. And the
CPU architecture setup, mostly in core count. It's very likely you don't
get a full answer by thinking about how the locking structures are built in
isolation. General rules of thumb: If mostly read, go with 2. If mostly
written, go with 3. If you flip i.e., have a short window in which you
mostly write and then mostly read for a while, then another write-block,
..., then go with 1.

-- 
J.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.