File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ loop_count : 100
2+ contexts :
3+ - gems :
4+ rexml : 3.2.6
5+ require : false
6+ prelude : require 'rexml'
7+ - name : master
8+ prelude : |
9+ $LOAD_PATH.unshift(File.expand_path("lib"))
10+ require 'rexml'
11+ - name : 3.2.6(YJIT)
12+ gems :
13+ rexml : 3.2.6
14+ require : false
15+ prelude : |
16+ require 'rexml'
17+ RubyVM::YJIT.enable
18+ - name : master(YJIT)
19+ prelude : |
20+ $LOAD_PATH.unshift(File.expand_path("lib"))
21+ require 'rexml'
22+ RubyVM::YJIT.enable
23+
24+ prelude : |
25+ require 'rexml/document'
26+ require 'rexml/parsers/sax2parser'
27+ require 'rexml/parsers/pullparser'
28+ require 'rexml/parsers/streamparser'
29+ require 'rexml/streamlistener'
30+
31+ def build_xml(n_depth)
32+ xml = "<?xml version=\"1.0\"?>\n" +
33+ "<root>Test</root>\n" +
34+ "<!" + "[CDATA[" * n_depth + "]]>\n"
35+ end
36+ xml = build_xml(100000)
37+
38+ class Listener
39+ include REXML::StreamListener
40+ end
41+
42+ benchmark :
43+ ' dom' : REXML::Document.new(xml)
44+ ' sax' : REXML::Parsers::SAX2Parser.new(xml).parse
45+ 'pull' : |
46+ parser = REXML::Parsers::PullParser.new(xml)
47+ while parser.has_next?
48+ parser.pull
49+ end
50+ ' stream' : REXML::Parsers::StreamParser.new(xml, Listener.new).parse
You can’t perform that action at this time.
0 commit comments