Skip to content

Instantly share code, notes, and snippets.

@sj26
Forked from burke/0-readme.md
Created May 5, 2012 05:39
Show Gist options
  • Select an option

  • Save sj26/2600122 to your computer and use it in GitHub Desktop.

Select an option

Save sj26/2600122 to your computer and use it in GitHub Desktop.
ruby-1.9.3-p194 cumulative performance patch.

Ruby 1.9.3-p0 with ruby-debug19 and performance patches

What is?

This includes the ruby-debug patch Jonathan probably sent you (if you work at Shopify...), and a bunch of performance fixes by Sokolov Yura, aka. funny-falcon. Somebody buy that man a beer.

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, switch to rbenv. Alternatively:

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!)

Also, putting the following in your shell config (eg. ~/.bash_profile) will make Rails even faster, but will increase its memory footprint a bit:

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
falcon_patch_url=https://raw.github.com/gist/1658360/cumulative_performance.patch
build_package_combined_patch() {
local package_name="$1"
echo "*** Applying debug patch"
git apply <( curl https://github.com/ruby/ruby/pull/47.diff )
echo "*** Applying performance patches"
curl $falcon_patch_url | patch -p1
echo "*** Building"
autoconf
./configure --prefix="$PREFIX_PATH" $CONFIGURE_OPTS
make -j 8
make install
}
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
VERSION="1.9.3-p0"
curl https://raw.github.com/gist/1688857/2-$VERSION-patched.sh > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf
curl https://raw.github.com/gist/1658360/cumulative_performance.patch > $rvm_path/patches/ruby/1.9.3/p0/falcon.patch
rvm install 1.9.3 -n perf --patch falcon
rvm use 1.9.3-perf
@cristianbica
Copy link

On Mac OS X Mountain Lion you'll have to remove the require_gcc to work

@woahdae
Copy link

woahdae commented Jul 31, 2012

Install went smoothly, but surprisingly 1.9.3-p194-perf loads rails a little less than a second slower than my falcon-patched 1.9.3-p0...

@pedrocarrico
Copy link

without perf

[10:36] time rails runner "puts 'hello world'"
hello world

real 0m7.699s
user 0m3.910s
sys 0m1.243s

with perf

[10:37] time rails runner "puts 'hello world'"
hello world

real 0m3.347s
user 0m2.441s
sys 0m0.893s

Thanks!

@sj26
Copy link
Author

sj26 commented Aug 2, 2012

@cristianbico or install apple-gcc42 from homebrew.

@SamSaffron
Copy link

my results are here: https://gist.github.com/3364771

massive diff

@hypomodern
Copy link

On rvm, this is slower than the un-patched rubies for me (OSX 10.8.2) -- rails boots ~25% slower. What am I doing wrong?

@intjonathan
Copy link

Without

hello world
14.35 real 11.72 user 1.66 sys

With

hello world
11.31 real 9.58 user 1.27 sys

So, 3 seconds off a 14-second startup. Probably not going to push this to production or anything.

@charkost
Copy link

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