|
@@ -4,15 +4,15 @@ Benchmark
|
|
|
Environment
|
|
|
-----------
|
|
|
|
|
|
-- OS: Ubuntu-15.10
|
|
|
+- OS: Ubuntu-16.04
|
|
|
- CPU: Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz (x2)
|
|
|
-- Erlang: OTP-18.3.1 ([package link](https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3-1~ubuntu~wily_amd64.deb))
|
|
|
-- Benchmark: [The benchmark of poison(v2.1.0)](https://github.com/devinus/poison#benchmarking)
|
|
|
+- Erlang: OTP-19.0.2 ([package link](https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.0.2-1~ubuntu~xenial_amd64.deb))
|
|
|
+- Benchmark: [The benchmark of poison(v2.2.0)](https://github.com/devinus/poison/blob/2.2.0/README.md#benchmarking)
|
|
|
|
|
|
Benchmarks
|
|
|
----------
|
|
|
|
|
|
-To execute following commands, the (Elixir)[http://elixir-lang.org/] is required.
|
|
|
+To execute following commands, the [Elixir](http://elixir-lang.org/) is required.
|
|
|
|
|
|
```sh
|
|
|
###
|
|
@@ -20,7 +20,7 @@ To execute following commands, the (Elixir)[http://elixir-lang.org/] is required
|
|
|
###
|
|
|
$ git clone https://github.com/devinus/poison
|
|
|
$ cd poison
|
|
|
-$ git checkout 2.1.0
|
|
|
+$ git checkout 2.2.0
|
|
|
|
|
|
|
|
|
###
|
|
@@ -33,52 +33,52 @@ $ MIX_ENV=bench mix bench
|
|
|
Settings:
|
|
|
duration: 1.0 s
|
|
|
... abbrev ...
|
|
|
-Finished in 89.84 seconds
|
|
|
+Finished in 96.87 seconds
|
|
|
|
|
|
## EncoderBench
|
|
|
-structs (Poison) 500000 6.35 µs/op
|
|
|
-maps (jiffy) 500000 7.35 µs/op
|
|
|
-maps (jsone) 100000 10.00 µs/op
|
|
|
-maps (Poison) 100000 13.26 µs/op
|
|
|
-structs (Jazz) 100000 14.18 µs/op
|
|
|
-structs (JSX) 100000 17.83 µs/op
|
|
|
-maps (Jazz) 100000 18.97 µs/op
|
|
|
-maps (JSX) 50000 30.03 µs/op
|
|
|
-strings (jiffy) 10000 103.77 µs/op
|
|
|
-lists (Poison) 10000 114.34 µs/op
|
|
|
-string escaping (jiffy) 10000 141.46 µs/op
|
|
|
-lists (jsone) 10000 151.70 µs/op
|
|
|
-lists (Jazz) 10000 197.31 µs/op
|
|
|
-lists (jiffy) 10000 214.93 µs/op
|
|
|
-strings (JSX) 10000 237.08 µs/op
|
|
|
-lists (JSX) 5000 337.25 µs/op
|
|
|
-strings (Poison) 5000 350.49 µs/op
|
|
|
-jiffy 5000 404.95 µs/op
|
|
|
-jiffy (pretty) 5000 415.19 µs/op
|
|
|
-strings (Jazz) 5000 445.60 µs/op
|
|
|
-strings (jsone) 5000 550.78 µs/op
|
|
|
-string escaping (jsone) 2000 934.83 µs/op
|
|
|
-Poison 1000 1322.36 µs/op
|
|
|
-string escaping (JSX) 1000 1371.11 µs/op
|
|
|
-jsone 1000 1379.04 µs/op
|
|
|
-string escaping (Poison) 1000 1387.10 µs/op
|
|
|
-Poison (pretty) 1000 1453.36 µs/op
|
|
|
-string escaping (Jazz) 1000 1568.84 µs/op
|
|
|
-jsone (pretty) 1000 1734.20 µs/op
|
|
|
-Jazz 1000 1818.49 µs/op
|
|
|
-JSX 1000 2027.41 µs/op
|
|
|
-Jazz (pretty) 1000 2031.73 µs/op
|
|
|
-JSX (pretty) 500 5223.72 µs/op
|
|
|
+structs (Poison) 500000 6.64 µs/op
|
|
|
+maps (jiffy) 500000 7.30 µs/op
|
|
|
+maps (jsone) 100000 11.51 µs/op
|
|
|
+maps (Poison) 100000 13.46 µs/op
|
|
|
+structs (Jazz) 100000 14.23 µs/op
|
|
|
+structs (JSX) 100000 15.60 µs/op
|
|
|
+maps (Jazz) 100000 19.79 µs/op
|
|
|
+maps (JSX) 100000 28.94 µs/op
|
|
|
+strings (jiffy) 20000 94.73 µs/op
|
|
|
+lists (Poison) 20000 98.92 µs/op
|
|
|
+string escaping (jiffy) 10000 149.25 µs/op
|
|
|
+lists (jsone) 10000 153.25 µs/op
|
|
|
+lists (Jazz) 10000 201.31 µs/op
|
|
|
+lists (jiffy) 10000 209.62 µs/op
|
|
|
+strings (JSX) 10000 267.73 µs/op
|
|
|
+lists (JSX) 5000 335.35 µs/op
|
|
|
+strings (Jazz) 5000 404.81 µs/op
|
|
|
+strings (Poison) 5000 410.55 µs/op
|
|
|
+jiffy (pretty) 5000 430.67 µs/op
|
|
|
+jiffy 5000 497.42 µs/op
|
|
|
+strings (jsone) 5000 545.25 µs/op
|
|
|
+string escaping (jsone) 2000 697.40 µs/op
|
|
|
+string escaping (Jazz) 1000 1162.74 µs/op
|
|
|
+string escaping (JSX) 1000 1322.45 µs/op
|
|
|
+string escaping (Poison) 1000 1352.44 µs/op
|
|
|
+Poison 1000 1438.31 µs/op
|
|
|
+Poison (pretty) 1000 1477.34 µs/op
|
|
|
+jsone 1000 1508.22 µs/op
|
|
|
+Jazz 1000 1806.94 µs/op
|
|
|
+jsone (pretty) 1000 2024.11 µs/op
|
|
|
+JSX 1000 2068.95 µs/op
|
|
|
+Jazz (pretty) 1000 2110.42 µs/op
|
|
|
+JSX (pretty) 500 5516.55 µs/op
|
|
|
|
|
|
## ParserBench
|
|
|
-UTF-8 unescaping (jiffy) 50000 59.63 µs/op
|
|
|
-UTF-8 unescaping (Poison) 10000 219.79 µs/op
|
|
|
-UTF-8 unescaping (JSX) 10000 243.64 µs/op
|
|
|
-UTF-8 unescaping (jsone) 5000 342.50 µs/op
|
|
|
-jiffy 5000 522.25 µs/op
|
|
|
-jsone 1000 1217.44 µs/op
|
|
|
-Poison 1000 1223.37 µs/op
|
|
|
-JSX 1000 1630.77 µs/op
|
|
|
+UTF-8 unescaping (jiffy) 50000 63.49 µs/op
|
|
|
+UTF-8 unescaping (Poison) 10000 258.79 µs/op
|
|
|
+UTF-8 unescaping (JSX) 10000 279.01 µs/op
|
|
|
+UTF-8 unescaping (jsone) 5000 364.77 µs/op
|
|
|
+jiffy 2000 588.38 µs/op
|
|
|
+jsone 1000 1471.44 µs/op
|
|
|
+Poison 1000 1495.67 µs/op
|
|
|
+JSX 1000 1855.33 µs/op
|
|
|
|
|
|
|
|
|
###
|
|
@@ -91,52 +91,52 @@ $ MIX_ENV=bench mix bench
|
|
|
Settings:
|
|
|
duration: 1.0 s
|
|
|
... abbrev ...
|
|
|
-Finished in 103.42 seconds
|
|
|
+Finished in 102.75 seconds
|
|
|
|
|
|
## EncoderBench
|
|
|
-maps (jsone) 500000 5.58 µs/op
|
|
|
-maps (jiffy) 500000 7.12 µs/op
|
|
|
-structs (Poison) 500000 7.66 µs/op
|
|
|
-maps (Poison) 100000 10.71 µs/op
|
|
|
-structs (JSX) 100000 14.68 µs/op
|
|
|
-structs (Jazz) 100000 19.85 µs/op
|
|
|
-maps (Jazz) 100000 21.08 µs/op
|
|
|
-maps (JSX) 100000 25.38 µs/op
|
|
|
-lists (jsone) 50000 64.76 µs/op
|
|
|
-lists (Poison) 20000 76.80 µs/op
|
|
|
-strings (jiffy) 10000 109.11 µs/op
|
|
|
-string escaping (jiffy) 10000 140.35 µs/op
|
|
|
-strings (Poison) 10000 140.58 µs/op
|
|
|
-strings (JSX) 10000 179.35 µs/op
|
|
|
-lists (jiffy) 10000 198.89 µs/op
|
|
|
-lists (Jazz) 10000 217.64 µs/op
|
|
|
-lists (JSX) 10000 220.85 µs/op
|
|
|
-strings (jsone) 5000 323.63 µs/op
|
|
|
-strings (Jazz) 5000 363.87 µs/op
|
|
|
-jiffy 5000 388.06 µs/op
|
|
|
-jiffy (pretty) 5000 404.84 µs/op
|
|
|
-string escaping (jsone) 5000 481.52 µs/op
|
|
|
-jsone 5000 634.06 µs/op
|
|
|
-string escaping (JSX) 5000 699.05 µs/op
|
|
|
-Poison 2000 744.13 µs/op
|
|
|
-Poison (pretty) 2000 802.29 µs/op
|
|
|
-jsone (pretty) 2000 956.29 µs/op
|
|
|
-string escaping (Poison) 1000 1222.81 µs/op
|
|
|
-string escaping (Jazz) 1000 1312.68 µs/op
|
|
|
-Jazz 1000 1572.41 µs/op
|
|
|
-JSX 1000 1667.37 µs/op
|
|
|
-Jazz (pretty) 1000 1795.51 µs/op
|
|
|
-JSX (pretty) 500 4434.13 µs/op
|
|
|
+maps (jsone) 500000 6.40 µs/op
|
|
|
+structs (Poison) 500000 6.66 µs/op
|
|
|
+maps (jiffy) 500000 7.46 µs/op
|
|
|
+maps (Poison) 100000 11.98 µs/op
|
|
|
+structs (JSX) 100000 13.05 µs/op
|
|
|
+structs (Jazz) 100000 15.43 µs/op
|
|
|
+maps (Jazz) 100000 22.37 µs/op
|
|
|
+maps (JSX) 100000 27.30 µs/op
|
|
|
+lists (jsone) 50000 68.52 µs/op
|
|
|
+lists (Poison) 20000 79.27 µs/op
|
|
|
+strings (jiffy) 20000 98.95 µs/op
|
|
|
+strings (Poison) 10000 142.03 µs/op
|
|
|
+string escaping (jiffy) 10000 149.08 µs/op
|
|
|
+strings (JSX) 10000 185.93 µs/op
|
|
|
+lists (jiffy) 10000 206.95 µs/op
|
|
|
+lists (Jazz) 10000 228.95 µs/op
|
|
|
+lists (JSX) 10000 274.25 µs/op
|
|
|
+strings (Jazz) 5000 312.56 µs/op
|
|
|
+string escaping (jsone) 5000 343.38 µs/op
|
|
|
+strings (jsone) 5000 355.18 µs/op
|
|
|
+jiffy 5000 404.91 µs/op
|
|
|
+jiffy (pretty) 5000 411.19 µs/op
|
|
|
+string escaping (JSX) 2000 739.83 µs/op
|
|
|
+Poison 2000 783.98 µs/op
|
|
|
+Poison (pretty) 2000 833.02 µs/op
|
|
|
+jsone 2000 945.08 µs/op
|
|
|
+string escaping (Poison) 1000 1263.35 µs/op
|
|
|
+string escaping (Jazz) 1000 1292.65 µs/op
|
|
|
+jsone (pretty) 1000 1359.26 µs/op
|
|
|
+Jazz 1000 1635.89 µs/op
|
|
|
+JSX 1000 1718.37 µs/op
|
|
|
+Jazz (pretty) 1000 1841.45 µs/op
|
|
|
+JSX (pretty) 500 4709.19 µs/op
|
|
|
|
|
|
## ParserBench
|
|
|
-UTF-8 unescaping (jiffy) 50000 59.95 µs/op
|
|
|
-UTF-8 unescaping (jsone) 20000 83.79 µs/op
|
|
|
-UTF-8 unescaping (Poison) 10000 109.70 µs/op
|
|
|
-UTF-8 unescaping (JSX) 10000 159.35 µs/op
|
|
|
-jiffy 5000 504.77 µs/op
|
|
|
-jsone 5000 527.77 µs/op
|
|
|
-Poison 5000 686.90 µs/op
|
|
|
-JSX 1000 1320.74 µs/op
|
|
|
+UTF-8 unescaping (jiffy) 50000 62.64 µs/op
|
|
|
+UTF-8 unescaping (jsone) 20000 90.13 µs/op
|
|
|
+UTF-8 unescaping (Poison) 10000 119.44 µs/op
|
|
|
+UTF-8 unescaping (JSX) 10000 168.10 µs/op
|
|
|
+jsone 5000 542.69 µs/op
|
|
|
+jiffy 5000 543.75 µs/op
|
|
|
+Poison 5000 733.23 µs/op
|
|
|
+JSX 1000 1389.98 µs/op
|
|
|
```
|
|
|
|
|
|
Libraries Version
|
|
@@ -144,13 +144,13 @@ Libraries Version
|
|
|
|
|
|
mix.lock:
|
|
|
```elixir
|
|
|
-%{"benchfella": {:hex, :benchfella, "0.3.1"},
|
|
|
+%{"benchfella": {:hex, :benchfella, "0.3.2"},
|
|
|
"earmark": {:hex, :earmark, "0.2.1"},
|
|
|
- "ex_doc": {:hex, :ex_doc, "0.11.4"},
|
|
|
- "exjsx": {:git, "https://github.com/talentdeficit/exjsx.git", "53db5d995b1b070e3883381e9acb195969137f67", []},
|
|
|
+ "ex_doc": {:hex, :ex_doc, "0.12.0"},
|
|
|
+ "exjsx": {:git, "https://github.com/talentdeficit/exjsx.git", "202b2ee1b274511973de60e9fdfed218d3b5eecc", []},
|
|
|
"jazz": {:git, "https://github.com/meh/jazz.git", "49f335492aca5516495199dd81dd18b845ebaa69", []},
|
|
|
- "jiffy": {:git, "https://github.com/davisp/jiffy.git", "6303ff98aaa3fce625038c8b7af2aa8b802f4742", []},
|
|
|
- "jsone": {:hex, :jsone, "1.2.2"},
|
|
|
+ "jiffy": {:git, "https://github.com/davisp/jiffy.git", "330f41c486cf949707eb494b855634df324a6d92", []},
|
|
|
+ "jsone": {:hex, :jsone, "1.2.4"},
|
|
|
"jsx": {:hex, :jsx, "2.6.2"}}
|
|
|
```
|
|
|
|
|
@@ -277,7 +277,7 @@ index 89a8c10..ac2f53e 100644
|
|
|
[{:earmark, "~> 0.2", only: :docs},
|
|
|
{:ex_doc, "~> 0.11", only: :docs},
|
|
|
{:benchfella, "~> 0.3", only: :bench},
|
|
|
-+ {:jsone, "~> 1.2.2", only: :bench},
|
|
|
++ {:jsone, "~> 1.2.4", only: :bench},
|
|
|
{:jiffy, github: "davisp/jiffy", only: :bench},
|
|
|
{:exjsx, github: "talentdeficit/exjsx", only: :bench},
|
|
|
{:jazz, github: "meh/jazz", only: :bench}]
|