Sha256: 9396573a37f96ea5f247ff89ed22ee21c79af74ea8cf9939ef32b83eeda26ec9

Contents?: true

Size: 916 Bytes

Versions: 103

Compression:

Stored size: 916 Bytes

Contents

require 'benchmark'
require 'rubygems'
require 'nokogiri'

class Parser < Nokogiri::XML::SAX::Document

  attr_reader :response

  def initialize
    reset
  end

  def reset
    @item = {}
    @response = { :items => [] }
  end

  def characters(string)
    @value << string.strip
  end

  def start_element(name, attrs = [])
    @value = nil
  end

  def end_element(name)
    case name
    when 'item'
      @response[:items] << @item
      @item = {}
    when 'key'
      @item[:key] = @value
    end
  end

end

data = <<-DATA
<items>
  <item>
    <key>value</key>
  </item>
</items>
DATA

COUNT = 100

Benchmark.bmbm(25) do |bench|
  bench.report('parse') do
    parser = Parser.new
    Nokogiri::XML::SAX::Parser.new(parser).parse(data)
    parser.response
  end

  bench.report('push') do
    parser = Parser.new
    Nokogiri::XML::SAX::PushParser.new(parser).write(data, true)
    parser.response
  end
end

Version data entries

103 entries across 103 versions & 4 rubygems

Version Path
fog-0.7.2 benchs/parse_vs_push.rb
fog-0.7.1 benchs/parse_vs_push.rb
fog-0.7.0 benchs/parse_vs_push.rb
fog-0.6.0 benchs/parse_vs_push.rb
fog-0.5.3 benchs/parse_vs_push.rb
fog-0.5.2 benchs/parse_vs_push.rb
fog-0.5.1 benchs/parse_vs_push.rb
fog-0.5.0 benchs/parse_vs_push.rb
phpfog-fog-0.4.1.3 benchs/parse_vs_push.rb
phpfog-fog-0.4.1.2 benchs/parse_vs_push.rb
phpfog-fog-0.4.1.1 benchs/parse_vs_push.rb
phpfog-fog-0.4.1 benchs/parse_vs_push.rb
fog-0.4.1 benchs/parse_vs_push.rb
fog-0.4.0 benchs/parse_vs_push.rb
fog-0.3.34 benchs/parse_vs_push.rb
fog-0.3.33 benchs/parse_vs_push.rb
fog-0.3.32 benchs/parse_vs_push.rb
fog-0.3.31 benchs/parse_vs_push.rb
fog-0.3.30 benchs/parse_vs_push.rb
fog-0.3.29 benchs/parse_vs_push.rb