Sha256: 0004e67705850adb7963c4ba3772f7a80b9dbf479c3a2006ff0a7d205785569f

Contents?: true

Size: 854 Bytes

Versions: 4

Compression:

Stored size: 854 Bytes

Contents

require 'rubygems'
require 'hpricot'
require 'libxml'
require 'rexml/document'

ITERATIONS = 3
NESTED_ITERATIONS = 5

def bm(name, filename, &block)
  text = File.open(filename).read
  length = text.length / 1024.0 / 1024.0
  puts "#{filename}: #{name} (#{(length * 1024).round} kb)"
  for j in 0 .. NESTED_ITERATIONS
    s = Time.now.to_f
    for i in 0 .. ITERATIONS
      block.call(text)
    end
    timer = Time.now.to_f - s
    puts "\t#{length * ITERATIONS / timer} MB/s"
  end
end

def bm_suite(filenames)
  filenames.each do |filename|    
    bm("LIBXML THROUGHPUT:", filename) do |text|
      XML::Document.file(filename)
    end
    
    bm("HPRICOT THROUGHPUT:", filename) do |text|
      Hpricot.XML(text)
    end
    
    bm("REXML THROUGHPUT:", filename) do |text|
      REXML::Document.new(text)
    end
  end
end

bm_suite("hamlet.xml")

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
libxml-ruby-0.8.0 benchmark/throughput.rb
libxml-ruby-0.8.0-x86-mswin32-60 benchmark/throughput.rb
libxml-ruby-0.8.1 benchmark/throughput.rb
libxml-ruby-0.8.1-x86-mswin32-60 benchmark/throughput.rb