23. November 2012

Blitzschnelles Ruby

Heute bin ich auf einen Patch für Ruby gestossen, der die  rake routes in unserer Anwendung von 17.7 Sekunden auf sagenhafte 4.7 Sekunden herunter gebracht hat. Der Patch flickt einige bekannte Performance Probleme in Ruby und beschleunigt das Laden der Umgebung massiv. Somit starten auch die Rails Konsole und der Development Server (rails console und rails server) wesentlich schneller.

rvm get stable
rvm install ruby-1.9.3-p327 --patch falcon -n falcon
rvm use ruby-1.9.3-p327-falcon --default

Es kann sein, dass der verwendete Patchlevel Falcon noch nicht unterstützt. Mit folgendem Befehl findet man die unterstützten Patchlevel heraus:

ls $rvm_path/patches/ruby/1.9.3/*/*falcon* | sort

Falls die gewünschte Ruby Version schon installiert war, kann man damit eine Neuinstallation veranlassen:

rvm cleanup archives && rvm cleanup sources
rvm reinstall ruby-1.9.3 --patch falcon

Desweiteren gibt es einige Umgebungsvariablen, die ich in meine .zshrc eingetragen habe. Diese haben auch noch mal 2 Sekunden bei meinem Benchmark herausgeholt:

export RUBY_HEAP_MIN_SLOTS=1000000
export RUBY_HEAP_FREE_MIN=500000
export RUBY_HEAP_SLOTS_INCREMENT=1000000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=100000000

Update (01.02.2013): Heute habe ich eine Patchsammlung für Rails gefunden. Damit wird mein rake routes nochmals um ein paar Takte schneller. Allerdings dauern unsere 850 RSpec Tests damit eine Minute länger. Ein Dilemma.

rvm install 1.9.3 --patch railsexpress -n railsexpress