Groovige Leistung auf Linux-Computern

356
Roman Goyenko

Ich habe ein Problem, wenn ich Groovy auf einem meiner Linux-Computer starte. Es dauert etwa 30 Sekunden, um einen sehr einfachen Befehl auszuführen:

groovy -e "" 

Wenn ich darauf laufe strace, sehe ich hier, wo es aufhört und wartet:

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

Gibt es eine Möglichkeit herauszufinden, worauf es wartet und warum und wie man es beheben kann?

Ich verwende Red Hat 6.3, Groovy Version: 2.2.1 JVM: 1.7.0_25. Hersteller: Oracle Corporation Betriebssystem: Linux

Und hier ist der Zeitbefehl:

bin $ time groovy -e ""

real 0m22.255s benutzer 0m26.875s sys 0m2.064s

0
Die neueste Version von Groovy? Es hilft, bestimmte Versionsnummern zu haben. Führen Sie das neueste Paket für Ihre Distribution aus, die neueste stabile Version, die neueste Beta-Version und die neueste nächtliche Version? heavyd vor 10 Jahren 0
Groovy Version: 2.2.1 JVM: 1.7.0_25 Hersteller: Oracle Corporation Betriebssystem: Linux Roman Goyenko vor 10 Jahren 0

1 Antwort auf die Frage

0
plgruener

Der Grund für Groovys sehr lange Startzeit (im Vergleich zu anderen interpretierten Sprachen) ist, dass für jeden groovy-Befehl eine JVM gestartet werden muss.

Vielleicht möchten Sie in GroovyServ nachschauen . Das führt dazu, dass beim ersten Start ein Daemon mit einer JVM im Hintergrund ausgeführt wird. Nachfolgende Aufrufe von groovyclientdann verwenden stattdessen diese JVM. Es verspricht "10 bis 20 mal schneller als normales Groovy" zu sein.

Ich glaube nicht, dass dies der Fall war, da der gleiche Aufruf auf einem anderen Server mit ähnlicher Hardware viel schneller abläuft. Und Java läuft auch schneller, in der Nähe von 30 Sekunden Verzögerung. Roman Goyenko vor 8 Jahren 0