pukipa2/escape-benchmark.rb

    
  def escapeHTML(string)
    string.gsub(/&/n, '&amp;').gsub(/\"/n, '&quot;').gsub(/>/n, '&gt;').gsub(/</n, '&lt;')
  end

  ESC = {
    '&' => '&amp;',
    '"' => '&quot;',
    '<' => '&lt;',
    '>' => '&gt;'
  }

  def escape(str)
    table = ESC   # optimize
    str.gsub(/[&"<>]/n) {|s| table[s] }
  end

require 'benchmark'

n = (ARGV[0] || 1).to_i
s = 'aaabbbbaaa'
Benchmark.bm(16) {|x|
  x.report('cgi.rb') {
    n.times do
      escapeHTML(s)
    end
  }
  x.report('aamine') {
    n.times do
      escape(s)
    end
  }
}