У меня есть машина, которая была подготовлена несколько месяцев назад. RVM использовался для установки ruby 1.9.3-p125, а также 1.9.3-p125-perf. Когда я сравнивал производительность сырых рубинов с другой идентичной машиной, старая машина их курила.
Например:
================================================================================
With in-block needle calculation
================================================================================
Rehearsal ----------------------------------------------
detect 3.790000 0.000000 3.790000 ( 3.800895)
each 2.410000 0.000000 2.410000 ( 2.420860)
any 3.960000 0.000000 3.960000 ( 3.972099)
include 1.440000 0.000000 1.440000 ( 1.442862)
------------------------------------ total: 11.600000sec
против
================================================================================
With in-block needle calculation
================================================================================
Rehearsal ----------------------------------------------
detect 10.740000 0.000000 10.740000 ( 10.769366)
each 6.080000 0.010000 6.090000 ( 6.106323)
any 10.600000 0.000000 10.600000 ( 10.641606)
include 4.160000 0.000000 4.160000 ( 4.171530)
------------------------------------ total: 31.590000sec
Я попытался переустановить 1.9.3-p125 с rvm на быстрой машине, и теперь этот рубин медленный. Как будто что-то изменилось в RVM или я установил какой-то пакет, который значительно ухудшил работу скомпилированных версий ruby.
Я знаю, что на этот вопрос сложно ответить, но на что я должен обратить внимание, чтобы выяснить, почему производительность так сильно пострадала?
Я просто попытался установить с помощью ruby-build, и версия была установлена быстро. Что-то, что делает rvm для его создания в моей среде, работает медленно.
Проблема связана с некоторыми настройками по умолчанию, которые использует RVM. Две вещи имеют большое значение: --disable-shared и --patch cflags.patch
cflags.patch существует только для 1.9.3-p194 и p286 и теперь добавляется автоматически.
rvm get head && rvm reinstall 1.9.3-p194 --disable-shared --debug
Вы должны увидеть применение cflags.patch.
Если вам нужна нашивка сокола, вам нужно сделать:
rvm get head && rvm reinstall 1.9.3-p194-perf --patch cflags.patch --patch falcon.diff --disable-shared --debug
Информация из: https://github.com/wayneeseguin/rvm/issues/1240