Permalink
Fetching contributors…
Cannot retrieve contributors at this time
executable file 58 lines (49 sloc) 1.34 KB
#!/usr/bin/env ruby -wW1
$LOAD_PATH << '.'
$LOAD_PATH << '../lib'
if __FILE__ == $PROGRAM_NAME
while (i = ARGV.index('-I'))
_, path = ARGV.slice!(i, 2)
$LOAD_PATH << path
end
end
require 'optparse'
require 'stringio'
require 'multi_xml'
%w(libxml nokogiri ox).each do |library|
begin
require library
rescue LoadError
next
end
end
$verbose = 0
$parsers = []
$iterations = 10
opts = OptionParser.new
opts.on('-v', 'increase verbosity') { $verbose += 1 }
opts.on('-p', '--parser [String]', String, 'parser to test') { |parsers| $parsers = [parsers] }
opts.on('-i', '--iterations [Int]', Integer, 'iterations') { |iterations| $iterations = iterations }
opts.on('-h', '--help', 'Show this display') { puts opts; Process.exit!(0) }
files = opts.parse(ARGV)
if $parsers.empty?
$parsers << 'libxml' if defined?(::LibXML)
$parsers << 'nokogiri' if defined?(::Nokogiri)
$parsers << 'ox' if defined?(::Ox)
end
files.each do |filename|
times = {}
xml = File.read(filename)
$parsers.each do |p|
MultiXml.parser = p
start = Time.now
$iterations.times do
io = StringIO.new(xml)
MultiXml.parse(io)
end
times[p] = Time.now - start
end
times.each do |p, t|
puts format('%8s took %0.3f seconds to parse %s %d times.', p, t, filename, $iterations)
end
end