Groovy производительность на машине Linux

323
Roman Goyenko

У меня проблема с запуском Groovy на одном из моих Linux-компьютеров - для выполнения очень простой команды требуется около 30 секунд:

groovy -e "" 

если я бегу straceпо нему, вот что я вижу, где он останавливается и ждет:

mprotect(0x7fae284e0000, 4096, PROT_NONE) = 0 clone(child_stack=0x7fae285dfff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fae285e09d0, tls=0x7fae285e0700, child_tidptr=0x7fae285e09d0) = 62660 futex(0x7fae285e09d0, FUTEX_WAIT, 62660, NULL <unfinished ...> 

Есть ли способ выяснить, чего он ждет и почему и как это исправить?

Я использую Red Hat 6.3, Groovy Версия: 2.2.1 JVM: 1.7.0_25 Поставщик: Oracle Corporation ОС: Linux

И вот команда времени:

bin $ time groovy -e ""

реальный 0m22.255s пользователь 0m26.875s sys 0m2.064s

0
Последняя версия Groovy? Это помогает иметь конкретные номера версий. Вы используете последнюю версию пакета для своего дистрибутива, последнюю стабильную версию, последнюю бета-версию, последнюю ночную версию? heavyd 10 лет назад 0
Groovy версия: 2.2.1 JVM: 1.7.0_25 Поставщик: Oracle Corporation ОС: Linux Roman Goyenko 10 лет назад 0

1 ответ на вопрос

0
plgruener

Reason of groovy's very long startup time (compared to other interpreted languages) is that is has to fire up a JVM for every groovy-command.

You might want to look into GroovyServ. What this does is running a daemon with a JVM in the background the first time you start it. Subsequent calls of groovyclient then use this JVM instead. It promises to be "10 to 20 times faster than regular Groovy".

Я не думаю, что это так, поскольку тот же вызов работает намного быстрее на другом сервере с аналогичным оборудованием. И Java работает быстрее, нигде не задерживается около 30 секунд. Roman Goyenko 8 лет назад 0

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