summaryrefslogtreecommitdiff
path: root/test/samples/update_counter.exs
blob: 6310c575341ecb8523e89ef0ccdcaa2ece2d2ba9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
:ets.new(:limiter_bench, [:public, :named_table])
:ets.new(:limiter_bench_concurrent, [:public, :named_table, {:read_concurrency, false}, {:write_concurrency, true}])
atomics = :atomics.new(1, [])

update_counter = 
  %{
    "ets:update_counter" => fn ->
      :ets.update_counter(:limiter_bench, "bench", {2, 1}, {"bench", 0})
    end,
    "ets:update_counter concurrent" => fn ->
      :ets.update_counter(:limiter_bench, "bench", {2, 1}, {"bench", 0})
    end,
    "atomics:add_get" => fn ->
      :atomics.add_get(atomics, 1, 1)
    end,
  }

Benchee.run(update_counter, parallel: 1)
Benchee.run(update_counter, parallel: System.schedulers_online())