Почему Ruby, и Ruby on Rails (1.8.6, Каждый Нажимает Installer, локальную базу данных), так румяный медленный в Windows?
Все же, когда я появляюсь к намного более медленному полю Linux, это фактически мгновенно. Я проверил все - никакой значительный ЦП не обрабатывает выполнение, никакие сетевые проблемы... и так далее.
Heck, я был бы доволен просто подробным выводом, который, по крайней мере, сказал мне, где он ломался. Какие-либо предложения?
В целом интерпретатор 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.
Причина в том, что статистика файлов в 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