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

У меня проблема, когда я запускаю 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

1 ответ

Причина очень длительного времени запуска groovy (по сравнению с другими интерпретируемыми языками) заключается в том, что он должен запускать JVM для каждого groovy-command.

Вы можете посмотреть в GroovyServ. При первом запуске вы запускаете демон с JVM в фоновом режиме. Последующие звонки groovyclient тогда используйте эту JVM вместо этого. Он обещает быть "в 10-20 раз быстрее, чем обычный Groovy".

Другие вопросы по тегам