@@ -2,20 +2,47 @@ using XML: XML
22using EzXML: EzXML
33using XMLDict: XMLDict
44using BenchmarkTools
5+ using DataFrames
56
67
78# nasa.xml was downloaded from:
89# http://aiweb.cs.washington.edu/research/projects/xmltk/xmldata/www/repository.html#nasa
910file = joinpath (@__DIR__ , " nasa.xml" )
1011
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