Skip to content

Instantly share code, notes, and snippets.

@andreimaxim
Forked from mattyoho/0-readme.md
Last active August 29, 2015 14:03
Show Gist options
  • Save andreimaxim/929dcdf527cc3b47b8f3 to your computer and use it in GitHub Desktop.
Save andreimaxim/929dcdf527cc3b47b8f3 to your computer and use it in GitHub Desktop.

Patched ruby 1.9.3-p125 for 30% faster rails boot

What is?

This script installs a patched version of ruby 1.9.3-p125 with patches to make ruby-debug work again (#47) and 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

OR

  • rvm

How do I do?

If you're using rbenv:

curl https://gist.github.com/andreimaxim/929dcdf527cc3b47b8f3/raw/514240f4280d99db9ed8b8d98d3d2af989733d21/rbenv.sh | sh

If you're using rvm:

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

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=1000000000
export RUBY_HEAP_FREE_MIN=500000
build_package_combined_patch() {
local package_name="$1"
{
curl https://github.com/ruby/ruby/pull/47.diff | git apply
curl https://gist.githubusercontent.com/funny-falcon/1859082/raw/0fc4a6cbe6b3a9d6c8a215b78053095b601722f5/performance_and_backport_gc.patch | patch -p1
autoconf
./configure --prefix="$PREFIX_PATH" $CONFIGURE_OPTS
make -j 8
make install
} >&4 2>&1
}
require_gcc
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
install_package "ruby-1.9.3-p125" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz" combined_patch
VERSION="1.9.3-p125"
curl https://gist.githubusercontent.com/andreimaxim/929dcdf527cc3b47b8f3/raw/2e84cf64b430f3023db646f4c35a317bcb3a842c/2-$VERSION-patched.sh > /tmp/ruby-$VERSION-perf
rbenv install /tmp/ruby-$VERSION-perf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment