Create a gist now

Instantly share code, notes, and snippets.

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

Patch for ruby 1.9.3-p327 is here:

Patched ruby 1.9.3-p286 for 30% faster rails boot


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

Many thanks to funny-falcon for the performance patches.



You will also need a C Compiler. If you're on Linux, you probably already have one or know how to install one. On OS X, you should install XCode, and brew install autoconf using homebrew.

Ok, let's do this!

If you're using rbenv:

curl | sh ; rbenv global 1.9.3-p286-perf

If you're using rvm:

rvm get head && rvm reinstall 1.9.3-perf --patch falcon --force-autoconf -j 3


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=100000000
export RUBY_HEAP_FREE_MIN=500000

Also, you might want to try out Zeus, which takes advantage of the patched GC to preload your rails app. It can effectively boot your tests (and consoles, servers, runners...) in half a second, no matter the size of your app.

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-p286" "" combined_patch
curl$ > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf

jjb commented Oct 16, 2012

this worked for me, thanks! you should change the description name to the new p number :)

The description still says p194.


sxua commented Nov 13, 2012

Patch for ruby 1.9.3-p327 is here:

ryansch commented Nov 15, 2012

Why is the p327 patch so different? It doesn't appear to be based on funny-falcon's work like all the other perf patches.

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