Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
ruby-1.9.3-p194 cumulative performance patch.

Patched ruby 1.9.3-p194 for 30% faster rails boot

What is?

This script installs a patched version of ruby 1.9.3-p194 with patches for boot-time performance improvements (#66 and #68), and runtime performance improvements (#83 and #84). It also includes the new backported GC from ruby-trunk.

Huge thanks to funny-falcon for the performance patches.

What I need?

  • rbenv
  • ruby-build


  • rvm

How do I do?

If you're using rbenv:

curl | sh && rbenv global 1.9.3-p194-perf

If you're using rvm:

rvm get head && rvm reinstall 1.9.3-perf --patch falcon


Putting the following in your shell config (eg. ~/.bash_profile) will make Rails even faster, but will increase its memory footprint:

export RUBY_HEAP_MIN_SLOTS=1000000
export RUBY_GC_MALLOC_LIMIT=1000000000
export RUBY_HEAP_FREE_MIN=500000
build_package_combined_patch() {
local package_name="$1"
curl | patch -p1
./configure --prefix="$PREFIX_PATH" $CONFIGURE_OPTS
make -j 8
make install
} >&4 2>&1
install_package "yaml-0.1.4" ""
install_package "ruby-1.9.3-p194" "" combined_patch
curl$ > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf

On Mac OS X Mountain Lion you'll have to remove the require_gcc to work

woahdae commented Jul 31, 2012

Install went smoothly, but surprisingly 1.9.3-p194-perf loads rails a little less than a second slower than my falcon-patched 1.9.3-p0...

without perf

[10:36] time rails runner "puts 'hello world'"
hello world

real 0m7.699s
user 0m3.910s
sys 0m1.243s

with perf

[10:37] time rails runner "puts 'hello world'"
hello world

real 0m3.347s
user 0m2.441s
sys 0m0.893s



sj26 commented Aug 2, 2012

@cristianbico or install apple-gcc42 from homebrew.

my results are here:

massive diff

On rvm, this is slower than the un-patched rubies for me (OSX 10.8.2) -- rails boots ~25% slower. What am I doing wrong?


hello world
14.35 real 11.72 user 1.66 sys


hello world
11.31 real 9.58 user 1.27 sys

So, 3 seconds off a 14-second startup. Probably not going to push this to production or anything.

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