Ускоряем ruby и Rails

Упал мой взор на днях на две статьи: г-на alisnic и г-не Justin Kulesza. Решил проверить, что там и как, поэксперементировать на своей машинке.

Итак, что было:

$ ruby -v

ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]

И в одном моём проекте:

$ time rake routes

real 0m39.705s
user 0m25.454s
sys 0m2.100s

Как-то всё печально, не так ли? (-:

Дальше начинаются пляски с бубном. (-: Для начала определим, какой у меня процессор:

$ cat /proc/cpuinfo

vendor_id : GenuineIntel
cpu family : 15
model : 6
model name : Intel(R) Pentium(R) D CPU 3.00GHz

Теперь неплохо бы узнать, какие  CFLAGS можно использовать для моего процессора. Идём по ссылке, и там ясно написано:

CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"

Теперь в домашней директории создаём, если его нет, файл .rvmrc, в который добавляем следующее(мой вариант):

rvm_configure_env=(CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer")

Только так rvm можно передать параметры, с какими собирать очередную версию ruby. После этого, опытным путём выяснил, что последняя версия, для которой существует патч falcon, это p194. Следовательно, делаем следующее:

$ rvm get head && rvm reinstall 1.9.3-p194 --patch falcon --force-autoconf -j 3

Пьём чай/курим/ждём. После того, как всё скомпилируется, выполняем следующую команду:

$ rvm use ruby-1.9.3-p194 --default

Вот теперь можно повторить опыт, приведённый в начале статьи (незабываем про  bundle install в директории проекта):

$ time rake routes

real 0m7.854s
user 0m6.072s
sys 0m1.504s

По-моему, очень не плохо.

Юра Соколов, автор патча falcon, обещал сегодня добавить в rvm поддержку falcon и для p327. Будет вообще шикарно. Ждём. А пока можно и этой версией пользоваться. Уж в разработке так точно.

Успехов всем!

Недавние записи

2 комментария to “Ускоряем ruby и Rails”

  1. alisnic Says:

    Если дать GCC CFLAGS=»-march=native», то он сам определит фичи процессора, и не надо идти на Гентоо Вики )

  2. none Says:

    Я ставил native, когда пересобирал р125, но что-то прирост был в 1,5 раза всего. Хотя… я тогда столько раз ставил-переставлял, что уже мог и потеряться, что к чему… сейчас попробую ещё раз (-:

Оставить комментарий