public
Created — forked from burke/0-readme.md

ruby-1.9.3-p125 cumulative performance patch.

  • Download Gist
0-readme.md
Markdown

Patched ruby 1.9.3-p0 for 30% faster rails boot

What is?

This script installs a patched version of ruby 1.9.3-p0 with patches to make ruby-debug work again (#47) and boot-time performance improvements (#66 and #68), and runtime performance improvements (#83 and #84).

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://raw.github.com/gist/1688857/rbenv.sh | sh

If you're using rvm:

curl https://raw.github.com/gist/1688857/rvm.sh | sh

(I haven't tested this one, but it should work. Report back if it doesn't!)

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
2-1.9.3-p0-patched.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
falcon_patch_url=
 
build_package_combined_patch() {
local package_name="$1"
 
{
curl https://github.com/ruby/ruby/pull/47.diff | git apply
curl https://raw.github.com/gist/1658360/cumulative_performance.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-p0" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz" combined_patch
rbenv.sh
Shell
1 2 3
VERSION="1.9.3-p0"
curl https://raw.github.com/gist/1688857/2-$VERSION-patched.sh > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf
rvm.sh
Shell
1 2 3 4 5
patchdir=$rvm_path/patches/ruby/1.9.3/p0
mkdir -p $patchdir
curl https://raw.github.com/gist/1658360/cumulative_performance.patch > $patchdir/falcon.patch
rvm install 1.9.3 -n perf --patch $patchdir/falcon.patch
rvm use 1.9.3-perf

Hi there,

I get the following running bundle.

make
compiling ruby_debug.c
ruby_debug.c:29:19: error: conflicting types for ‘rb_iseq_compile_with_option’
/home/gsimpson/.rvm/rubies/ruby-1.9.3-p125-perf/include/ruby-1.9.1/ruby-1.9.3-p125/vm_core.h:505:7: note: previous declaration of ‘rb_iseq_compile_with_option’ was here
ruby_debug.c: In function ‘context_jump’:
ruby_debug.c:2414:53: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
ruby_debug.c:2428:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
make: *** [ruby_debug.o] Error 1

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.