Home Forum Nuclos Entwicklung Makros und Regeln Groovy Scripts Aw: Groovy Scripts

#3136
Alpha Alpha
Teilnehmer

Hallo,

ZUR INFO:
Habe einen interessanten Vergleich zur Performance von Groovy vs Ruby vs Python gefunden.

Groovy vs. Ruby vs. Python Performance

Danke für den Link.

Hier wirkt sich, wenn ich es richtig verstehe, die Startzeit des Interpreters negativ aus. Gerade bei den Client-Regeln würde der Code nicht compiliert zum Client übertragen werden.

Die Startup-Time ist ja diese Zeit, die anfällt bis der Skriptcode selbst startet. Es geht hier also primär um die Initialisierung des Interpreters. Die Startup-Time dürfte in diesem Fall auch die Initialisierung der JVM selbst enthalten. Es ist also nicht verwunderlich, dass hier Groovy (genauso wie JRuby übrigens) gegenüber Python und Ruby schlechter abschneiden.

Desweiteren dürften die Groovy-Klassen auch einigen statischen Initialisierungscode enthalten, der ebenfalls nur einmal anfällt (wenn Nuclos Groovy zum ersten Mal anspricht).

Würde dann diese Startzeit (Interpretier-Zeit) bei jedem Script-Aufruf anfallen? Damit käme es dann weniger auf die Ausführungsgeschwindigkeit als auf die Vorlaufzeit an.

Nein, interessant wäre die Zeit, die (ein bereits vollständig geladenes) Groovy braucht, um ein als String vorliegendes Skript zu compilieren und auszuführen. Diese dürfte von der genannten Zeit nur einen sehr kleinen Bruchteil ausmachen.

Und auch die Skript-Compilierung müsste nicht zwingend mehrfach anfallen. Ein Skript wird von Groovy intern in eine Java-Klasse/-Bytecode compiliert, welche dann dynamisch geladen wird. Diese könnte man u.U. wiederverwenden/cachen.

Bei der Ressourcenplanung ist es z.B. so, dass der Skriptcode pro Controller einmal geladen und die generierte Klasse nur genau einmal instanziiert wird. Die diversen Aufrufe werden dann alle an dieselbe Objekt-Instanz delegiert.

Ich denke, dass man dies bei clientseitigen Regeln ähnlich umsetzen wird.

Viele Grüße,
alpha