Как улучшить jRuby время загрузки?

Я должен ожидать довольно долгое время (по сравнению с моими друзьями машины) для выполнения сценариев на jRuby, особенно когда я выполняю задачи граблей или тесты. Я попробовал jRuby версию 1.3.1 и 1.4.1 и без драгоценного камня рубиновой отладки, и та же проблема произошла в каждой конфигурации.

Вопрос прост: там какой-либо путь состоит в том, чтобы улучшить процесс загрузки jRuby?.. или у меня есть что-то не так с моей jvm конфигурацией или jRuby установкой (я использую jRuby через rvm - рубиновый менеджер по версии)?

7
задан luacassus 8 February 2010 в 22:09
поделиться

2 ответа

Есть несколько вещей, которые вы можете попробовать:

  • использовать самую последнюю и лучшую версию JRuby (из-за обширных наборов тестов даже самая современная ветка git master обычно довольно стабильна), они постоянно работает над временем запуска
  • выбирайте JVM с умом, Oracle JRockit, например, ориентирован на серверы, и поэтому производительность при запуске не является проблемой (в любом случае эти приложения перезапускаются только раз в пару лет), Sun в основном пренебрегла настольный компьютер в течение последних десяти лет или около того, но он постоянно улучшается с версии 1.6u12 (попробуйте недавно выпущенный 1.6u18), а также в версии 1.7. IBM J9 также считается довольно легким.
  • попробуйте nailgun, проект, в котором JVM работает как демон в фоновом режиме (в JRuby есть встроенная поддержка, попробуйте запустить свои сценарии с помощью jruby --ng )
  • просто не делайте этого. Не используйте JRuby для модульных тестов и задач rake: команда ThoughtWorks Mingle, например, использует MRI для модульных тестов, задач rake и разработки, а JRuby - для интеграционных тестов, регрессионных тестов и производства. (Очевидно, это работает только в том случае, если вы не используете какие-либо библиотеки Java в своих задачах и тестах.)

Однако тесты и сценарии являются худшим сценарием для JRuby. Одна только среда выполнения JRuby уже довольно тяжелая, намного тяжелее, чем MRI. Просто загрузка всего зверя с диска в RAM может занять больше времени, чем запуск того же скрипта в MRI.И мы еще даже не добавили время запуска JVM!

14
ответ дан 6 December 2019 в 10:00
поделиться

Также убедитесь, что вы запускаете JVM в режиме client (при условии, что вы используете JVM Sun), поскольку этот режим обеспечивает более быстрый запуск и лучшую общую производительность для таких вещей, как наборы тестов. JRuby по умолчанию должен использовать JVM в клиентском режиме, но это зависит от системы, настроек JVM и т. Д. Чтобы убедиться, что вы используете клиентскую JVM, вызовите jruby -v, и вы должны увидеть что-то вроде этого

Java HotSpot(TM) *Client* VM 1.6.0_18

Обновление : Взгляните на сообщение в блоге Чарльза с советами по улучшению запуска: http://blog.headius.com/2010/03/jruby-startup-time-tips.html

4
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

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