Packages
riptide
0.2.0
0.5.2
0.5.1
0.5.0-beta9
0.5.0-beta8
0.5.0-beta7
0.5.0-beta6
0.5.0-beta5
0.5.0-beta4
0.5.0-beta3
0.5.0-beta2
0.5.0-beta11
0.5.0-beta10
0.5.0-beta
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0-bd63a38
0.2.79
0.2.78
0.2.74
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A data first framework for building realtime applications
Current section
Files
Jump to
Current section
Files
lib/riptide/store/benchmark.ex
defmodule Riptide.Store.Benchmark do
require Logger
def run(store, opts) do
store.init(opts)
range_count = 100_000
range = range_count..(range_count * 2)
time("Write #{range_count} values", fn ->
Stream.map(range, fn item ->
Riptide.Mutation.merge(["large", inspect(item)], %{
"key" => item,
"created" => :os.system_time(:millisecond)
})
end)
|> Riptide.Mutation.chunk(1000)
|> Enum.each(fn mut -> Riptide.Store.mutation(mut, store, opts) end)
end)
read_count = 10000
time("Read #{read_count} consecutive values", fn ->
Riptide.Store.query(
%{"large" => %{limit: read_count}},
store,
opts
)
end)
time("Read #{read_count} random values", fn ->
Riptide.Store.query(
range
|> Enum.take_random(read_count)
|> Enum.reduce(%{}, fn item, collect ->
Dynamic.put(collect, ["large", inspect(item)], %{limit: 10})
end),
store,
opts
)
end)
end
def time(name, fun) do
Logger.info("Starting #{name}")
now = :os.system_time(:millisecond)
fun.()
result = :os.system_time(:millisecond) - now
Logger.info(name <> ": " <> inspect(result) <> "ms")
end
end