require 'benchmark'
require 'open-uri'
require 'rubygems'
require 'curb'
require 'threadify'
n = 42
threads = 8
Benchmark.benchmark do |bm|
bm.report 'shelling out to curl' do
n.times do
`curl --silent --location http://google.com`
end
end
bm.report 'curl via api' do
curl = Curl::Easy.new 'http://google.com'
curl.follow_location = true
n.times do
curl.perform
curl.body_str
end
end
bm.report 'open-uri' do
n.times do
open('http://google.com'){|socket| socket.read}
end
end
bm.report 'shelling out to curl - with threadify' do
Array.new(n).threadify(threads) do
`curl --silent --location http://google.com`
end
end
bm.report 'curl via api - with threadify' do
Array.new(n).threadify(threads) do
curl = Curl::Easy.new 'http://google.com'
curl.follow_location = true
curl.perform
curl.body_str
end
end
bm.report 'open-uri - with threadify' do
Array.new(n).threadify(threads) do
open('http://google.com'){|socket| socket.read}
end
end
end
__END__