Ich benutze ScriptEngine in meiner App, um einige Client-Code in meiner Anwendung zu bewerten. Das Problem ist, es ist nicht performant genug und ich muss Maßnahmen ergreifen, um die Ausführungszeit zu verbessern. Momentan kann es bis zu 1463ms dauern (der Durchschnitt liegt bei 300ms), um ein extrem einfaches Skript zu erstellen, das im Grunde genommen Parameteraustausch in URLs ist.Mit Java ScriptEngine (Groovy), um es leistungsfähiger zu machen?
Ich suche nach einfachen Strategien, um diese Leistung zu verbessern, ohne die Skriptfähigkeit zu verlieren.
Mein erster Gedanke, das ScriptEngine-Objekt zu poolen und es wiederzuverwenden. Ich sehe in der Spezifikation, dass es wiederverwendet werden soll, aber ich habe keine Beispiele dafür gefunden, dass irgendjemand es tatsächlich tut.
Irgendwelche Ideen? Hier ist mein Code:
ScriptEngineManager factory = new ScriptEngineManager();
GroovyScriptEngineImpl engine = (GroovyScriptEngineImpl)factory.getEngineByName("groovy");
engine.put("state", state;
engine.put("zipcode", zip);
engine.put("url", locationAwareAd.getLocationData().getGeneratedUrl());
url = (String) engine.eval(urlGeneratorScript);
Jedes Feedback würde geschätzt!
Oh, das ist eine großartige Idee! Ich bin voran gegangen und habe die ScriptEngine mit commons-pool gepoolt. Ich werde jetzt weitermachen und vorkompilieren. Vielen Dank! – matsientst