Desempenho Groovy na máquina Linux

0

Eu tenho um problema quando inicio o Groovy em uma das minhas máquinas Linux - leva cerca de 30 segundos para executar um comando muito simples:

groovy -e ""

se eu executar strace , aqui está o que eu vejo onde ele para e aguarda:

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 ...>

Existe uma maneira de descobrir o que está esperando e por que e como corrigi-lo?

Estou executando o Red Hat 6.3, Versão Groovy: 2.2.1 JVM: 1.7.0_25 Fornecedor: Oracle Corporation SO: Linux

E aqui está o comando do tempo:

bin $ tempo groovy -e ""

real 0m22.255s usuário 0m26.875s sys 0m2.064s

    
por Roman Goyenko 09.04.2014 / 00:24

1 resposta

0

O motivo do tempo de inicialização muito longo do groovy (comparado a outras linguagens interpretadas) é que ele precisa ativar uma JVM para cada groovy -command.

Você pode querer olhar para o GroovyServ . O que isso faz é executar um daemon com uma JVM em segundo plano na primeira vez que você o iniciar. Chamadas subseqüentes de groovyclient usam essa JVM. Ele promete ser "10 a 20 vezes mais rápido que o Groovy comum".

    
por 01.03.2016 / 20:34