Тест граблей, очень Медленный в Windows

Почему Ruby, и Ruby on Rails (1.8.6, Каждый Нажимает Installer, локальную базу данных), так румяный медленный в Windows?

  • рубиновый сценарий/сервер - 30 секунд
  • тест граблей - 45 секунд
  • и т.д.

Все же, когда я появляюсь к намного более медленному полю Linux, это фактически мгновенно. Я проверил все - никакой значительный ЦП не обрабатывает выполнение, никакие сетевые проблемы... и так далее.

Heck, я был бы доволен просто подробным выводом, который, по крайней мере, сказал мне, где он ломался. Какие-либо предложения?

11
задан aronchick 7 March 2010 в 00:09
поделиться

2 ответа

В целом интерпретатор MRI Ruby просто не оптимизирован для скорости работы в Windows. Вы также можете запускать его в режиме разработки на Windows, а не в производственном режиме на других машинах. Rails работает намного медленнее в режиме разработки, так как он перезагружает все ваши классы при каждом запросе.

1.8.6 - очень старая версия на Ruby. Выпущен почти 3 года назад. Вам следует серьезно подумать об обновлении до 1.9 (или, по крайней мере, до 1.8.7).Или переход на JRuby. Все эти варианты, вероятно, приведут к значительному повышению производительности.

1.8.7 должен быть полностью совместим с 1.8.6. 1.9 имеет совершенно новый интерпретатор, который работает в 2,5 раза быстрее (хотя иногда он дает сбой в Windows). JRuby может быть идеальным решением для вас, так как вы можете запускать его либо в режиме совместимости с 1.8, либо с 1.9, и он очень стабилен, но он не поддерживает драгоценные камни с расширениями C и требует другого адаптера базы данных.

Последний вариант - попробовать запустить Rails внутри VMWare с CentOS или другим дистрибутивом Linux.

7
ответ дан 3 December 2019 в 09:40
поделиться

Причина в том, что статистика файлов в Windows ужасно медленная, и, поскольку Ruby написан для Linux (и оптимизирован для Linux), не было много работы, чтобы сделать это быстрее.

Использование rubyinstaller.org (1.8.6 или 1.9.x) может сделать его быстрее - я бы рекомендовал 1.8.6, так как 1.9 сам по себе тормозит.

Если вы хотите стать по-настоящему агрессивным, вы можете попробовать мой gem fast_gem_script, который пытается кэшировать запросы на основе требований и, таким образом, ускорить работу. Однако сделайте это с помощью новой версии ruby ​​:)

К сожалению, Jruby также не известен своими чрезвычайно быстрыми поисками. Надеюсь, когда-нибудь эта ситуация изменится. А до тех пор мои Fast_gem_script и Fast_require - единственный способ, который я знаю, чтобы попытаться получить некоторое ускорение.

Для ускорения вы можете попробовать мой верхний лоадер-спидер (помогает рельсам работать быстрее в дремоте): https://github.com/rdp/faster_require Также проверьте spork, который работает в дремоте, и jruby тоже хорошо работает.

-rp

2
ответ дан 3 December 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: