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.