Skip to content

Commit bd41d54

Browse files
committed
Stripped out Mnesia, implemented local transactions
1 parent ac3b071 commit bd41d54

75 files changed

Lines changed: 1127 additions & 1646 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
/_build
22
/_native
3+
/bench
4+
!/bench/cachex_bench.exs
35
/cover
46
/deps
57
/diff

bench/cachex_bench.exs

Lines changed: 143 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,144 @@
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
2968

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

Comments
 (0)