Great news everyone! Ruby 2.2 preview 1 has been released ! I'm really curios about the Incremental GC and Symbol GC so let's run some quick Rails benchmarks on a normal Rails API app.
First off let's install the preview via RVM:
rvm install ruby-2.2.0-preview1
After fiddling around about five minutes trying to find a part of the application that doesn't fail under the Preview I stopped at the simple
/profiles endpoint that just renders a JSON of all profiles, quite simple indeed. Using the trusty wrk I fired up a quick bench:
wrk -t10 -c10 -d20s http://localhost:8080/profiles
The results are as follows:
Running 20s test @ http://localhost:8080/profiles 10 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 255.02ms 25.10ms 372.80ms 67.61% Req/Sec 3.21 0.70 5.00 71.13% 771 requests in 20.01s, 4.40MB read Requests/sec: 38.53 Transfer/sec: 225.31KB ------------------------------ 50%,252 ms 90%,285 ms 99%,328 ms 99.999%,372 ms
Running 20s test @ http://localhost:8080/profiles 10 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 253.27ms 30.64ms 344.75ms 64.21% Req/Sec 3.34 0.70 5.00 89.63% 786 requests in 20.02s, 4.49MB read Requests/sec: 39.26 Transfer/sec: 229.60KB ------------------------------ 50%,251 ms 90%,291 ms 99%,329 ms 99.999%,344 ms
I'm not really sure that I should interpret them yet it seems that under the Preview we have a slight improvement but within margins of error. At this point I don't think is the best benchmark for the Preview as we don't use views thus Rails won't bloat up the memory with Strings.
On the memory usage side we have 65M vs 75M (Preview vs. 2.1) so in this scenario we clearly have a winner.
note: this was measured using OSX's Activity Monitor after wrk finished the benchmark and it's the average of the unicorn workers sizes.
Bundler and all the gems installed without issue but in some cases I got silent failures. The benchmarks were run on an actual working/production Rails 4.0.x app with around 25 gems. Nonetheless all of the gems installed and I could boot up Rails with unicorn and benchmark the simpler endpoints which is great.
TBD - this is work in progress I will update it with more information