Calls to native methods setCallSiteTargetNormal and defineAnonymousClass taking very long
Jochen Theodorou
blackdrag at gmx.org
Fri Sep 20 04:16:12 PDT 2013
Am 20.09.2013 12:56, schrieb Benjamin Sieffert:
[...]
> Then we retrieve our javascript-side "scriptrunner" object by calling
> .compile(javascript).eval() on the engine. (So we get a compiled script
> at this point, but that is not the object we store and use.)
can't you reuse the compiled scripts? Depending no how that is
implemented it could improve the situation
> Now the "scriptrunner" is set up to fit our needs. We work with it by
> calling engine.invokeMethod(scriptrunner, "methodname", arguments) (not
> possible with every ScriptEngine, but NashornScriptEngine supplies this
> functionality).
>
> So we're effectively calling eval not at all, at least not permanently.
> Looking at the nashorn-stacktraces, though, all their calls are
> jdk.nashorn.internal.scripts.Script$\^eval\_._L[line
> number](<eval>:[another line number])
> I think it's just how they work internally. And to be honest, I'm not
> really sure if in our case the lone call to compile once is necessary,
> as a whole lot of optimization seems to only start happening when we
> start calling the scriptrunner and not when we create it.
if compile produces a new... let's say class, each time, then you get
all the callsites and all the helper code new too. There might be
internal compilation and optimization ongoing after compile, but it
sounds to me as if nothing of that is going to be reused later, since
you through the optimized result away. And next time, you start fresh.
bye blackdrag
--
Jochen "blackdrag" Theodorou - Groovy Project Tech Lead
blog: http://blackdragsview.blogspot.com/
german groovy discussion newsgroup: de.comp.lang.misc
For Groovy programming sources visit http://groovy-lang.org
More information about the mlvm-dev
mailing list