Skip to content

Instantly share code, notes, and snippets.

@acapilleri
Last active December 25, 2015 01:49
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save acapilleri/6898533 to your computer and use it in GitHub Desktop.
Save acapilleri/6898533 to your computer and use it in GitHub Desktop.
Rails App ruby 2.1 MRI vs Rubinius 2.0
Server:
iMac
Mac10,1
Intel Core 2 Duo
3,06 GHz
Cache L2: 3 MB
RAM: 8 GB
bus: 1,07 GHz
App:
> rails new test_app
> rails g scaffold Post author text
Test:
*Start server puma in prod env*
>rails s puma -e production
=> Booting Puma
=> Rails 4.0.0 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma 2.6.0 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:3000
*Start Test*
>ab -n400 -c16 http://127.0.0.1:3000/posts
*Results:*
*Rubinius 2.0.0*
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 400 requests
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /posts
Document Length: 916 bytes
Concurrency Level: 16
Time taken for tests: 5.672 seconds
Complete requests: 400
Failed requests: 0
Write errors: 0
Total transferred: 681600 bytes
HTML transferred: 366400 bytes
Requests per second: 70.52 [#/sec] (mean)
Time per request: 226.877 [ms] (mean)
Time per request: 14.180 [ms] (mean, across all concurrent requests)
Transfer rate: 117.35 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 11
Processing: 7 225 148.2 203 861
Waiting: 7 222 146.9 202 824
Total: 8 225 148.1 204 861
Percentage of the requests served within a certain time (ms)
50% 204
66% 280
75% 322
80% 341
90% 422
95% 521
98% 563
99% 579
100% 861 (longest request)
*MRI*
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 400 requests
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /posts
Document Length: 916 bytes
Concurrency Level: 16
Time taken for tests: 3.187 seconds
Complete requests: 400
Failed requests: 0
Write errors: 0
Total transferred: 681600 bytes
HTML transferred: 366400 bytes
Requests per second: 125.49 [#/sec] (mean)
Time per request: 127.496 [ms] (mean)
Time per request: 7.968 [ms] (mean, across all concurrent requests)
Transfer rate: 208.83 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.2 0 14
Processing: 4 125 75.5 119 394
Waiting: 4 120 73.9 110 394
Total: 4 126 75.6 120 398
Percentage of the requests served within a certain time (ms)
50% 120
66% 149
75% 168
80% 184
90% 235
95% 272
98% 292
99% 357
100% 398 (longest request)
@chuckremes
Copy link

Any chance you can do a test that runs for at least 10 seconds? These short benchmarks make runtimes that use a JIT (like Rubinius and JRuby) look worse than they are in practice.

@pkieltyka
Copy link

yea this test means nothing..

@haggen
Copy link

haggen commented Oct 18, 2013

I'd suggest you to use siege with -i and, as mentioned above, for a little more time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment