build(): benchmarks

This commit is contained in:
Ryan Schmukler 2017-04-14 15:20:22 -04:00
parent 63e9b87456
commit bf6da9d94f
11 changed files with 81 additions and 4 deletions

49
bench/rox_bench.exs Normal file
View File

@ -0,0 +1,49 @@
defmodule RoxBench do
use Benchfella
@sample_record %{name: "Bob", age: 38, favorite_color: "Blue", gender: :male, is_likeable: false, pets: [%{name: "Woof", species: :dog}]}
setup_all do
:ok =
Application.ensure_started(:faker)
{:ok, db, cfs} =
Rox.open("./bench.rocksdb", [create_if_missing: true, auto_create_column_families: true], ["a", "b", "c"])
{:ok, %{db: db, cfs: cfs, default_cf: cfs["a"]}}
end
teardown_all _ do
File.rm_rf!("./bench.rocksdb")
end
bench "random_writes" do
Rox.put(bench_context.default_cf, random_key(), random_record())
end
defp random_key() do
:crypto.rand_uniform(1, 10_000_000)
|> Integer.to_string()
end
defp random_record() do
num_pets =
:crypto.rand_uniform(0, 3)
%{
name: Faker.Name.name(),
age: :crypto.rand_uniform(20, 50),
favorite_color: Faker.Color.name(),
description: Faker.Lorem.words(10),
profile_url: Faker.Internet.image_url(),
pets: Enum.map(0..num_pets, fn _ -> random_pet() end)
}
end
defp random_pet() do
%{
name: Faker.Name.first_name(),
age: :crypto.rand_uniform(1, 7),
}
end
end

View File

@ -0,0 +1,3 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed
RoxBench random_writes 500000 2514784

View File

@ -0,0 +1,2 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed

View File

@ -0,0 +1,2 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed

View File

@ -0,0 +1,2 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed

View File

@ -0,0 +1,2 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed

View File

@ -0,0 +1,3 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed
RoxBench random_writes 500000 2802990

View File

@ -0,0 +1,3 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed
RoxBench random_writes 500000 2798738

View File

@ -0,0 +1,3 @@
duration:1.0;mem stats:false;sys mem stats:false
module;test;tags;iterations;elapsed
RoxBench random_writes 10000 1380040

10
mix.exs
View File

@ -4,7 +4,7 @@ defmodule Rox.Mixfile do
def project do
[app: :rox,
version: "1.0.0",
elixir: "~> 1.3",
elixir: "~> 1.4",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
compilers: [:rustler] ++ Mix.compilers(),
@ -18,7 +18,7 @@ defmodule Rox.Mixfile do
#
# Type "mix help compile.app" for more information
def application do
[applications: [:logger]]
[extra_applications: [:logger]]
end
# Dependencies can be Hex packages:
@ -33,7 +33,11 @@ defmodule Rox.Mixfile do
defp deps do
[
{:rustler, "~> 0.9.0"},
{:ex_doc, ">= 0.0.0", only: :dev}
{:ex_doc, ">= 0.0.0", only: :dev},
{:benchfella, "~> 0.3", only: :dev},
{:faker, "~> 0.7", only: :dev},
{:flow, "~> 0.11", only: :dev},
{:gen_stage, "~> 0.11", only: :dev},
]
end

View File

@ -1,4 +1,8 @@
%{"earmark": {:hex, :earmark, "1.2.0", "bf1ce17aea43ab62f6943b97bd6e3dc032ce45d4f787504e3adf738e54b42f3a", [:mix], []},
%{"benchfella": {:hex, :benchfella, "0.3.4", "41d2c017b361ece5225b5ba2e3b30ae53578c57c6ebc434417b4f1c2c94cf4f3", [:mix], []},
"earmark": {:hex, :earmark, "1.2.0", "bf1ce17aea43ab62f6943b97bd6e3dc032ce45d4f787504e3adf738e54b42f3a", [:mix], []},
"erocksdb": {:hex, :erocksdb, "0.4.1", "59a3258b1460d0e64f7575d912d9af86fa5aa56729abff18e4d3e4fd4a5e01e0", [:rebar3], []},
"ex_doc": {:hex, :ex_doc, "0.15.0", "e73333785eef3488cf9144a6e847d3d647e67d02bd6fdac500687854dd5c599f", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, optional: false]}]},
"faker": {:hex, :faker, "0.7.0", "2c42deeac7be717173c78c77fb3edc749fb5d5e460e33d01fe592ae99acc2f0d", [:mix], []},
"flow": {:hex, :flow, "0.11.1", "cbc35a0236520cc5fec7b5863cd8431cb1e77297c5c9119055676355eb1fb5a6", [:mix], [{:gen_stage, "~> 0.11.0", [hex: :gen_stage, optional: false]}]},
"gen_stage": {:hex, :gen_stage, "0.11.0", "943bdfa85c75fa624e0a36a9d135baad20a523be040178f5a215444b45c66ea4", [:mix], []},
"rustler": {:hex, :rustler, "0.9.0", "6fa87ac78f48f70aa8ecfb6e16b8af41c398989d33de41d292b5581d6a2eeb5a", [:mix], []}}