Rails version 0.14 contains a large number of performance oriented implementation changes, contributed by the author of railsbench. This report compares the previous release Rails 0.13.1 against Rails 0.14.
Rails 0.14 runs the tested application much faster than 0.13.1. I suspect that most apps will see gains similar to the ones reported here.
Each test was run using railsbench on an Athlon64 3000+ with 1G of memory using Suse9.3, ruby 1.8.2 and Mysql 4.1, with RAILS_PERF_RUNS=5. For session storage, Mysql using mysql-ruby-2.7 was employed and Rails logging was disabled.
A number of configuration options were tested:
For the tests, I selected a number of pages from my recipe database application:
/empty/index | a simple render_text |
/welcome/index | a welcome page, action cached |
/rezept/index | application front page, user dependent, action cached |
/rezept/myknzlpzl | my recipes, user dependent, action cached |
/rezept/show/713 | show recipe 713 |
/rezept/cat/Hauptspeise | show all recipes of category Hauptspeise, paginated |
/rezept/cat/Hauptspeise?page=5 | page 5 of category Hauptspeise |
/rezept/letter/G | all recipes with a title starting with G |
Performance data for each configuration can be found here.
One on one comparisons produced by script perf_comp for each configuration are listed in this file.
Logs of the the test runs:
This one shows how well 0.14 does against 0.13.1, with no options, gc100 and patched GC. The numbers are requests per second.
This one shows how well a fully optimized 0.14 does against 0.13.1, with no options, gc100 and patched GC.
This one shows the speedup of all tuning options applied to 0.14, for the different GC options.
This one shows the speedup obtained by applying different tuning options to 0.14, all running with patched GC.