You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.2 KiB
104 lines
2.2 KiB
# encoding: utf-8
|
|
# frozen_string_literal: true
|
|
require 'ethon'
|
|
require 'open-uri'
|
|
require 'patron'
|
|
require 'curb'
|
|
require 'net/http'
|
|
require 'cgi'
|
|
require 'benchmark/ips'
|
|
|
|
require_relative '../spec/support/server'
|
|
require_relative '../spec/support/localhost_server'
|
|
|
|
LocalhostServer.new(TESTSERVER.new, 3000)
|
|
LocalhostServer.new(TESTSERVER.new, 3001)
|
|
LocalhostServer.new(TESTSERVER.new, 3002)
|
|
|
|
url = 'http://localhost:3000/'.freeze
|
|
uri = URI.parse('http://localhost:3000/').freeze
|
|
ethon = Ethon::Easy.new(url: url)
|
|
patron = Patron::Session.new
|
|
patron_url = Patron::Session.new(base_url: url)
|
|
curb = Curl::Easy.new(url)
|
|
|
|
puts '[Creation]'
|
|
Benchmark.ips do |x|
|
|
x.report('String.new') { '' }
|
|
x.report('Easy.new') { Ethon::Easy.new }
|
|
end
|
|
|
|
puts '[Escape]'
|
|
Benchmark.ips do |x|
|
|
x.report('CGI.escape') { CGI.escape("まつもと") }
|
|
x.report('Easy.escape') { ethon.escape("まつもと") }
|
|
end
|
|
|
|
puts '[Requests]'
|
|
Benchmark.ips do |x|
|
|
x.report('net/http') { Net::HTTP.get_response(uri) }
|
|
x.report('open-uri') { open url }
|
|
|
|
x.report('patron') do
|
|
patron.base_url = url
|
|
patron.get('/')
|
|
end
|
|
|
|
x.report('patron reuse') { patron_url.get('/') }
|
|
|
|
x.report('curb') do
|
|
curb.url = url
|
|
curb.perform
|
|
end
|
|
|
|
x.report('curb reuse') { curb.perform }
|
|
|
|
x.report('Easy.perform') do
|
|
ethon.url = url
|
|
ethon.perform
|
|
end
|
|
|
|
x.report('Easy.perform reuse') { ethon.perform }
|
|
end
|
|
|
|
puts "[ 4 delayed Requests ]"
|
|
Benchmark.ips do |x|
|
|
x.report('net/http') do
|
|
3.times do |i|
|
|
uri = URI.parse("http://localhost:300#{i}/?delay=1")
|
|
Net::HTTP.get_response(uri)
|
|
end
|
|
end
|
|
|
|
x.report("open-uri") do
|
|
3.times do |i|
|
|
open("http://localhost:300#{i}/?delay=1")
|
|
end
|
|
end
|
|
|
|
x.report("patron") do
|
|
sess = Patron::Session.new
|
|
3.times do |i|
|
|
sess.base_url = "http://localhost:300#{i}/?delay=1"
|
|
sess.get("/")
|
|
end
|
|
end
|
|
|
|
x.report("Easy.perform") do
|
|
easy = Ethon::Easy.new
|
|
3.times do |i|
|
|
easy.url = "http://localhost:300#{i}/?delay=1"
|
|
easy.perform
|
|
end
|
|
end
|
|
|
|
x.report("Multi.perform") do
|
|
multi = Ethon::Multi.new
|
|
3.times do |i|
|
|
easy = Ethon::Easy.new
|
|
easy.url = "http://localhost:300#{i}/?delay=1"
|
|
multi.add(easy)
|
|
end
|
|
multi.perform
|
|
end
|
|
end
|
|
|