diff --git a/Makefile b/Makefile index e6502ee..0f62b33 100644 --- a/Makefile +++ b/Makefile @@ -3,20 +3,26 @@ all: bench.encode: cd euneus_bench && mix encode +bench.encode_v2: + cd euneus_bench && mix encode_v2 + bench.encode_parsed: cd euneus_bench && mix encode_parsed -bench.encode_parsed_plugins: - cd euneus_bench && mix encode_parsed_plugins +bench.encode_parsed_codecs: + cd euneus_bench && mix encode_parsed_codecs bench.decode: cd euneus_bench && mix decode +bench.decode_v2: + cd euneus_bench && mix decode_v2 + bench.decode_parsed: cd euneus_bench && mix decode_parsed -bench.decode_parsed_plugins: - cd euneus_bench && mix decode_parsed_plugins +bench.decode_parsed_codecs: + cd euneus_bench && mix decode_parsed_codecs .PHONY: test diff --git a/euneus_bench/mix.exs b/euneus_bench/mix.exs index c02f580..4df0594 100644 --- a/euneus_bench/mix.exs +++ b/euneus_bench/mix.exs @@ -15,11 +15,13 @@ defmodule EuneusBench.MixProject do defp aliases() do [ encode: ["run script/encode.exs"], + encode_v2: ["run script/encode_v2.exs"], encode_parsed: ["run script/encode_parsed.exs"], - encode_parsed_plugins: ["run script/encode_parsed_plugins.exs"], + encode_parsed_codecs: ["run script/encode_parsed_codecs.exs"], decode: ["run script/decode.exs"], + decode_v2: ["run script/decode_v2.exs"], decode_parsed: ["run script/decode_parsed.exs"], - decode_parsed_plugins: ["run script/decode_parsed_plugins.exs"] + decode_parsed_codecs: ["run script/decode_parsed_codecs.exs"] ] end diff --git a/euneus_bench/runs/decode_parsed_codecs.md b/euneus_bench/runs/decode_parsed_codecs.md new file mode 100644 index 0000000..43672bf --- /dev/null +++ b/euneus_bench/runs/decode_parsed_codecs.md @@ -0,0 +1,1648 @@ +Benchmark + +Benchmark run from 2023-11-24 19:45:59.146760Z UTC + +## System + +Benchmark suite executing on the following system: + + + + + + + + + + + + + + + + + + + + + +
Operating SystemLinux
CPU InformationIntel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Number of Available Cores8
Available Memory15.54 GB
Elixir Version1.16.0-dev
Erlang Version26.1
+ +## Configuration + +Benchmark suite executing with the following configuration: + + + + + + + + + + + + +
:time10 s
:parallel1
:warmup1 s
+ +## Statistics + + + +__Input: Blockchain__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy5.99 K166.81 µs±44.21%148.90 µs525.23 µs
Jason5.57 K179.44 µs±45.19%154.42 µs511.54 µs
thoas4.81 K207.94 µs±30.35%186.72 µs487.73 µs
euneus4.61 K216.84 µs±35.01%190.44 µs497.46 µs
jsone4.25 K235.27 µs±31.93%222.43 µs486.03 µs
jsx1.83 K547.11 µs±12.09%550.49 µs709.50 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy5.99 K 
Jason5.57 K1.08x
thoas4.81 K1.25x
euneus4.61 K1.3x
jsone4.25 K1.41x
jsx1.83 K3.28x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy1.55 KB 
Jason51.63 KB33.37x
thoas51.41 KB33.24x
euneus86.13 KB55.68x
jsone151.39 KB97.87x
jsx311.43 KB201.33x
+ + + +__Input: Giphy__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy962.951.04 ms±22.02%1.09 ms1.44 ms
thoas489.112.04 ms±5.34%2.01 ms2.38 ms
Jason468.752.13 ms±7.14%2.14 ms2.43 ms
jsone279.453.58 ms±4.03%3.51 ms3.98 ms
euneus240.774.15 ms±3.62%4.11 ms4.62 ms
jsx165.486.04 ms±2.59%6.02 ms6.46 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy962.95 
thoas489.111.97x
Jason468.752.05x
jsone279.453.45x
euneus240.774.0x
jsx165.485.82x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.26 MB 
thoas0.67 MB2.61x
Jason0.67 MB2.61x
jsone2.40 MB9.34x
euneus2.54 MB9.88x
jsx3.65 MB14.21x
+ + + +__Input: GitHub__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy2.69 K371.39 µs±22.74%347.09 µs687.69 µs
Jason2.02 K493.87 µs±12.70%486.02 µs642.94 µs
thoas1.73 K578.76 µs±9.44%570.31 µs729.56 µs
euneus1.46 K682.71 µs±9.38%673.19 µs845.65 µs
jsone1.42 K705.51 µs±7.59%712.86 µs848.74 µs
jsx0.52 K1931.25 µs±4.44%1942.63 µs2126.53 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy2.69 K 
Jason2.02 K1.33x
thoas1.73 K1.56x
euneus1.46 K1.84x
jsone1.42 K1.9x
jsx0.52 K5.2x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy41.91 KB 
Jason122.80 KB2.93x
thoas122.73 KB2.93x
euneus316.23 KB7.55x
jsone425.48 KB10.15x
jsx1190.20 KB28.4x
+ + + +__Input: GovTrack__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy27.2036.76 ms±1.51%36.66 ms40.01 ms
Jason17.1758.25 ms±2.15%58.35 ms61.13 ms
thoas15.8763.02 ms±0.90%62.89 ms65.92 ms
jsone9.51105.10 ms±2.58%105.99 ms109.25 ms
euneus8.73114.49 ms±1.60%114.38 ms122.51 ms
jsx4.42226.15 ms±1.33%226.34 ms231.83 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy27.20 
Jason17.171.58x
thoas15.871.71x
jsone9.512.86x
euneus8.733.11x
jsx4.426.15x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy11.29 MB 
Jason11.68 MB1.03x
thoas11.68 MB1.03x
jsone38.05 MB3.37x
euneus37.10 MB3.29x
jsx81.29 MB7.2x
+ + + +__Input: Issue 90__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy49.7120.12 ms±2.50%19.97 ms22.61 ms
Jason25.2739.57 ms±1.31%39.45 ms41.49 ms
euneus25.2439.62 ms±2.01%39.71 ms41.40 ms
jsone23.3042.91 ms±0.88%42.83 ms44.29 ms
thoas17.9555.72 ms±0.71%55.68 ms57.07 ms
jsx9.95100.47 ms±1.27%100.19 ms108.62 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy49.71 
Jason25.271.97x
euneus25.241.97x
jsone23.302.13x
thoas17.952.77x
jsx9.954.99x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy11.66 KB 
Jason961.94 KB82.47x
euneus987.23 KB84.64x
jsone5284.81 KB453.09x
thoas961.87 KB82.46x
jsx4362.92 KB374.05x
+ + + +__Input: JSON Generator__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy1158.940.86 ms±23.91%0.78 ms1.41 ms
Jason697.711.43 ms±7.08%1.46 ms1.64 ms
thoas626.521.60 ms±6.40%1.61 ms1.83 ms
jsone437.072.29 ms±4.85%2.29 ms2.56 ms
euneus405.092.47 ms±4.47%2.45 ms2.77 ms
jsx184.245.43 ms±6.44%5.39 ms5.95 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy1158.94 
Jason697.711.66x
thoas626.521.85x
jsone437.072.65x
euneus405.092.86x
jsx184.246.29x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.20 MB 
Jason0.47 MB2.32x
thoas0.47 MB2.32x
jsone1.44 MB7.1x
euneus1.28 MB6.3x
jsx3.04 MB14.98x
+ + + +__Input: JSON Generator (Pretty)__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy692.191.44 ms±10.75%1.43 ms1.80 ms
Jason592.501.69 ms±5.50%1.71 ms1.89 ms
thoas542.551.84 ms±5.07%1.84 ms2.08 ms
jsone401.142.49 ms±4.81%2.48 ms2.78 ms
euneus363.172.75 ms±4.44%2.73 ms3.10 ms
jsx175.545.70 ms±2.75%5.69 ms6.10 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy692.19 
Jason592.501.17x
thoas542.551.28x
jsone401.141.73x
euneus363.171.91x
jsx175.543.94x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.25 MB 
Jason0.47 MB1.87x
thoas0.47 MB1.87x
jsone1.44 MB5.74x
euneus1.28 MB5.1x
jsx3.04 MB12.11x
+ + + +__Input: Pokedex__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy1.33 K0.75 ms±24.51%0.79 ms1.06 ms
thoas1.17 K0.85 ms±10.76%0.80 ms1.06 ms
Jason1.05 K0.95 ms±8.51%0.96 ms1.18 ms
jsone0.59 K1.71 ms±7.59%1.70 ms2.00 ms
euneus0.48 K2.10 ms±5.43%2.09 ms2.43 ms
jsx0.25 K3.94 ms±2.16%3.92 ms4.34 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy1.33 K 
thoas1.17 K1.13x
Jason1.05 K1.26x
jsone0.59 K2.27x
euneus0.48 K2.78x
jsx0.25 K5.23x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.0995 MB 
thoas0.38 MB3.82x
Jason0.38 MB3.83x
jsone1.23 MB12.37x
euneus1.29 MB12.96x
jsx2.51 MB25.18x
+ + + +__Input: UTF-8 escaped__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy10.39 K96.28 µs±9.92%94.89 µs129.03 µs
thoas1.70 K587.76 µs±21.71%584.84 µs869.23 µs
Jason1.69 K591.31 µs±21.81%609.69 µs883.39 µs
euneus1.44 K694.80 µs±20.80%679.79 µs987.82 µs
jsone1.30 K770.74 µs±11.92%770.04 µs970.46 µs
jsx1.17 K851.19 µs±15.43%902.63 µs1138.80 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy10.39 K 
thoas1.70 K6.1x
Jason1.69 K6.14x
euneus1.44 K7.22x
jsone1.30 K8.01x
jsx1.17 K8.84x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.0703 KB 
thoas283.73 KB4035.22x
Jason283.80 KB4036.22x
euneus430.97 KB6129.33x
jsone741.67 KB10548.22x
jsx824.53 KB11726.67x
+ + + +__Input: UTF-8 unescaped__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy18.08 K55.30 µs±19.51%54.30 µs77.63 µs
euneus10.34 K96.68 µs±52.46%88.24 µs390.27 µs
Jason10.21 K97.96 µs±51.20%89.34 µs388.14 µs
thoas9.65 K103.68 µs±47.29%95.05 µs392.01 µs
jsone9.45 K105.78 µs±70.90%90.52 µs547.02 µs
jsx6.57 K152.19 µs±46.70%126.61 µs496.78 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy18.08 K 
euneus10.34 K1.75x
Jason10.21 K1.77x
thoas9.65 K1.87x
jsone9.45 K1.91x
jsx6.57 K2.75x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.0703 KB 
euneus7.13 KB101.33x
Jason6.87 KB97.67x
thoas6.80 KB96.67x
jsone33.67 KB478.89x
jsx42.22 KB600.44x
\ No newline at end of file diff --git a/euneus_bench/runs/decode_parsed_codecs_summary.md b/euneus_bench/runs/decode_parsed_codecs_summary.md new file mode 100644 index 0000000..d0341ef --- /dev/null +++ b/euneus_bench/runs/decode_parsed_codecs_summary.md @@ -0,0 +1,434 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Blockchain
NameIPSSlower
jiffy5.99 K 
Jason5.57 K1.08x
thoas4.81 K1.25x
euneus4.61 K1.3x
jsone4.25 K1.41x
jsx1.83 K3.28x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Giphy
NameIPSSlower
jiffy962.95 
thoas489.111.97x
Jason468.752.05x
jsone279.453.45x
euneus240.774.0x
jsx165.485.82x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GitHub
NameIPSSlower
jiffy2.69 K 
Jason2.02 K1.33x
thoas1.73 K1.56x
euneus1.46 K1.84x
jsone1.42 K1.9x
jsx0.52 K5.2x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GovTrack
NameIPSSlower
jiffy27.20 
Jason17.171.58x
thoas15.871.71x
jsone9.512.86x
euneus8.733.11x
jsx4.426.15x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue 90
NameIPSSlower
jiffy49.71 
Jason25.271.97x
euneus25.241.97x
jsone23.302.13x
thoas17.952.77x
jsx9.954.99x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JSON Generator (Pretty)
NameIPSSlower
jiffy1158.94 
Jason697.711.66x
thoas626.521.85x
jsone437.072.65x
euneus405.092.86x
jsx184.246.29x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JSON Generator
NameIPSSlower
jiffy692.19 
Jason592.501.17x
thoas542.551.28x
jsone401.141.73x
euneus363.171.91x
jsx175.543.94x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pokedex
NameIPSSlower
jiffy1.33 K 
thoas1.17 K1.13x
Jason1.05 K1.26x
jsone0.59 K2.27x
euneus0.48 K2.78x
jsx0.25 K5.23x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UTF-8 escaped
NameIPSSlower
jiffy10.39 K 
thoas1.70 K6.1x
Jason1.69 K6.14x
euneus1.44 K7.22x
jsone1.30 K8.01x
jsx1.17 K8.84x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UTF-8 unescaped
NameIPSSlower
jiffy18.08 K 
euneus10.34 K1.75x
Jason10.21 K1.77x
thoas9.65 K1.87x
jsone9.45 K1.91x
jsx6.57 K2.75x
+ +
diff --git a/euneus_bench/runs/decode_parsed_plugins_summary.md b/euneus_bench/runs/decode_parsed_plugins_summary.md index bdd80c9..a9f0cdb 100644 --- a/euneus_bench/runs/decode_parsed_plugins_summary.md +++ b/euneus_bench/runs/decode_parsed_plugins_summary.md @@ -31,7 +31,7 @@ - euneus + euneus 3.59 K 1.67x @@ -69,7 +69,7 @@ - euneus + euneus 278.42 3.56x @@ -119,7 +119,7 @@ - euneus + euneus 1.17 K 2.3x @@ -163,7 +163,7 @@ - euneus + euneus 7.82 3.49x @@ -195,7 +195,7 @@ - euneus + euneus 25.23 1.97x @@ -251,7 +251,7 @@ - euneus + euneus 347.69 3.34x @@ -295,7 +295,7 @@ - euneus + euneus 317.16 2.2x @@ -339,7 +339,7 @@ - euneus + euneus 0.40 K 3.34x @@ -377,7 +377,7 @@ - euneus + euneus 1.45 K 7.18x @@ -409,7 +409,7 @@ - euneus + euneus 10.37 K 1.74x diff --git a/euneus_bench/runs/decode_parsed_summary.md b/euneus_bench/runs/decode_parsed_summary.md index 74a5b06..0fd4c42 100644 --- a/euneus_bench/runs/decode_parsed_summary.md +++ b/euneus_bench/runs/decode_parsed_summary.md @@ -19,7 +19,7 @@ - euneus + euneus 5.44 K 1.09x @@ -57,7 +57,7 @@ - euneus + euneus 498.92 1.94x @@ -107,7 +107,7 @@ - euneus + euneus 1.94 K 1.38x @@ -151,7 +151,7 @@ - euneus + euneus 15.93 1.71x @@ -195,7 +195,7 @@ - euneus + euneus 24.88 2.01x @@ -233,7 +233,7 @@ - euneus + euneus 693.50 1.62x @@ -283,7 +283,7 @@ - euneus + euneus 560.86 1.23x @@ -327,7 +327,7 @@ - euneus + euneus 1.08 K 1.21x @@ -377,7 +377,7 @@ - euneus + euneus 1.44 K 7.25x @@ -409,7 +409,7 @@ - euneus + euneus 10.22 K 1.77x diff --git a/euneus_bench/runs/decode_summary.md b/euneus_bench/runs/decode_summary.md index e69bf44..11d8ad4 100644 --- a/euneus_bench/runs/decode_summary.md +++ b/euneus_bench/runs/decode_summary.md @@ -13,7 +13,7 @@ - euneus + euneus 5.77 K 1.03x @@ -63,7 +63,7 @@ - euneus + euneus 494.10 1.87x @@ -101,7 +101,7 @@ - euneus + euneus 2.09 K 1.29x @@ -151,7 +151,7 @@ - euneus + euneus 16.79 1.61x @@ -189,7 +189,7 @@ - euneus + euneus 26.62 1.88x @@ -233,7 +233,7 @@ - euneus + euneus 707.45 1.62x @@ -277,7 +277,7 @@ - euneus + euneus 616.18 1.13x @@ -321,7 +321,7 @@ - euneus + euneus 1.17 K 1.16x @@ -377,7 +377,7 @@ - euneus + euneus 1.47 K 7.09x @@ -409,7 +409,7 @@ - euneus + euneus 10.44 K 1.74x diff --git a/euneus_bench/runs/encode_parsed_codecs.md b/euneus_bench/runs/encode_parsed_codecs.md new file mode 100644 index 0000000..1dd57bc --- /dev/null +++ b/euneus_bench/runs/encode_parsed_codecs.md @@ -0,0 +1,1328 @@ +Benchmark + +Benchmark run from 2023-11-24 19:10:07.301687Z UTC + +## System + +Benchmark suite executing on the following system: + + + + + + + + + + + + + + + + + + + + + +
Operating SystemLinux
CPU InformationIntel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Number of Available Cores8
Available Memory15.54 GB
Elixir Version1.16.0-dev
Erlang Version26.1
+ +## Configuration + +Benchmark suite executing with the following configuration: + + + + + + + + + + + + +
:time10 s
:parallel1
:warmup1 s
+ +## Statistics + + + +__Input: Blockchain__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy11.16 K89.63 µs±352.91%61.97 µs110.94 µs
Jason4.57 K218.79 µs±287.10%110.75 µs3536.71 µs
euneus3.94 K254.01 µs±266.56%104.44 µs3534.92 µs
thoas3.76 K265.88 µs±242.07%131.39 µs3548.34 µs
jsone2.50 K399.54 µs±207.92%202.62 µs3604.89 µs
jsx1.01 K989.92 µs±126.22%484.00 µs4152.43 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy11.16 K 
Jason4.57 K2.44x
euneus3.94 K2.83x
thoas3.76 K2.97x
jsone2.50 K4.46x
jsx1.01 K11.04x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy8.03 KB 
Jason78.91 KB9.82x
euneus99.90 KB12.44x
thoas89.41 KB11.13x
jsone179.23 KB22.32x
jsx405.79 KB50.53x
+ + + +__Input: Giphy__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy1159.450.86 ms±103.36%0.66 ms4.48 ms
Jason430.252.32 ms±76.80%1.08 ms4.92 ms
thoas401.712.49 ms±73.06%1.23 ms5.42 ms
euneus347.782.88 ms±63.51%4.19 ms5.20 ms
jsone212.694.70 ms±33.15%5.33 ms8.41 ms
jsx79.2912.61 ms±1.83%12.56 ms13.47 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy1159.45 
Jason430.252.69x
thoas401.712.89x
euneus347.783.33x
jsone212.695.45x
jsx79.2914.62x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.114 MB 
Jason0.84 MB7.38x
thoas0.84 MB7.38x
euneus1.06 MB9.31x
jsone2.19 MB19.18x
jsx4.81 MB42.19x
+ + + +__Input: GitHub__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy3.54 K282.09 µs±175.54%216.08 µs3909.01 µs
Jason1.52 K659.04 µs±158.60%299.66 µs3818.23 µs
thoas1.29 K777.66 µs±138.73%406.75 µs3960.35 µs
euneus1.28 K782.76 µs±144.00%373.75 µs3831.46 µs
jsone0.66 K1513.46 µs±96.41%841.94 µs4326.62 µs
jsx0.197 K5066.27 µs±3.33%5042.97 µs5569.72 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy3.54 K 
Jason1.52 K2.34x
thoas1.29 K2.76x
euneus1.28 K2.77x
jsone0.66 K5.37x
jsx0.197 K17.96x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy42.85 KB 
Jason221.14 KB5.16x
thoas228.15 KB5.32x
euneus294.34 KB6.87x
jsone682.82 KB15.93x
jsx1422.55 KB33.2x
+ + + +__Input: GovTrack__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy52.6518.99 ms±9.45%18.58 ms27.46 ms
euneus20.0249.94 ms±6.13%49.86 ms63.82 ms
Jason17.9755.66 ms±8.34%56.48 ms63.47 ms
thoas16.6060.24 ms±42.16%54.22 ms125.66 ms
jsone8.54117.12 ms±9.64%119.14 ms127.29 ms
jsx3.06327.00 ms±2.79%326.38 ms374.24 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy52.65 
euneus20.022.63x
Jason17.972.93x
thoas16.603.17x
jsone8.546.17x
jsx3.0617.22x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy3.30 MB 
euneus25.36 MB7.67x
Jason18.90 MB5.72x
thoas20.67 MB6.26x
jsone45.34 MB13.72x
jsx98.13 MB29.7x
+ + + +__Input: Issue 90__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy36.5727.35 ms±1.40%27.26 ms29.09 ms
Jason27.4536.43 ms±5.46%37.42 ms40.50 ms
euneus26.0638.37 ms±5.76%39.22 ms44.04 ms
thoas16.7959.55 ms±3.29%60.52 ms63.60 ms
jsone16.6859.94 ms±2.99%60.81 ms62.63 ms
jsx8.76114.19 ms±2.13%114.60 ms119.79 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy36.57 
Jason27.451.33x
euneus26.061.4x
thoas16.792.18x
jsone16.682.19x
jsx8.764.18x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.0125 MB 
Jason0.81 MB65.33x
euneus1.08 MB86.73x
thoas0.82 MB66.05x
jsone2.64 MB212.2x
jsx4.57 MB366.69x
+ + + +__Input: JSON Generator__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy1179.260.85 ms±95.28%0.67 ms4.58 ms
euneus419.312.38 ms±74.21%1.18 ms4.89 ms
Jason410.982.43 ms±80.35%1.06 ms7.74 ms
thoas404.672.47 ms±74.73%1.25 ms5.90 ms
jsone271.343.69 ms±49.18%4.81 ms8.08 ms
jsx98.1510.19 ms±23.08%8.89 ms13.16 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy1179.26 
euneus419.312.81x
Jason410.982.87x
thoas404.672.91x
jsone271.344.35x
jsx98.1512.02x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy110.68 KB 
euneus957.37 KB8.65x
Jason778.17 KB7.03x
thoas769.38 KB6.95x
jsone1711.06 KB15.46x
jsx3601.87 KB32.54x
+ + + +__Input: Pokedex__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy1682.070.59 ms±117.24%0.46 ms4.05 ms
Jason628.701.59 ms±102.13%0.70 ms4.41 ms
thoas611.611.64 ms±97.86%0.77 ms4.43 ms
euneus489.982.04 ms±88.12%0.87 ms4.97 ms
jsone320.343.12 ms±58.61%4.37 ms7.83 ms
jsx108.059.25 ms±24.24%7.67 ms13.97 ms
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy1682.07 
Jason628.702.68x
thoas611.612.75x
euneus489.983.43x
jsone320.345.25x
jsx108.0515.57x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy51.82 KB 
Jason658.96 KB12.72x
thoas670.49 KB12.94x
euneus826.38 KB15.95x
jsone1490.80 KB28.77x
jsx3532.86 KB68.18x
+ + + +__Input: UTF-8 unescaped__ + +Run Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSAverageDevitationMedian99th %
jiffy14.29 K70.00 µs±32.99%68.83 µs92.27 µs
Jason10.10 K99.01 µs±254.94%79.89 µs120.69 µs
euneus9.53 K104.96 µs±253.78%82.84 µs130.21 µs
thoas9.08 K110.12 µs±223.33%91.30 µs133.21 µs
jsx4.77 K209.74 µs±215.15%153.19 µs3606.07 µs
jsone1.84 K543.04 µs±172.96%260.68 µs3477.35 µs
+ + +Run Time Comparison + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameIPSSlower
jiffy14.29 K 
Jason10.10 K1.41x
euneus9.53 K1.5x
thoas9.08 K1.57x
jsx4.77 K3.0x
jsone1.84 K7.76x
+ + + +Memory Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAverageFactor
jiffy0.70 KB 
Jason6.02 KB8.66x
euneus8.57 KB12.33x
thoas5.98 KB8.6x
jsx41.10 KB59.11x
jsone207.50 KB298.43x
\ No newline at end of file diff --git a/euneus_bench/runs/encode_parsed_codecs_summary.md b/euneus_bench/runs/encode_parsed_codecs_summary.md new file mode 100644 index 0000000..982922a --- /dev/null +++ b/euneus_bench/runs/encode_parsed_codecs_summary.md @@ -0,0 +1,348 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Blockchain
NameIPSSlower
jiffy11.16 K 
Jason4.57 K2.44x
euneus3.94 K2.83x
thoas3.76 K2.97x
jsone2.50 K4.46x
jsx1.01 K11.04x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Giphy
NameIPSSlower
jiffy1159.45 
Jason430.252.69x
thoas401.712.89x
euneus347.783.33x
jsone212.695.45x
jsx79.2914.62x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GitHub
NameIPSSlower
jiffy3.54 K 
Jason1.52 K2.34x
thoas1.29 K2.76x
euneus1.28 K2.77x
jsone0.66 K5.37x
jsx0.197 K17.96x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GovTrack
NameIPSSlower
jiffy52.65 
euneus20.022.63x
Jason17.972.93x
thoas16.603.17x
jsone8.546.17x
jsx3.0617.22x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue 90
NameIPSSlower
jiffy36.57 
Jason27.451.33x
euneus26.061.4x
thoas16.792.18x
jsone16.682.19x
jsx8.764.18x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JSON Generator
NameIPSSlower
jiffy1179.26 
euneus419.312.81x
Jason410.982.87x
thoas404.672.91x
jsone271.344.35x
jsx98.1512.02x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pokedex
NameIPSSlower
jiffy1682.07 
Jason628.702.68x
thoas611.612.75x
euneus489.983.43x
jsone320.345.25x
jsx108.0515.57x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UTF-8 unescaped
NameIPSSlower
jiffy14.29 K 
Jason10.10 K1.41x
euneus9.53 K1.5x
thoas9.08 K1.57x
jsx4.77 K3.0x
jsone1.84 K7.76x
+ +
diff --git a/euneus_bench/runs/encode_parsed_plugins_summary.md b/euneus_bench/runs/encode_parsed_plugins_summary.md index a5973df..43f627e 100644 --- a/euneus_bench/runs/encode_parsed_plugins_summary.md +++ b/euneus_bench/runs/encode_parsed_plugins_summary.md @@ -19,7 +19,7 @@ - euneus + euneus 3.79 K 2.97x @@ -69,7 +69,7 @@ - euneus + euneus 332.49 3.53x @@ -113,7 +113,7 @@ - euneus + euneus 1.22 K 2.67x @@ -157,7 +157,7 @@ - euneus + euneus 16.66 3.13x @@ -195,7 +195,7 @@ - euneus + euneus 24.12 1.52x @@ -245,7 +245,7 @@ - euneus + euneus 397.61 2.99x @@ -289,7 +289,7 @@ - euneus + euneus 470.18 3.51x @@ -327,7 +327,7 @@ - euneus + euneus 9.41 K 1.53x diff --git a/euneus_bench/runs/encode_parsed_summary.md b/euneus_bench/runs/encode_parsed_summary.md index eb1a595..2523d02 100644 --- a/euneus_bench/runs/encode_parsed_summary.md +++ b/euneus_bench/runs/encode_parsed_summary.md @@ -19,7 +19,7 @@ - euneus + euneus 3.92 K 2.84x @@ -69,7 +69,7 @@ - euneus + euneus 335.54 3.47x @@ -113,7 +113,7 @@ - euneus + euneus 1.25 K 2.81x @@ -151,7 +151,7 @@ - euneus + euneus 17.40 2.99x @@ -195,7 +195,7 @@ - euneus + euneus 24.04 1.53x @@ -233,7 +233,7 @@ - euneus + euneus 409.80 2.87x @@ -289,7 +289,7 @@ - euneus + euneus 487.64 3.4x @@ -327,7 +327,7 @@ - euneus + euneus 9.27 K 1.55x diff --git a/euneus_bench/runs/encode_summary.md b/euneus_bench/runs/encode_summary.md index b4c4e23..8907eb4 100644 --- a/euneus_bench/runs/encode_summary.md +++ b/euneus_bench/runs/encode_summary.md @@ -19,7 +19,7 @@ - euneus + euneus 4.49 K 2.48x @@ -63,7 +63,7 @@ - euneus + euneus 427.23 2.72x @@ -107,7 +107,7 @@ - euneus + euneus 1.45 K 2.44x @@ -157,7 +157,7 @@ - euneus + euneus 14.72 3.53x @@ -195,7 +195,7 @@ - euneus + euneus 23.24 1.58x @@ -233,7 +233,7 @@ - euneus + euneus 417.78 2.85x @@ -277,7 +277,7 @@ - euneus + euneus 644.19 2.59x @@ -327,7 +327,7 @@ - euneus + euneus 9.40 K 1.52x diff --git a/euneus_bench/script/decode_parsed_plugins.exs b/euneus_bench/script/decode_parsed_codecs.exs similarity index 78% rename from euneus_bench/script/decode_parsed_plugins.exs rename to euneus_bench/script/decode_parsed_codecs.exs index fc8908c..7024c2b 100644 --- a/euneus_bench/script/decode_parsed_plugins.exs +++ b/euneus_bench/script/decode_parsed_codecs.exs @@ -2,14 +2,17 @@ Code.eval_file("helper.exs", "./script") opts = :euneus.parse_decode_opts(%{ - plugins: [ - :datetime, - :timestamp, - :pid, - :port, - :reference, - :inet - ] + string: %{ + codecs: [ + :datetime, + :timestamp, + :ipv4, + :ipv6, + :pid, + :port, + :reference + ] + } }) jobs = %{ @@ -42,11 +45,11 @@ inputs = end EuneusBench.Helper.run( - "decode_parsed_plugins", + "decode_parsed_codecs", jobs, inputs, %{ - # markdown: true, + markdown: true # graph: true, # save: true, # parallel: 1, diff --git a/euneus_bench/script/encode_parsed_plugins.exs b/euneus_bench/script/encode_parsed_codecs.exs similarity index 77% rename from euneus_bench/script/encode_parsed_plugins.exs rename to euneus_bench/script/encode_parsed_codecs.exs index e29bd1c..e15362e 100644 --- a/euneus_bench/script/encode_parsed_plugins.exs +++ b/euneus_bench/script/encode_parsed_codecs.exs @@ -2,15 +2,19 @@ Code.eval_file("helper.exs", "./script") opts = :euneus.parse_encode_opts(%{ - plugins: [ - :datetime, - :timestamp, - :pid, - :port, - :proplist, - :reference, - :inet - ] + list: %{ + codecs: [ + :proplist + ] + }, + tuple: %{ + codecs: [ + :datetime, + :timestamp, + :ipv4, + :ipv6 + ] + } }) jobs = %{ @@ -42,11 +46,11 @@ inputs = end EuneusBench.Helper.run( - "encode_parsed_plugins", + "encode_parsed_codecs", jobs, inputs, %{ - # markdown: true, + markdown: true # graph: true, # save: true, # parallel: 1, diff --git a/euneus_test/test/euneus_decoder_test.exs b/euneus_test/test/euneus_decoder_test.exs index b6c8d5f..bc02529 100644 --- a/euneus_test/test/euneus_decoder_test.exs +++ b/euneus_test/test/euneus_decoder_test.exs @@ -81,13 +81,18 @@ defmodule EuneusTest.EuneusDecoderTest do end test "copying strings on decode" do - assert decode!("{}", %{values: :copy}) == %{} + assert decode!("{}", %{string: %{codecs: [:copy]}}) == %{} as = :binary.copy("a", 101) bs = :binary.copy("b", 102) # Copy decode, copies the key assert [{key, value}] = - :maps.to_list(decode!(~s({"#{as}": "#{bs}"}), %{values: :copy, keys: :copy})) + :maps.to_list( + decode!(~s({"#{as}": "#{bs}"}), %{ + string: %{codecs: [:copy]}, + object: %{keys: :copy} + }) + ) assert key == as assert value == bs diff --git a/euneus_test/test/euneus_encoder_test.exs b/euneus_test/test/euneus_encoder_test.exs index acf11a1..08144c8 100644 --- a/euneus_test/test/euneus_encoder_test.exs +++ b/euneus_test/test/euneus_encoder_test.exs @@ -2,7 +2,7 @@ defmodule EuneusTest.EuneusEncoderTest do use ExUnit.Case, async: true test "atom" do - assert encode!(:undefined) == "null" + assert encode!(:null) == "null" assert encode!(true) == "true" assert encode!(false) == "false" assert encode!(:poison) == ~s("poison") @@ -25,17 +25,17 @@ defmodule EuneusTest.EuneusEncoderTest do assert encode!("\"") == ~s("\\"") assert encode!("\0") == ~s("\\u0000") assert encode!(<<31>>) == ~s("\\u001F") - assert encode!("☃a", %{escaper: :unicode}) == ~s("\\u2603a") - assert encode!("𝄞b", %{escaper: :unicode}) == ~s("\\uD834\\uDD1Eb") - assert encode!("\u2028\u2029abc", %{escaper: :javascript}) == ~s("\\u2028\\u2029abc") - assert encode!("", %{escaper: :html}) == ~s("<\\/script>") + assert encode!("☃a", %{escape: :unicode}) == ~s("\\u2603a") + assert encode!("𝄞b", %{escape: :unicode}) == ~s("\\uD834\\uDD1Eb") + assert encode!("\u2028\u2029abc", %{escape: :javascript}) == ~s("\\u2028\\u2029abc") + assert encode!("", %{escape: :html}) == ~s("<\\/script>") - assert encode!(~s(), %{escaper: :html}) == + assert encode!(~s(), %{escape: :html}) == ~s("">>, #{ - escaper => html + escape => html }), {ok, <<"\"\\u2028\\u2029\"">>} = encode_to_bin( unicode:characters_to_binary([8232,8233]), #{ - escaper => javascript + escape => javascript }), {ok, <<"\"\\u2603\"">>} = encode_to_bin(<<"☃"/utf8>>, #{ - escaper => unicode + escape => unicode }), {ok, <<"bar">>} = encode(foo, #{ - escaper => fun (<<"foo">>, _Opts) -> + escape => fun (<<"foo">>, _Opts) -> <<"bar">> end }). -error_handler(Config) when is_list(Config) -> +handle_error(Config) when is_list(Config) -> {error, bar} = encode(foo, #{ - escaper => fun (<<"foo">>, _Opts) -> + escape => fun (<<"foo">>, _Opts) -> throw(foo) end, - error_handler => fun (throw, foo, _Stacktrace) -> + handle_error => fun (throw, foo, _Stacktrace) -> {error, bar} end }). -plugins(Config) when is_list(Config) -> +codecs(Config) when is_list(Config) -> + Opts = euneus_encoder:parse_options_to_settings(#{}), {halt, [$", <<"test::foo">>, $"]} = - euneus_test_plugin:encode({test, foo}, euneus_encoder:parse_opts(#{})), + euneus_test_codec:encode({test, foo}, foo, Opts), next = - euneus_test_plugin:encode({test, bar}, euneus_encoder:parse_opts(#{})), - {error, {unsupported_type, {test, foo}}} = - euneus_encoder:encode({test, foo}, #{}), - {ok, [$", <<"test::foo">>, $"]} = - euneus_encoder:encode({test, foo}, #{plugins => [euneus_test_plugin]}). + euneus_test_codec:encode({test, bar}, bar, Opts), + {ok, <<"[\"test\",\"foo\"]">>} = encode_to_bin({test, foo}, #{}), + {ok, <<"\"test::foo\"">>} = + encode_to_bin({test, foo}, #{ + tuple => #{ + codecs => [{euneus_test_codec, foo}] + } + }). %%%===================================================================== %%% Support functions diff --git a/test/support/euneus_test_plugin.erl b/test/support/euneus_test_codec.erl similarity index 71% rename from test/support/euneus_test_plugin.erl rename to test/support/euneus_test_codec.erl index 246aa4c..9dab913 100644 --- a/test/support/euneus_test_plugin.erl +++ b/test/support/euneus_test_codec.erl @@ -1,7 +1,7 @@ %%%--------------------------------------------------------------------- %%% @copyright 2023 William Fank Thomé %%% @author William Fank Thomé -%%% @doc Test plugin. +%%% @doc Test codec. %%% %%% Copyright 2023 William Fank Thomé %%% @@ -19,24 +19,27 @@ %%% %%% @end %%%--------------------------------------------------------------------- --module(euneus_test_plugin). +-module(euneus_test_codec). --behaviour(euneus_plugin). +-behaviour(euneus_codec). -%% euneus_plugin callbacks +%% euneus_codec callbacks --export([ encode/2, decode/2 ]). +-export([ init/1, encode/3, decode/3 ]). %%%===================================================================== -%%% euneus_plugin callbacks +%%% euneus_codec callbacks %%%===================================================================== -encode({test, foo}, Opts) -> - {halt, euneus_encoder:encode_binary(<<"test::foo">>, Opts)}; -encode(_Term, _Opts) -> +init(Opts) -> + {ok, Opts}. + +encode({test, foo}, foo, Settings) -> + {halt, euneus_encoder:encode_binary(<<"test::foo">>, Settings)}; +encode(_Term, _Opts, _Settings) -> next. -decode(<<"test::foo">>, _Opts) -> +decode(<<"test::foo">>, foo, _Settings) -> {halt, {test, foo}}; -decode(_Bin, _Opts) -> +decode(_Bin, _Opts, _Settings) -> next.