Skip to content

Instantly share code, notes, and snippets.

@lukaszx0
Last active December 21, 2015 10:39
Show Gist options
  • Save lukaszx0/6293709 to your computer and use it in GitHub Desktop.
Save lukaszx0/6293709 to your computer and use it in GitHub Desktop.
Rails benchmark with and without ActionView

Some quick benchmarks on extracting ActionView from ActionPack. There are performance gains in both development and production envs, but not that significant.

AB Results

Requests per second [#/sec] (mean)
Development (with AV) 330.23
Development (without AV) 331.61
Development Edge Master (b77f25cb8479a8ff6c93b1d6bbf0771e5368434f) 276.66
Production (with AV) 423.98
Production (without AV) 444.19
Production Edge Master (b77f25cb8479a8ff6c93b1d6bbf0771e5368434f) 340.43

Workstation: MacBook Air, 4gb ram, 1.8ghz i5 cpu

Rails Simple Benchmark

https://github.com/wycats/rails-simple-benches

~/projects/rails/actionpack/rails-simple-benches-master extract_renderers⚡› ruby minimal.rb 
.........
 overhead index template_1 partial partial_10 coll_10 partial_100 coll_100 uniq_100 diff_100
      145   219        282     301       1111     594        8735     3223     3451     6149

~/projects/rails/actionpack/rails-simple-benches-master extract_renderers⚡› git co master
Switched to branch 'master'

~/projects/rails/actionpack/rails-simple-benches-master master⚡› ruby minimal.rb
.........
 overhead index template_1 partial partial_10 coll_10 partial_100 coll_100 uniq_100 diff_100
      141   243        315     328       1127     589        8785     3215     3476     6593

~ › ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 180.726 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19801584 bytes
HTML transferred: 600048 bytes
Requests per second: 276.66 [#/sec] (mean)
Time per request: 180.726 [ms] (mean)
Time per request: 3.615 [ms] (mean, across all concurrent requests)
Transfer rate: 107.00 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 48
Processing: 94 180 42.8 167 548
Waiting: 54 145 36.0 135 443
Total: 94 181 43.0 167 548
Percentage of the requests served within a certain time (ms)
50% 167
66% 181
75% 190
80% 197
90% 230
95% 263
98% 318
99% 362
100% 548 (longest request)
~ › ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 151.407 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19800396 bytes
HTML transferred: 600012 bytes
Requests per second: 330.23 [#/sec] (mean)
Time per request: 151.407 [ms] (mean)
Time per request: 3.028 [ms] (mean, across all concurrent requests)
Transfer rate: 127.71 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.2 0 55
Processing: 30 151 23.5 144 270
Waiting: 6 122 21.7 109 224
Total: 30 151 23.5 145 271
Percentage of the requests served within a certain time (ms)
50% 145
66% 163
75% 166
80% 169
90% 182
95% 198
98% 206
99% 214
100% 271 (longest request)
~ › ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 150.781 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19850000 bytes
HTML transferred: 600000 bytes
Requests per second: 331.61 [#/sec] (mean)
Time per request: 150.781 [ms] (mean)
Time per request: 3.016 [ms] (mean, across all concurrent requests)
Transfer rate: 128.56 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.3 0 80
Processing: 98 150 25.8 143 337
Waiting: 76 121 23.6 117 295
Total: 106 151 25.8 143 337
Percentage of the requests served within a certain time (ms)
50% 143
66% 152
75% 165
80% 173
90% 186
95% 197
98% 213
99% 232
100% 337 (longest request)
class PagesController < ApplicationController
def index
render text: "Hello World!"
end
end
› ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 146.874 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19800000 bytes
HTML transferred: 600000 bytes
Requests per second: 340.43 [#/sec] (mean)
Time per request: 146.874 [ms] (mean)
Time per request: 2.937 [ms] (mean, across all concurrent requests)
Transfer rate: 131.65 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.6 0 65
Processing: 60 146 34.5 139 378
Waiting: 23 118 30.2 111 307
Total: 61 147 34.6 139 379
Percentage of the requests served within a certain time (ms)
50% 139
66% 154
75% 164
80% 172
90% 193
95% 210
98% 237
99% 264
100% 379 (longest request)
~ › ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 117.930 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19800000 bytes
HTML transferred: 600000 bytes
Requests per second: 423.98 [#/sec] (mean)
Time per request: 117.930 [ms] (mean)
Time per request: 2.359 [ms] (mean, across all concurrent requests)
Transfer rate: 163.96 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 86
Processing: 74 117 30.9 100 258
Waiting: 37 95 28.3 80 235
Total: 77 118 30.9 101 258
Percentage of the requests served within a certain time (ms)
50% 101
66% 126
75% 131
80% 134
90% 167
95% 186
98% 202
99% 209
100% 258 (longest request)
~ › ab -n 50000 -c 50 "http://127.0.0.1:3000/"
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 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
2Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: thin
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 112.564 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 19851985 bytes
HTML transferred: 600060 bytes
Requests per second: 444.19 [#/sec] (mean)
Time per request: 112.564 [ms] (mean)
Time per request: 2.251 [ms] (mean, across all concurrent requests)
Transfer rate: 172.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.3 0 99
Processing: 54 112 30.6 104 262
Waiting: 17 91 28.0 85 230
Total: 54 113 30.6 104 263
Percentage of the requests served within a certain time (ms)
50% 104
66% 110
75% 115
80% 121
90% 171
95% 183
98% 195
99% 209
100% 263 (longest request)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment