|
1 | | -one_hour = :timer.hours(1) |
2 | | -tomorrow = Cachex.Util.now() + (1000 * 60 * 60 * 24) |
3 | | - |
4 | | -{ parsed, _argv, _errors } = OptionParser.parse(System.argv(), [ |
5 | | - aliases: [ s: :state ], |
6 | | - strict: [ state: :boolean ] |
7 | | -]) |
8 | | - |
9 | | -Application.ensure_all_started(:cachex) |
10 | | - |
11 | | -Cachex.start(:bench_cache) |
12 | | - |
13 | | -Cachex.set(:bench_cache, "decr_test", 0) |
14 | | -Cachex.set(:bench_cache, "expire_at_test", "expire_at_value") |
15 | | -Cachex.set(:bench_cache, "expire_test", "expire_value") |
16 | | -Cachex.set(:bench_cache, "get_test", "get_value") |
17 | | -Cachex.set(:bench_cache, "gad_test", "gad_value") |
18 | | -Cachex.set(:bench_cache, "incr_test", 0) |
19 | | -Cachex.set(:bench_cache, "persist_test", 0) |
20 | | -Cachex.set(:bench_cache, "refresh_test", "refresh_value", ttl: one_hour) |
21 | | -Cachex.set(:bench_cache, "ttl_test", "ttl_value", ttl: one_hour) |
22 | | -Cachex.set(:bench_cache, "update_test", "update_value") |
23 | | - |
24 | | -cache = if parsed[:with_state] do |
25 | | - Cachex.inspect!(:bench_cache, :state) |
26 | | -else |
27 | | - :bench_cache |
28 | | -end |
| 1 | +defmodule CachexBench do |
| 2 | + use Benchfella |
| 3 | + |
| 4 | + @one_hour :timer.hours(1) |
| 5 | + @tomorrow Cachex.Util.now() + (1000 * 60 * 60 * 24) |
| 6 | + |
| 7 | + setup_all do |
| 8 | + Application.ensure_all_started(:cachex) |
| 9 | + |
| 10 | + Cachex.start(:bench_cache) |
| 11 | + |
| 12 | + Cachex.set(:bench_cache, "decr_test", 0) |
| 13 | + Cachex.set(:bench_cache, "expire_at_test", "expire_at_value") |
| 14 | + Cachex.set(:bench_cache, "expire_test", "expire_value") |
| 15 | + Cachex.set(:bench_cache, "get_test", "get_value") |
| 16 | + Cachex.set(:bench_cache, "gad_test", "gad_value") |
| 17 | + Cachex.set(:bench_cache, "incr_test", 0) |
| 18 | + Cachex.set(:bench_cache, "persist_test", 0) |
| 19 | + Cachex.set(:bench_cache, "refresh_test", "refresh_value", ttl: @one_hour) |
| 20 | + Cachex.set(:bench_cache, "ttl_test", "ttl_value", ttl: @one_hour) |
| 21 | + Cachex.set(:bench_cache, "update_test", "update_value") |
| 22 | + |
| 23 | + { parsed, _argv, _errors } = OptionParser.parse(System.argv(), [ |
| 24 | + aliases: [ s: :state, t: :transactions ], |
| 25 | + strict: [ state: :boolean, transactions: :boolean ] |
| 26 | + ]) |
| 27 | + |
| 28 | + use_state = Keyword.get(parsed, :state, false) |
| 29 | + use_trans = Keyword.get(parsed, :transactions, false) |
| 30 | + |
| 31 | + if use_trans do |
| 32 | + Cachex.State.update(:bench_cache, fn(state) -> |
| 33 | + %Cachex.State{ state | transactions: true } |
| 34 | + end) |
| 35 | + end |
| 36 | + |
| 37 | + cache = if use_state do |
| 38 | + Cachex.inspect!(:bench_cache, :state) |
| 39 | + else |
| 40 | + :bench_cache |
| 41 | + end |
| 42 | + |
| 43 | + headr = """ |
| 44 | +
|
| 45 | + Benching with state: #{use_state} |
| 46 | + Benching with transactions: #{use_trans} |
| 47 | + """ |
| 48 | + |
| 49 | + IO.puts(headr) |
| 50 | + |
| 51 | + { :ok, cache } |
| 52 | + end |
| 53 | + |
| 54 | + bench "count" do |
| 55 | + Cachex.count(bench_context) |
| 56 | + :ok |
| 57 | + end |
| 58 | + |
| 59 | + bench "decr" do |
| 60 | + Cachex.decr(bench_context, "decr_test") |
| 61 | + :ok |
| 62 | + end |
| 63 | + |
| 64 | + bench "del" do |
| 65 | + Cachex.del(bench_context, "del_test") |
| 66 | + :ok |
| 67 | + end |
29 | 68 |
|
30 | | -Benchee.run(%{ time: 5, warmup: 5, parallel: 1, print: %{ fast_warning: false, comparison: false } }, [ |
31 | | - { "count", fn -> Cachex.count(cache) end }, |
32 | | - { "decr", fn -> Cachex.decr(cache, "decr_test") end }, |
33 | | - { "del", fn -> Cachex.del(cache, "del_test") end }, |
34 | | - { "empty?", fn -> Cachex.empty?(cache) end }, |
35 | | - { "exists?", fn -> Cachex.exists?(cache, "exists_test") end }, |
36 | | - { "expire", fn -> Cachex.expire(cache, "expire_test", one_hour) end }, |
37 | | - { "expire_at", fn -> Cachex.expire_at(cache, "expire_at_test", tomorrow) end }, |
38 | | - { "get", fn -> Cachex.get(cache, "get_test") end }, |
39 | | - { "gad", fn -> Cachex.get_and_update(cache, "gad_test", &(&1)) end }, |
40 | | - { "incr", fn -> Cachex.incr(cache, "incr_test") end }, |
41 | | - { "keys", fn -> Cachex.keys(cache) end }, |
42 | | - { "persist", fn -> Cachex.persist(cache, "persist_test") end }, |
43 | | - { "refresh", fn -> Cachex.refresh(cache, "refresh_test") end }, |
44 | | - { "set", fn -> Cachex.set(cache, "set_test", "set_value") end }, |
45 | | - { "size", fn -> Cachex.size(cache) end }, |
46 | | - { "take", fn -> Cachex.take(cache, "take_test") end }, |
47 | | - { "ttl", fn -> Cachex.ttl(cache, "ttl_test") end }, |
48 | | - { "update", fn -> Cachex.update(cache, "update_test", "update_value") end } |
49 | | -]) |
| 69 | + bench "empty?" do |
| 70 | + Cachex.empty?(bench_context) |
| 71 | + :ok |
| 72 | + end |
| 73 | + |
| 74 | + bench "exists?" do |
| 75 | + Cachex.exists?(bench_context, "exists_test") |
| 76 | + :ok |
| 77 | + end |
| 78 | + |
| 79 | + bench "expire" do |
| 80 | + Cachex.expire(bench_context, "expire_test", @one_hour) |
| 81 | + :ok |
| 82 | + end |
| 83 | + |
| 84 | + bench "expire_at" do |
| 85 | + Cachex.expire_at(bench_context, "expire_at_test", @tomorrow) |
| 86 | + :ok |
| 87 | + end |
| 88 | + |
| 89 | + bench "get" do |
| 90 | + Cachex.get(bench_context, "get_test") |
| 91 | + :ok |
| 92 | + end |
| 93 | + |
| 94 | + bench "get_and_update" do |
| 95 | + Cachex.get_and_update(bench_context, "gad_test", &(&1)) |
| 96 | + :ok |
| 97 | + end |
| 98 | + |
| 99 | + bench "incr" do |
| 100 | + Cachex.incr(bench_context, "incr_test") |
| 101 | + :ok |
| 102 | + end |
| 103 | + |
| 104 | + bench "keys" do |
| 105 | + Cachex.keys(bench_context) |
| 106 | + :ok |
| 107 | + end |
| 108 | + |
| 109 | + bench "persist" do |
| 110 | + Cachex.persist(bench_context, "persist_test") |
| 111 | + :ok |
| 112 | + end |
| 113 | + |
| 114 | + bench "refresh" do |
| 115 | + Cachex.refresh(bench_context, "refresh_test") |
| 116 | + :ok |
| 117 | + end |
| 118 | + |
| 119 | + bench "set" do |
| 120 | + Cachex.set(bench_context, "set_test", "set_value") |
| 121 | + :ok |
| 122 | + end |
| 123 | + |
| 124 | + bench "size" do |
| 125 | + Cachex.size(bench_context) |
| 126 | + :ok |
| 127 | + end |
| 128 | + |
| 129 | + bench "take" do |
| 130 | + Cachex.take(bench_context, "take_test") |
| 131 | + :ok |
| 132 | + end |
| 133 | + |
| 134 | + bench "ttl" do |
| 135 | + Cachex.ttl(bench_context, "ttl_test") |
| 136 | + :ok |
| 137 | + end |
| 138 | + |
| 139 | + bench "update" do |
| 140 | + Cachex.update(bench_context, "update_test", "update_value") |
| 141 | + :ok |
| 142 | + end |
| 143 | + |
| 144 | +end |
0 commit comments