-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathbasic_bench.exs
More file actions
58 lines (45 loc) · 1.96 KB
/
basic_bench.exs
File metadata and controls
58 lines (45 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
defmodule BasicBench do
use Benchfella
def macro_underscore(s) do
s
|> Macro.underscore
|> String.replace(~r/-/, "_")
end
def regex_underscore(s) do
s
|> String.replace(~r/([A-Z]+)([A-Z][a-z])/, "\\1_\\2")
|> String.replace(~r/([a-z\d])([A-Z])/, "\\1_\\2")
|> String.replace(~r/-/, "_")
|> String.downcase
end
@long_string "StringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuffStringShouldChange-some_stuff"
@short_string "StringShouldChange-some_stuff"
@payload_camel_cased File.read!("bench/test-payload-camel-cased.json") |> Poison.decode!()
@large_payload_camel_cased 1..100 |> Enum.reduce(%{}, fn(x, acc) -> Map.put(acc, "key#{x}", @payload_camel_cased) end)
@payload_snake_cased File.read!("bench/test-payload-camel-cased.json") |> Poison.decode!()
@large_payload_snake_cased 1..100 |> Enum.reduce(%{}, fn(x, acc) -> Map.put(acc, "key#{x}", @payload_snake_cased) end)
bench "macro_underscore - long" do
@long_string |> macro_underscore
end
bench "regex_underscore - long" do
@long_string |> regex_underscore
end
bench "macro_underscore - short" do
@short_string |> macro_underscore
end
bench "regex_underscore - short" do
@short_string |> regex_underscore
end
bench "large dict camel cased with low perf underscore" do
@large_payload_camel_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: false)
end
bench "large dict camel cased with high perf underscore" do
@large_payload_camel_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: true)
end
bench "large dict snake cased with low perf underscore" do
@large_payload_snake_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: false)
end
bench "large dict snake cased with high perf underscore" do
@large_payload_snake_cased |> AtomicMap.convert(safe: false, underscore: true, high_perf: true)
end
end