Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
ruby-1.9.3-p194 cumulative performance patch.

Patched ruby 1.9.3-p194 for 30% faster rails boot

What is?

This script installs a patched version of ruby 1.9.3-p194 with patches for 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://raw.github.com/gist/2600122/rbenv.sh | sh && rbenv global 1.9.3-p194-perf

If you're using rvm:

rvm get head && rvm reinstall 1.9.3-perf --patch falcon

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://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
}
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-p194" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz" combined_patch
VERSION="1.9.3-p194"
curl https://raw.github.com/gist/2600122/2-$VERSION-patched.sh > /tmp/$VERSION-perf
rbenv install /tmp/$VERSION-perf
@cristianbica

This comment has been minimized.

Show comment Hide comment
@cristianbica

cristianbica Jul 19, 2012

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

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

@woahdae

This comment has been minimized.

Show comment Hide comment
@woahdae

woahdae 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...

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

This comment has been minimized.

Show comment Hide comment
@pedrocarrico

pedrocarrico Aug 2, 2012

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!

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

This comment has been minimized.

Show comment Hide comment
@sj26

sj26 Aug 2, 2012

@cristianbico or install apple-gcc42 from homebrew.

Owner

sj26 commented Aug 2, 2012

@cristianbico or install apple-gcc42 from homebrew.

@SamSaffron

This comment has been minimized.

Show comment Hide comment
@SamSaffron

SamSaffron Aug 16, 2012

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

massive diff

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

massive diff

@hypomodern

This comment has been minimized.

Show comment Hide comment
@hypomodern

hypomodern Oct 31, 2012

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?

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

This comment has been minimized.

Show comment Hide comment
@intjonathan

intjonathan Oct 31, 2012

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.

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

This comment has been minimized.

Show comment Hide comment
@charkost

charkost Dec 18, 2014

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