Skip to content

Instantly share code, notes, and snippets.

@himynameisjonas
Forked from burke/0-readme.md
Last active October 13, 2015 05:48
Show Gist options
  • Save himynameisjonas/4148846 to your computer and use it in GitHub Desktop.
Save himynameisjonas/4148846 to your computer and use it in GitHub Desktop.
ruby-1.9.3-p385 cumulative performance patch for rbenv

Patched ruby 1.9.3-p327 for 30% faster rails boot

Overview

This script installs a patched version of ruby 1.9.3-p327 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.

Requirements

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!

curl https://raw.github.com/gist/1688857/rbenv.sh | sh ; rbenv global 1.9.3-p327-perf

BONUS!

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_HEAP_SLOTS_INCREMENT=1000000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=100000000
export RUBY_HEAP_FREE_MIN=500000

More BONUS!

If you're feeling adventurous, you can set some additional optimization flags before you run the command above. These make the compiled ruby a little faster, but sometimes cause the build to fail, depending on a lot of different factors.

export CFLAGS="-march=native -O3 -pipe -fomit-frame-pointer"
build_package_combined_patch() {
local package_name="$1"
{
curl https://raw.github.com/gist/4136373/falcon-gc.diff | patch -p1
autoconf
./configure --prefix="$PREFIX_PATH" $CONFIGURE_OPTS
make -j 8
make install
} >&4 2>&1
}
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
install_package "ruby-1.9.3-p327" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz" combined_patch
VERSION="1.9.3-p327"
curl https://raw.github.com/gist/1688857/2-$VERSION-patched.sh > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment