Skip to content

Instantly share code, notes, and snippets.

@le0pard
Created August 15, 2011 12:41
Show Gist options
  • Select an option

  • Save le0pard/1146148 to your computer and use it in GitHub Desktop.

Select an option

Save le0pard/1146148 to your computer and use it in GitHub Desktop.
Standart ActionController and ActionController::Metal comparison for api (rails 3.1rc5)
class V1Controller < ApplicationController
before_filter :check_some
def index
response_hash = {:a => [1,2,3], :status => "OK"}
respond_to do |format|
format.xml { render :xml => response_hash.to_xml(:root => "response", :dasherize => false, :skip_types => true) }
format.json { render :json => response_hash, :callback => params[:callback] }
end
end
private
def check_some
end
end
$ ab -c 1 -n 1000 -r http://127.0.0.1:3000/v1
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /v1
Document Length: 136 bytes
Concurrency Level: 1
Time taken for tests: 841.027 seconds
Complete requests: 1000
Failed requests: 5
(Connect: 0, Receive: 5, Length: 0, Exceptions: 0)
Write errors: 0
Total transferred: 427000 bytes
HTML transferred: 136000 bytes
Requests per second: 1.19 [#/sec] (mean)
Time per request: 841.027 [ms] (mean)
Time per request: 841.027 [ms] (mean, across all concurrent requests)
Transfer rate: 0.50 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 391 444 31.2 441 622
Processing: 257 397 33.7 399 613
Waiting: 0 0 0.0 0 0
Total: 771 841 40.8 833 1139
Percentage of the requests served within a certain time (ms)
50% 833
66% 844
75% 853
80% 861
90% 886
95% 921
98% 966
99% 1000
100% 1139 (longest request)
class V2Controller < ActionController::Metal
include AbstractController::Callbacks
#include ActionController::Helpers
#helper :all # By default, all helpers should be included
#include ActionController::UrlFor
#include ActionController::Redirecting
include ActionController::Rendering
include ActionController::Renderers::All
#include ActionController::ConditionalGet
include ActionController::Head
include ActionController::RackDelegation
include ActionController::MimeResponds
before_filter :check_some
def index
response_hash = {:a => [1,2,3], :status => "OK"}
respond_to do |format|
format.xml { render :xml => response_hash.to_xml(:root => "response", :dasherize => false, :skip_types => true) }
format.json { render :json => response_hash, :callback => params[:callback] }
end
end
private
def check_some
end
end
$ ab -c 1 -n 1000 -r http://127.0.0.1:3000/v2
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /v2
Document Length: 136 bytes
Concurrency Level: 1
Time taken for tests: 293.075 seconds
Complete requests: 1000
Failed requests: 2
(Connect: 0, Receive: 2, Length: 0, Exceptions: 0)
Write errors: 0
Total transferred: 427000 bytes
HTML transferred: 136000 bytes
Requests per second: 3.41 [#/sec] (mean)
Time per request: 293.075 [ms] (mean)
Time per request: 293.075 [ms] (mean, across all concurrent requests)
Transfer rate: 1.42 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 117 185 37.8 171 307
Processing: 0 108 37.3 123 217
Waiting: 0 0 0.0 0 0
Total: 241 293 16.7 293 423
Percentage of the requests served within a certain time (ms)
50% 293
66% 296
75% 299
80% 300
90% 305
95% 312
98% 334
99% 355
100% 423 (longest request)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment