Срочно обновляем RVM (Ruby Version Manager)

в 19:37, , рубрики: development, performance, production, ruby, ruby on rails, rvm, метки: , , , , ,

Совсем недавно во многих ruby-блогах, сообществах, да и на хабре, было написано немало постов о том что RVM дурно влияет на производительность RMI-версии ruby (официальный интерпритатор языка) по причине того что установщик не учитывает оптимизации компилятора GCC. Конечно для этого недуга были «лекарства», но применять их приходилось ручками, причем довольно-таки прямыми. Так вот, спешу всех обрадовать что в последних версиях RVM (начиная с версии 1.17.0) ситуация изменилась, и конечно же в лучшую сторону, теперь Вы снова можете полностью положится на менеджера версий ruby. Все что Вам нужно сделать — это обновиться до последней версии.

Для тех кто не умеет или забыл как это делается, подскажу.
Запускаем терминал, и пишем:

$ rvm get stable

RVM тянет последнюю стабильную версию себя, перезапускается, и выводит стандартное сообщение с результатом обновления и благодарностями за использование от небезызвестного Уэйна Сегуина (Wayne E. Seguin), автора данного пакета.

После того как RVM обновлен, Вам необходимо перекомпилировать установленные RMI версии ruby, а еще лучше — установить последнюю. На момент написания данного поста, последние стабильные версии это: RVM — 1.17.2 и Ruby — 1.9.3-p327. Перекомпилировать ruby с помощью RVM очень просто:

$ rvm reinstall 1.9.3

Помимо процессорных оптимизаций, RVM теперь знает про патч funny-falcon'а и ставит его со всеми последними версиями для которых он существует. Прирост производительности очевиден, на моем Intel® Core(TM) i5-2320 CPU @ 3.00GHz с четырьмя гигами ОЗУ под Ubuntu 12.04, типичный бенчмарк дает следующие результаты:

До (RVM — 1.16.17, Ruby — 1.9.3-p286)

$ time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count"
100000000

real    0m5.303s
user    0m5.244s
sys     0m0.016s

После (RVM — 1.17.2, Ruby — 1.9.3-p327)

$ time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count"
100000000

real    0m1.940s
user    0m1.932s
sys     0m0.004s

Ну вот собственно и все. Спасибо за внимание, как говорится — Happy Hacking!

Автор: mercurial

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js