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