Тест Rake очень медленный в Windows

Почему Ruby и Ruby on Rails (1.8.6 One Install Installer, локальная база данных) настолько рушительны в Windows?

  • ruby ​​ script/server - 30 секунд
  • rake test - 45 секунд
  • и др.

Тем не менее, когда я выхожу на гораздо более медленный Linux-пакет, он практически мгновен. Я проверил все - никаких значительных процессов процессора, сетевых проблем... и т.д.

Черт, я был бы доволен только подробным результатом, который, по крайней мере, сказал мне, где он разрушается. Любые предложения?

Ответ 1

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

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

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

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

Ответ 2

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

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

Если вы хотите стать очень агрессивным, вы можете попробовать мой драгоценный камень quick_gem_script, который пытается кэшировать червь из запросов на основе поиска и, таким образом, ускорить процесс. Сделайте это с помощью рубиновой версии с царапиной, хотя:)

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

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

-rp

Ответ 3

UPDATE: Спасибо (частично) за какую-то действительно замечательную работу над Fenix от Luis Lavena, Ruby 1.9.3-p327 - это много, намного быстрее в Windows. rake используется для выполнения 110 + секунд для выполнения на 1.9.3-p125 и теперь занимает ~ 20 секунд на p327. Rails, наконец, можно использовать в Windows!

Используйте RubyInstaller для установки..

Ответ 4

Мне нравится использовать этот подход:

медленный стек рейков

В моем случае его

finisher_hook: 22.463 sec

Это преступник