Skip to content

Commit fe7f3f6

Browse files
committed
Add benchmarks.
1 parent 6bbfc71 commit fe7f3f6

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

tests/bench.nim

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import benchy, random, json, jsony, eminim, streams, jsutils/jsons
2+
3+
type Node = ref object
4+
kind: string
5+
name: string
6+
id: int
7+
kids: seq[Node]
8+
9+
var r = initRand(2020)
10+
var genId: int
11+
proc genTree(depth: int): Node =
12+
result = Node()
13+
result.id = genId
14+
inc genId
15+
result.name = "node" & $result.id
16+
result.kind = "NODE"
17+
if depth > 0:
18+
for i in 0 .. r.rand(0..3):
19+
result.kids.add genTree(depth - 1)
20+
21+
var tree = genTree(10)
22+
var treeStr = pretty %tree
23+
24+
echo genId, " node tree:"
25+
26+
timeIt "treeform/jsony":
27+
keep jsony.fromJson[Node](treeStr)
28+
29+
timeIt "nim std/json":
30+
keep parseJson(treeStr).to(Node)
31+
32+
timeIt "treeform/jsutils/jsons":
33+
keep jsons.fromJson(parseJson(treeStr), Node)
34+
35+
timeIt "planetis-m/eminim":
36+
keep newStringStream(treeStr).jsonTo(Node)

0 commit comments

Comments
 (0)