diff options
Diffstat (limited to 'test/samples')
-rw-r--r-- | test/samples/multi_limiter.exs | 69 | ||||
-rw-r--r-- | test/samples/update_counter.exs | 33 |
2 files changed, 56 insertions, 46 deletions
diff --git a/test/samples/multi_limiter.exs b/test/samples/multi_limiter.exs index f56cb6c..0936773 100644 --- a/test/samples/multi_limiter.exs +++ b/test/samples/multi_limiter.exs @@ -1,49 +1,54 @@ infinite = 1_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000 -parallel = case Integer.parse(System.get_env("PARALLEL", "")) do - {int, _} -> int - _ -> System.schedulers_online()/2 -end -multi_count = case Integer.parse(System.get_env("MULTI", "")) do - {int, _} -> int - _ -> parallel -end +parallel = + case Integer.parse(System.get_env("PARALLEL", "")) do + {int, _} -> int + _ -> System.schedulers_online() / 2 + end + +multi_count = + case Integer.parse(System.get_env("MULTI", "")) do + {int, _} -> int + _ -> parallel + end -names = fn(prefix) -> +names = fn prefix -> for i <- 1..multi_count do Module.concat(MultiConcurrentLimiterBenchmark, "#{prefix}#{i}") end end +bench_unique = + for name <- names.("u") do + ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, name, []}) + name + end -bench_unique = for name <- names.("u") do - ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, name, []}) - name -end - -IO.inspect(bench_unique) - -bench_atomics = for name <- names.("a") do - ConcurrentLimiter.new(name, infinite, 0, backend: :atomics) - name -end +bench_atomics = + for name <- names.("a") do + ConcurrentLimiter.new(name, infinite, 0, backend: :atomics) + name + end -bench_shared = for name <- names.("s") do - ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, ConcurrentLimiterTest, []}) - name -end +bench_shared = + for name <- names.("s") do + ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, ConcurrentLimiterTest, []}) + name + end rw = [{:read_concurrency, true}, {:write_concurrency, true}] -bench_unique_rw = for name <- names.("u_rw") do - ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, name, rw}) - name -end +bench_unique_rw = + for name <- names.("u_rw") do + ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, name, rw}) + name + end -bench_shared_rw = for name <- names.("s_rw") do - ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, ConcurrentLimiterTestRW, rw}) - name -end +bench_shared_rw = + for name <- names.("s_rw") do + ConcurrentLimiter.new(name, infinite, 0, backend: {:ets, ConcurrentLimiterTestRW, rw}) + name + end multiple = %{ "ConcurrentLimiter.limit/2 unique ets" => fn -> diff --git a/test/samples/update_counter.exs b/test/samples/update_counter.exs index 6310c57..1d8e837 100644 --- a/test/samples/update_counter.exs +++ b/test/samples/update_counter.exs @@ -1,20 +1,25 @@ :ets.new(:limiter_bench, [:public, :named_table]) -:ets.new(:limiter_bench_concurrent, [:public, :named_table, {:read_concurrency, false}, {:write_concurrency, true}]) + +: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, - } +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()) - |