Valentin Mihov's blog

A blog on Ruby, Rails, usability and many other things

Ruby 1.9 vs. Ruby 1.8 Real-life Speed Benchmark, No Database

| Comments

I am writing my blog with sinatra and I can proudly say that it runs with ruby 1.9.1 just fine. Unfortunately the hosting on heroku does not allow using ruby 1.9, so it runs 1.8 in production.

I decided that it will be great to make a benchmark of how the blog runs with the two interpreters. Here are the description and the result.

Configuration

  • Machine: Apple MacBook Pro, 2.5 GHz Intel Core 2 Duo, 4GB 667 MHz DDR2, 250 GB HDD, 5400 RPM, Mac OS X 10.5.7
  • Ruby 1.8.7 p72, 64 bit
  • Ruby 1.9.1 p0, 64 bit
  • Sinatra 0.9.2
  • rdiscount 1.3.4
  • haml 2.0.9
  • thin 1.2.2
  • mongrel 1.1.5
  • nginx 0.7.61 as reverse proxy

The logic behind the test

The page that I tested with was doing the following actions:

  • Open around 18 files from the filesystem and read their first 3 lines
  • Parse the lines using regex
  • Parse some dates from the data read from the files
  • Read 5 of the files in-memory
  • Render some HAML templates with content got from the read files

There is a git repository with the code. It is my blog.

The test candidates

I tested the following configurations:

  • 5 Thin instances running Ruby 1.8 behind nginx reverse proxy
  • 5 Mongrel instances running Ruby 1.8 behind nginx reverse proxy
  • 5 Thin instances running Ruby 1.9 behind nginx reverse proxy

I use thin because this is the only web server, that compiles against ruby 1.9 on my machine. I even had to compile it myself, because of the 64 bit interpreter that I have (also custom compiled).

The tests were performed with concurrency 10 and 1000 requests. Here is the command line I used:

# ab -c 10 -n 1000 http://127.0.0.1:8080/

The results

Setup Req/s ms/request
Ruby 1.8 + thin 19.55 511.599
Ruby 1.8 + mongrel 18.07 553.511
Ruby 1.9 + thin 42.86 233.336

Here are some graphs of the results

Ms per request Requests per second

As you see using ruby 1.9 boosts the performance of the application more than 2 times.

Here are links to the extended info generated by ab:

I will be glad to hear your comments about the test and your experience with ruby 1.9. For the real enthusiasts this site provides info about what gems are 1.9 compatible.

Comments