ETS table with only counters

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Wed Nov 25 11:33:19 CET 2020


On Tue, Nov 24, 2020 at 8:33 PM Frank Muller <frank.muller.erl@REDACTED>
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201125/9289d95e/attachment.htm>


More information about the erlang-questions mailing list