Skip to content

Instantly share code, notes, and snippets.

@goosetav
Forked from sxua/0-readme.md
Created October 19, 2012 06:04
Show Gist options
  • Save goosetav/3916460 to your computer and use it in GitHub Desktop.
Save goosetav/3916460 to your computer and use it in GitHub Desktop.
ruby-1.9.3-p194 cumulative performance patch.

WARNING: not functional yet

Patched ruby 1.9.3-p286 for 30% faster rails boot

Overview

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.

and to skaes for the railsexpress patchset for better heap reporting

Requirements

OR

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 https://raw.github.com/gist/3916460/rbenv.sh | sh ; rbenv global 1.9.3-p286-perf-gc

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
build_package_combined_patch() {
local package_name="$1"
{
curl -s -L https://github.com/skaes/rvm-patchsets/raw/master/patches/ruby/1.9.3/p286/railsexpress/02-display-more-detailed-stack-trace.patch | patch -p1
curl -s -L https://github.com/skaes/rvm-patchsets/raw/master/patches/ruby/1.9.3/p286/railsexpress/03-fork-support-for-gc-logging.patch | patch -p1
curl -s -L https://github.com/skaes/rvm-patchsets/raw/master/patches/ruby/1.9.3/p286/railsexpress/04-track-live-dataset-size.patch | patch -p1
curl -s -L https://raw.github.com/gist/2593385/perf_and_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-p286" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz" combined_patch
VERSION="1.9.3-p286"
curl https://raw.github.com/gist/3916460/2-$VERSION-patched.sh > /tmp/$VERSION-perf-gc
rbenv install /tmp/$VERSION-perf-gc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment