Revision: 48676
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 7, 2011 16:26 by Shamaoke
Initial Code
# encoding: utf-8
require 'net/http'
require 'benchmark'
class StatusFetcher
attr_reader :result
def initialize
@result = []
end
def self.start!
new
end
end
class ThreadStatusFetcher < StatusFetcher
def initialize
super
threads = []
%w{ stackoverflow.com
superuser.com
systemfault.com
}.each do |page|
threads << Thread.new(page) do |url|
http = Net::HTTP.new(url, 80)
@result << "#{url}: #{http.get('/').message}"
end
end
threads.each(&:join)
end
end
class SimpleStatusFetcher < StatusFetcher
def initialize
super
%w{ stackoverflow.com
superuser.com
systemfault.com
}.each do |url|
http = Net::HTTP.new(url, 80)
@result << "#{url}: #{http.get('/').message}"
end
end
end
Benchmark.bm(8) do |r|
r.report('simple') { SimpleStatusFetcher.start!.result }
r.report('thread') { ThreadStatusFetcher.start!.result }
end
Initial URL
Initial Description
Connect to three sites using threads and without using them. Fetch the response. Measure the benchmark.
Initial Title
Ruby. Thread benchmark
Initial Tags
ruby
Initial Language
Ruby