Совсем недавно во многих 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