@@ -2,20 +2,47 @@ using XML: XML
2
2
using EzXML: EzXML
3
3
using XMLDict: XMLDict
4
4
using BenchmarkTools
5
+ using DataFrames
5
6
6
7
7
8
# nasa.xml was downloaded from:
8
9
# http://aiweb.cs.washington.edu/research/projects/xmltk/xmldata/www/repository.html#nasa
9
10
file = joinpath (@__DIR__ , " nasa.xml" )
10
11
11
- # -----------------------------------------------------------------------------# Read
12
- @info " XML.Raw" @benchmark XML. Raw ($ file) # median: 10.083 μs (0.00% GC)
13
- @info " XML.LazyNode" @benchmark XML. LazyNode ($ file) # median: 10.250 μs (0.00% GC)
14
- @info " collect(XML.LazyNode)" @benchmark collect (XML. LazyNode ($ file)) # median 102.149 ms (24.51% GC)
15
- @info " XML.Node" @benchmark Node ($ file) # median: 1.085 s (16.16% GC)
16
- @info " EzXML.readxml" @benchmark EzXML. readxml ($ file) # median: 192.345 ms
17
- @info " XMLDict.xml_dict" @benchmark XMLDict. xml_dict (read ($ file, String)) # median: 1.525 s (GC 23.17%)
18
-
19
- # -----------------------------------------------------------------------------# Iteration
20
- @info " XML.LazyNode iteration" @benchmark (for x in XML. LazyNode ($ file); end ) # 67.547 ms (16.55% GC)
21
- @info " EzXML.StreamReader" @benchmark (reader = open (EzXML. StreamReader, $ file); for x in reader; end ; close (reader)) # median 142.340 ms
12
+
13
+
14
+ # -----------------------------------------------------------------------------# benchmarks
15
+ benchmarks = []
16
+
17
+ @info " XML.Raw"
18
+ push! (benchmarks, " XML.Raw" => @benchmark (read ($ file, XML. Raw)))
19
+
20
+ @info " XML.LazyNode"
21
+ push! (benchmarks, " XML.LazyNode" => @benchmark (read ($ file, LazyNode)))
22
+
23
+ @info " collect(LazyNode)"
24
+ push! (benchmarks, " collect(XML.LazyNode)" => @benchmark (collect (read ($ file, LazyNode))))
25
+
26
+ @info " XML.Node"
27
+ push! (benchmarks, " XML.Node" => @benchmark (read ($ file, Node)))
28
+
29
+ @info " EzXML"
30
+ push! (benchmarks, " EzXML.readxml" => @benchmark (EzXML. readxml ($ file)))
31
+
32
+ @info " XMLDict"
33
+ push! (benchmarks, " XMLDict.xml_dict" => @benchmark (XMLDict. xml_dict (read ($ file, String))))
34
+
35
+ @info " LazyNode iteration"
36
+ push! (benchmarks, " XML.LazyNode iteration" => @benchmark ((for x in read ($ file, LazyNode); end )))
37
+
38
+ @info " EzXML.StreamReader iteration"
39
+ push! (benchmarks, " EzXML.StreamReader" => @benchmark ((reader = open (EzXML. StreamReader, $ file); for x in reader; end ; close (reader))))
40
+
41
+ # -----------------------------------------------------------------------------# make DataFrame
42
+ out = DataFrame ()
43
+
44
+ for (name, bench) in benchmarks
45
+ push! (out, (; name, bench))
46
+ end
47
+
48
+ out
0 commit comments