forked from excon/excon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvs_stdlib.rb
82 lines (65 loc) · 1.47 KB
/
vs_stdlib.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'rubygems' if RUBY_VERSION < '1.9'
require 'sinatra/base'
require 'tach'
require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'excon')
module Excon
class Server < Sinatra::Base
def self.run
Rack::Handler::WEBrick.run(
Excon::Server.new,
:Port => 9292,
:AccessLog => [],
:Logger => WEBrick::Log.new(nil, WEBrick::Log::ERROR)
)
end
get '/data/:amount' do |amount|
'x' * amount.to_i
end
end
end
def with_server(&block)
pid = Process.fork do
Excon::Server.run
end
loop do
sleep(1)
begin
Excon.get('http://localhost:9292/api/foo')
break
rescue
end
end
yield
ensure
Process.kill(9, pid)
end
require 'net/http'
require 'open-uri'
url = 'http://localhost:9292/data/1000'
with_server do
Tach.meter(100) do
tach('Excon') do
Excon.get(url).body
end
# tach('Excon (persistent)') do |times|
# excon = Excon.new(url)
# times.times do
# excon.request(:method => 'get').body
# end
# end
tach('Net::HTTP') do
# Net::HTTP.get('localhost', '/data/1000', 9292)
Net::HTTP.start('localhost', 9292) {|http| http.get('/data/1000').body }
end
# tach('Net::HTTP (persistent)') do |times|
# Net::HTTP.start('localhost', 9292) do |http|
# times.times do
# http.get('/data/1000').body
# end
# end
# end
# tach('open-uri') do
# open(url).read
# end
end
end