Как стать автором
Обновить

Комментарии 30

Ой ссори! Сейчас исправим…
О таком лучше в ЛС писать.
согласен, исправлюсь
Спасибо за алерт, сейчас же переустановлю все на дев-машине.
У нас уже недели две на всех дев машинах и на стейджинге. Кайфуем, полет нормальный :)
Вчера обновил боевую версию, предварительно конечно прогнав все функциональные тесты. Пока вроде тоже все нормуль, если что пойдет не так — обязательно сообщу.
Всегда пожалуйста! :)
После патча время тестов сократилось где то на 15% (9 минут против 10.5)
После установки может слететь настройка какую версию руби использовать по умолчанию, если у вас стоит ещё какаято версия руби, она будет использоваться по умолчанию.

Посмотреть список установленных руби:
rvm list rubies

Посмотреть какая версия по умолчанию:
rvm list default

Выбрать которую установили только что:
rvm --default use 1.9.3-p327

Так, на всякий случай оставлю тут.
Что-то у меня с rvm 1.17.3 и Ruby 1.9.3-p327 этот тест работает все 8 секунд, с performance патчем, как описывалось на хабре недавно — чуть больше 2-х секунд. Вы уверены, что прогоняете тест без патча?
На все 99.99% :)
Может кто подскажет почему каждый раз в новой консоли приходится делать rvm --default use? Иначе ruby не подхватывается. Эта проблема еще актуальна в shell скриптах — rvm --default use там просто не работает, из-за этого не получается запустить никакой ruby код из shell скрипта, валится ошибка — «require: command not found».
У Вас
$ type rvm | head -1

выдает rvm is a function?
Если нет то попробуйте добавить две следующующие строчки в конец вашего .bashrc:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session
Такая запись есть, но в shell скриптах rvm мертвый:

rvm is /Users/mbektimirov/.rvm/bin/rvm

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.


Logging shell, естественно, стоит в iTerm. Может дело в zsh?
Попробуйте добавить эти строки в .bash_profile или .zshrc в завсимости от того какой терминал используется, у меня в оба файла RVM прописался автоматически, но его не было в .bashrc и я добавил его туда ручками.
Я юзаю GNOME Terminal.
RVM 1.15.8
[~] ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
[~] time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count"
100000000

real	0m2.211s
user	0m2.171s
sys	0m0.035s


RVM 1.17.3
[~] ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]
[~] time ruby -e "count = 0; while(count < 100000000); count = count + 1; end; puts count"
100000000

real	0m2.191s
user	0m2.157s
sys	0m0.031s


Разница вообще ни о чем. ЧЯДНТ?

PS. На всякий случай: OS X 10.8.2; 2.66 Intel Core i7; 8GB 1067 MHz DDR3;
Такое тоже возможно, с радостью проверил бы разницу будь у меня такой Мак :)
Если Вас это не сильно затруднит, попробуйте проверить флаги оптимизации скомпилированных с помощью RVM рубей.

Это можно сделать вот таким способом:
ruby -r rbconfig -e 'puts RbConfig::CONFIG["CFLAGS"]'

Вам по идее даже не нужно возвращать старую RVM, у Вас должна была остаться старая версия ruby 1.9.3-p194, если конечно Вы не перекомпилировали её заодно. Просто переключитесь на предыдущую версию. Если возникнут какие нибудь вопросы — милости просим в ЛС, буду рад помочь :)
Хмм…

для ruby 1.9.3p327:
-O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -fno-common -pipe

для предыдущей версии (p194, ставил летом на старом rvm, никаких дополнительных флагов руками вроде бы не выставлял, только rvm install 1.9.3, насколько я помню):
-O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -fno-common -pipe
Ну вот собственно и они, в обоих случаях :)

В моём случае это:
mercurial@tuxpc:~$ rvm use 1.9.3-p286
Using /home/mercurial/.rvm/gems/ruby-1.9.3-p286
mercurial@tuxpc:~$ ruby -r rbconfig -e 'puts RbConfig::CONFIG["CFLAGS"]'
-I/home/mercurial/.rvm/rubies/ruby-1.9.3-p286/include -fPIC

mercurial@tuxpc:~$ rvm use default
Using /home/mercurial/.rvm/gems/ruby-1.9.3-p327
mercurial@tuxpc:~$ ruby -r rbconfig -e 'puts RbConfig::CONFIG["CFLAGS"]'
 -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration  -fPIC
А у меня обратная фигня, вывод после обновления rvm и выполнения rvm reinstall 1.9.3:
$ ruby -r rbconfig -e 'puts RbConfig::CONFIG["CFLAGS"]'
-I/Users/mpapis/.sm/pkg/active/include -pipe

Т.е. он решил не перекомпилить, а скачал бинарник…
Результаты до/после обновления тоже идентичны.
Mac OS X 10.8.2
По всей видимости идентично плохи :)
Попробуйте удостовериться что Вы перекомпилировали и переключились на свежую версию.
И если можно конфигурацию железа и название ОСи.
Macbook Air 2011 (Core i5 1.6 / 4 GB)
Mac OS X 10.8.2
Похоже, что без опции --with-gcc=clang и предварительного шаманства он просто скачает уже готовый бинарник без оптимизаций.
Подробнее здесь:
www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/
И после rvm use 1.9.3-p327 --default?
Можно удостовериться используя ruby --version
Ну, это говорит о том что у Вас в обоих случаях используются флаги оптимизаций
(как минимум CFLAGS="-march=corei7 -O3 -pipe"), возможно руби был перекомпилен каким то образом по походу дела или же под маком эта фича уже давно актуальна. Было бы здорово если бы ещё кто нибудь на маке проверил.
Не только под маком, под GNU/Linux у меня было то же самое, ещё в апреле версия 1.9.3 скомпилировалась RVM с флагом -O3, без к-л доп.настроек. Не знаю от чего это зависело раньше, но масштабность проблемы явно преувеличили на пару порядков… Очень похоже, что компиляция без флагов оптимизации была довольно редким явлением.
Что касается патча от funny falcon, он ускоряет в случаях увесистых задач, на приведённый синтетический тест он вообще никак не влияет.
А у меня rvm 1.17.3 установил ruby 1.9.3 такой:
ruby 1.9.3p327 (2012-11-10) [x86_64-darwin12.2.0]
и он работает больше 8 секунд.
А вот с performance патчем:
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]
этот работает за 2 секунды, как и положено. Тоже мак х64.
Но я делал через удаление 1.9.3. Возможно, если обновлять, он подхватывает патч?
В апдейте уже указали решение, у меня сработало, спасибо.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории