О том как установить RVM (Ruby version manager) уже написано много статей, поэтому я перейду сразу к делу.
Список патчей в RailsExpress для Ruby 1.9.3-p362
(это последняя версия руби на момент написания статьи)
Applying patch railsexpress/01-fix-make-clean.patch Applying patch railsexpress/02-railsbench-gc.patch Applying patch railsexpress/03-display-more-detailed-stack-trace.patch Applying patch railsexpress/04-fork-support-for-gc-logging.patch Applying patch railsexpress/05-track-live-dataset-size.patch Applying patch railsexpress/06-webrick_204_304_keep_alive_fix.patch Applying patch railsexpress/07-export-a-few-more-symbols-for-ruby-prof.patch Applying patch railsexpress/08-thread-variables.patch Applying patch railsexpress/09-faster-loading.patch Applying patch railsexpress/10-falcon-st-opt.patch Applying patch railsexpress/11-falcon-sparse-array.patch Applying patch railsexpress/12-falcon-array-queue.patch
1. Указываем RVM с какими параметрами надо компилить Ruby
Для этого нужно создать файл .rvmrc в домашнем каталоге.
$ nano -e $HOME/.rvmrc
И явно указать RVM с какими параметрами компилировать Ruby.
CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer" rvm_configure_env=(CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer")
Здесь параметр -march=native указывает компилятору на автоматический выбор типа процессора и поддерживаемых этим процессором возможностей. Если вы точно знаете тип своего процессора, то можно указать, например, -march=prescott
Сохранить изменения: [ctrl + X], потом [Y] — чтобы выйти и сохранить в nano.
2. Обновляем списки доступных версий Ruby в RVM
$ rvm get head
3. Устанавливаем / переустанавливаем ruby с применением патчей railsexpress
для версии Ruby 1.9.3-p362
$ rvm reinstall 1.9.3-p362 --patch railsexpress -n railsexpress -j 3 $ rvm list $ rvm use ruby-1.9.3-p362-railsexpress --default
Если нужно всегда последнюю версию, то вместо p362 надо указать head,
но для последней версии патчи появляются с запазданием, это надо иметь ввиду.
4. Бонус
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
5. Меряем скорость
Скорость запуска рельс можно мерить так:
$ time bundle exec rake routes
В моем случае:
до
real 0m42.547s user 0m36.502s sys 0m2.248s
после
real 0m17.200s user 0m15.089s sys 0m1.072s
Здесь можно почитать дополнительную инфу по патчам https://github.com/skaes/rvm-patchsets
ссылка на оригинал статьи http://habrahabr.ru/post/165627/
Добавить комментарий