Benchmarks¶
Benchmarks are in the bench folder, and they can be run with the following
commands, where {iters} is the number of iterations to run (defaults to
100). They use the luamark module
lx add lua-cjson dkjson lpeg luamark
# time benchmarks
lx lua bench/time.lua {iters}
# memory benchmarks
lx lua bench/mem.lua {iters}
Here is a comparison between cjson and dkjson (with the lpeg extension enabled):
Time:
--------------------
Encoding (Time): 10000 iters
--------------------
pretty=false
Name Rank Relative Median Ops
------ ---- ---------------- ------------- ------
cjson 1 █ 1x 12ms ± 500us 83.3/s
rsjson 2 ██ ↓4.42x 53ms ± 500us 18.9/s
dkjson 3 ████████ ↓13.67x 164ms ± 500us 6.1/s
# NOTE: cjson does not have a pretty-print option
pretty=true
Name Rank Relative Median Ops
------ ---- ---------------- ------------- ------
cjson 1 █ 1x 12ms ± 500us 83.3/s
rsjson 2 ██ ↓4.92x 59ms 16.9/s
dkjson 3 ████████ ↓15.25x 183ms ± 500us 5.5/s
--------------------
Decoding (Time): 10000 iters
--------------------
Name Rank Relative Median Ops
------ ---- --------------- ------ ------
cjson 1 █ 1x 21ms 47.6/s
rsjson 2 ██████ ↓4.05x 85ms 11.8/s
dkjson 3 ████████ ↓5.14x 108ms 9.3/s
Memory:
--------------------
Encoding (Mem): 10000 iters
--------------------
Name Rank Relative Median
------ ---- --------------- ----------
rsjson 1 █████ 1x 13kB ± 4kB
cjson 2 ██████ ↓1.34x 18kB
dkjson 3 ████████ ↓1.54x 21kB
--------------------
Decoding (Mem): 10000 iters
--------------------
Name Rank Relative Median
------ ---- --------------- ----------
dkjson ≈1 ███████ 1x 19kB ± 7kB
cjson ≈1 ███████ ↓1.02x 20kB ± 9kB
rsjson 3 ████████ ↓1.02x 20kB