Groovy продуктивність на машині Linux


0

У мене є проблема, коли я запускаю 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 Version: 2.2.1 JVM: 1.7.0_25 Постачальник: Корпорація Oracle ОС: Linux

А ось команда часу:

bin $ time groovy -e ""

реальні 0m22.255s користувача 0m26.875s sys 0m2.064s


Остання версія Groovy буття? Це допомагає мати конкретні номери версій. Ви використовуєте останній пакет для вашого дистрибутива, останню стабільну версію, останню бета-версію, останню ніч?
heavyd

Версія Groovy: 2.2.1 JVM: 1.7.0_25 Постачальник: Oracle Corporation ОС: Linux
Roman Goyenko

Відповіді:


0

Причина дуже довгого часу запуску groovy (порівняно з іншими інтерпретованими мовами) полягає в тому, що він повинен запустити JVM для кожного groovy -команда.

Можливо, вам захочеться подивитися GroovyServ . Це робить запуск демона з JVM у фоновому режимі при першому запуску. Наступні виклики groovyclient потім використовуйте цей JVM замість цього. Вона обіцяє бути "від 10 до 20 разів швидше звичайного".


Я не думаю, що це було так, оскільки той же виклик працює набагато швидше на іншому сервері з аналогічним обладнанням. Крім того, java працює швидше, аніж близько 30 секунд.
Roman Goyenko
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.