Sha256: 840c2a6d51d825e47cd689bd1c914d0e1798e3004b84a1a18eaa896b993c1dd6

Contents?: true

Size: 1.52 KB

Versions: 5

Compression:

Stored size: 1.52 KB

Contents

require 'benchmark'
require 'net/http'
require 'eventmachine'
require 'em-http'
require 'active_support/all'

{ :test => :a }.to_json

n = 1_000
uri = URI("http://localhost:3000/")

Benchmark.bm do |benchmark|
  
  benchmark.report "single start block" do
    
    Net::HTTP.start(uri.host, uri.port) do |http|
      0.upto(n) do
        request = Net::HTTP::Get.new(uri.request_uri)
        response = http.request(request)
      end
    end
    
  end
  
  benchmark.report "straight http object" do
    
    Net::HTTP.start(uri.host, uri.port) do |http|
      0.upto(n) do
        http.get(uri.request_uri)
      end
    end
    
  end
  
  benchmark.report "new start block" do
    
    0.upto(n) do
      Net::HTTP.start(uri.host, uri.port) do |http|
        request = Net::HTTP::Get.new(uri.request_uri)
        response = http.request(request)
      end
    end
    
  end
  
  class EventMachineLoop
    def initialize loops
      @total_loops, @loops = loops, 0
    end
    
    def request!
      http = EventMachine::HttpRequest.new('http://localhost:3000').get
      http.callback { |http|
        @loops += 1
        http.response
        all_requests_done? ? EM.stop : request!
      }
      http.errback { |http|
        puts "EventMachine Request Error: #{http.error} #{http.inspect}"
        EM.stop
      }
    end
    
    def all_requests_done?
      @loops >= @total_loops
    end
  end
  
  benchmark.report "em sync" do
    
    looper = EventMachineLoop.new(n)
    EventMachine.run {
      looper.request!
    }
    
  end
  
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bigbench-0.0.6 dev/net_http.rb
bigbench-0.0.5 dev/net_http.rb
bigbench-0.0.4 dev/net_http.rb
bigbench-0.0.3 dev/net_http.rb
bigbench-0.0.2 dev/net_http.rb