Making your ruby fly (alisnic.net)

41 points by alisnic ↗ HN
Inspired by http://spin.atomicobject.com/2012/11/06/is-your-application-running-with-ruby-slow/

11 comments

[ 2.6 ms ] story [ 42.8 ms ] thread
That is 6x improvement in speed. Why cant some of these become default?
IIRR Falcon patches improve 'require' speed which is significant only when you boot up. I think some variation of it will be in 2.0
Please note that this difference is only in this scenario (rake routes), it largely varies in other ones.

Also, a big part of falcon patch is the ruby 2.0 garbage collector, which obviously will be available in ruby 2.0.

2x improvement in my 'rake spec' runtime... not bad!

If you're using rbenv, you can pass CFLAGS to it on the command line, like so: `CFLAGS='-O2' rbenv install ...`

Better than 2x for me adding '-O3':

  time bundle exec parallel_rspec spec/
  ...
  778 examples, 0 failures, 28 pendings
Before - OS X (2.4GHz Core Duo 2):

  Took 319.461302 seconds
  real	5m26.322s
  user	6m16.837s
  sys	0m7.062s
After - OS X (2.4GHz Core Duo 2):

  Took 123.58472 seconds
  real	2m7.208s
  user	2m19.427s
  sys	0m5.414s
Before - Ubuntu (1.8GHz AMD Phenom quad core)

  Took 247.467126561 seconds
  real	4m8.867s
  user	9m41.552s
  sys	0m6.188s
After - Ubuntu (1.8GHz AMD Phenom quad core)

  Took 90.244449901 seconds
  real	1m32.865s
  user	3m41.434s
  sys	0m6.136s
Is that just with the CFLAGS, or did you include the Falcon patches?
CFLAGS (-O3) only!

Nearly factor of 3 improvement.

I think I'll repost this link next week when more people are in work mode. It could save a lot of time and CPU cycles for a lot of people. It's a shame the default isn't better (not sure if it is RVM issue or the Ruby package itself or if I can configure a user/system default build config).

Wow, that's impressive. My results weren't nearly as good - maybe 5-8% or so, but I'm at ~5.4s load time on an app that takes almost 30 sec on vanilla MRI, so that's not too bad.

It is indeed a shame the defaults aren't better. I wonder if there's a reason that it's not default. If not, maybe a pull request is warranted.

for rvm

`rvm install ruby-1.9.3-p286 --patch falcon -n falcon`

Anyone knows the CFlags for EC2 instances?