Skip to content

Instantly share code, notes, and snippets.

@akdubya
Created March 27, 2009 21:18
Show Gist options
  • Save akdubya/86908 to your computer and use it in GitHub Desktop.
Save akdubya/86908 to your computer and use it in GitHub Desktop.
URI escaping benchmark
require 'json'
require 'uri'
require 'rack'
require 'cgi'
require 'addressable/uri'
require 'benchmark'
val = { 'arr' => ['foo', 'bar', 'baz', 'bat'], 'bing' => 'blat' }.to_json
n = 100000
Benchmark.bmbm(7) do |x|
x.report("cgi:") { n.times {CGI.escape(val)} }
x.report("uri:") { n.times {URI.escape(val)} }
x.report("rack:") { n.times {Rack::Utils.escape(val)} }
x.report("addr:") { n.times {Addressable::URI.encode_component(val)} }
end
# Ruby 1.9.1
# Rehearsal ------------------------------------------
# cgi: 2.970000 0.000000 2.970000 ( 2.969628)
# uri: 4.270000 0.000000 4.270000 ( 4.284744)
# rack: 3.040000 0.010000 3.050000 ( 3.042311)
# addr: 8.790000 0.010000 8.800000 ( 8.801451)
# -------------------------------- total: 19.090000sec
#
# user system total real
# cgi: 3.020000 0.000000 3.020000 ( 3.034554)
# uri: 4.260000 0.000000 4.260000 ( 4.265980)
# rack: 3.040000 0.010000 3.050000 ( 3.050945)
# addr: 8.800000 0.010000 8.810000 ( 8.810286)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment