Skip to content
Permalink
Browse files
Stripped out Mnesia, implemented local transactions
  • Loading branch information
whitfin committed Sep 9, 2016
1 parent ac3b071 commit bd41d54
Show file tree
Hide file tree
Showing 75 changed files with 1,127 additions and 1,646 deletions.
@@ -1,5 +1,7 @@
/_build
/_native
/bench
!/bench/cachex_bench.exs
/cover
/deps
/diff
@@ -1,49 +1,144 @@
one_hour = :timer.hours(1)
tomorrow = Cachex.Util.now() + (1000 * 60 * 60 * 24)

{ parsed, _argv, _errors } = OptionParser.parse(System.argv(), [
aliases: [ s: :state ],
strict: [ state: :boolean ]
])

Application.ensure_all_started(:cachex)

Cachex.start(:bench_cache)

Cachex.set(:bench_cache, "decr_test", 0)
Cachex.set(:bench_cache, "expire_at_test", "expire_at_value")
Cachex.set(:bench_cache, "expire_test", "expire_value")
Cachex.set(:bench_cache, "get_test", "get_value")
Cachex.set(:bench_cache, "gad_test", "gad_value")
Cachex.set(:bench_cache, "incr_test", 0)
Cachex.set(:bench_cache, "persist_test", 0)
Cachex.set(:bench_cache, "refresh_test", "refresh_value", ttl: one_hour)
Cachex.set(:bench_cache, "ttl_test", "ttl_value", ttl: one_hour)
Cachex.set(:bench_cache, "update_test", "update_value")

cache = if parsed[:with_state] do
Cachex.inspect!(:bench_cache, :state)
else
:bench_cache
end
defmodule CachexBench do
use Benchfella

@one_hour :timer.hours(1)
@tomorrow Cachex.Util.now() + (1000 * 60 * 60 * 24)

setup_all do
Application.ensure_all_started(:cachex)

Cachex.start(:bench_cache)

Cachex.set(:bench_cache, "decr_test", 0)
Cachex.set(:bench_cache, "expire_at_test", "expire_at_value")
Cachex.set(:bench_cache, "expire_test", "expire_value")
Cachex.set(:bench_cache, "get_test", "get_value")
Cachex.set(:bench_cache, "gad_test", "gad_value")
Cachex.set(:bench_cache, "incr_test", 0)
Cachex.set(:bench_cache, "persist_test", 0)
Cachex.set(:bench_cache, "refresh_test", "refresh_value", ttl: @one_hour)
Cachex.set(:bench_cache, "ttl_test", "ttl_value", ttl: @one_hour)
Cachex.set(:bench_cache, "update_test", "update_value")

{ parsed, _argv, _errors } = OptionParser.parse(System.argv(), [
aliases: [ s: :state, t: :transactions ],
strict: [ state: :boolean, transactions: :boolean ]
])

use_state = Keyword.get(parsed, :state, false)
use_trans = Keyword.get(parsed, :transactions, false)

if use_trans do
Cachex.State.update(:bench_cache, fn(state) ->
%Cachex.State{ state | transactions: true }
end)
end

cache = if use_state do
Cachex.inspect!(:bench_cache, :state)
else
:bench_cache
end

headr = """
Benching with state: #{use_state}
Benching with transactions: #{use_trans}
"""

IO.puts(headr)

{ :ok, cache }
end

bench "count" do
Cachex.count(bench_context)
:ok
end

bench "decr" do
Cachex.decr(bench_context, "decr_test")
:ok
end

bench "del" do
Cachex.del(bench_context, "del_test")
:ok
end

Benchee.run(%{ time: 5, warmup: 5, parallel: 1, print: %{ fast_warning: false, comparison: false } }, [
{ "count", fn -> Cachex.count(cache) end },
{ "decr", fn -> Cachex.decr(cache, "decr_test") end },
{ "del", fn -> Cachex.del(cache, "del_test") end },
{ "empty?", fn -> Cachex.empty?(cache) end },
{ "exists?", fn -> Cachex.exists?(cache, "exists_test") end },
{ "expire", fn -> Cachex.expire(cache, "expire_test", one_hour) end },
{ "expire_at", fn -> Cachex.expire_at(cache, "expire_at_test", tomorrow) end },
{ "get", fn -> Cachex.get(cache, "get_test") end },
{ "gad", fn -> Cachex.get_and_update(cache, "gad_test", &(&1)) end },
{ "incr", fn -> Cachex.incr(cache, "incr_test") end },
{ "keys", fn -> Cachex.keys(cache) end },
{ "persist", fn -> Cachex.persist(cache, "persist_test") end },
{ "refresh", fn -> Cachex.refresh(cache, "refresh_test") end },
{ "set", fn -> Cachex.set(cache, "set_test", "set_value") end },
{ "size", fn -> Cachex.size(cache) end },
{ "take", fn -> Cachex.take(cache, "take_test") end },
{ "ttl", fn -> Cachex.ttl(cache, "ttl_test") end },
{ "update", fn -> Cachex.update(cache, "update_test", "update_value") end }
])
bench "empty?" do
Cachex.empty?(bench_context)
:ok
end

bench "exists?" do
Cachex.exists?(bench_context, "exists_test")
:ok
end

bench "expire" do
Cachex.expire(bench_context, "expire_test", @one_hour)
:ok
end

bench "expire_at" do
Cachex.expire_at(bench_context, "expire_at_test", @tomorrow)
:ok
end

bench "get" do
Cachex.get(bench_context, "get_test")
:ok
end

bench "get_and_update" do
Cachex.get_and_update(bench_context, "gad_test", &(&1))
:ok
end

bench "incr" do
Cachex.incr(bench_context, "incr_test")
:ok
end

bench "keys" do
Cachex.keys(bench_context)
:ok
end

bench "persist" do
Cachex.persist(bench_context, "persist_test")
:ok
end

bench "refresh" do
Cachex.refresh(bench_context, "refresh_test")
:ok
end

bench "set" do
Cachex.set(bench_context, "set_test", "set_value")
:ok
end

bench "size" do
Cachex.size(bench_context)
:ok
end

bench "take" do
Cachex.take(bench_context, "take_test")
:ok
end

bench "ttl" do
Cachex.ttl(bench_context, "ttl_test")
:ok
end

bench "update" do
Cachex.update(bench_context, "update_test", "update_value")
:ok
end

end

0 comments on commit bd41d54

Please sign in to comment.