You could create and reuse javax.script.CompiledScript instances on the
same engine instance. That should work for you.
-Sundar
On Saturday 18 April 2015 08:32 PM, Tony Zakula wrote:
Hey All,
First off let me thank the Nashorn team for all the work on performance.
The latest is extremely awesome and impressive to say the least. I have
been working on a project to see if the same performance could be achieved
by replacing a custom JSP system with a JS template system leveraging
Nashorn, and I think it is just about there.
I just had a quick question on caching. We are creating our engine for use
on multiple threads with something like the following:
System.setProperty("nashorn.typeInfo.maxFiles", "20000");
final ScriptEngine engine = new
NashornScriptEngineFactory().getScriptEngine(new String[] {"-ccs=500",
"-ot=true"});
and we will try the "-pcc" soon.
We use a JS written template system. We compile the template to JS code in
JS and the cache it in a Java Map that is available to all scripts on all
threads. When a template is included, we use the compiled template from
the Java Map and use *eval* to run the template. Since the template is
always the same until it is changed, my assumption is Nashorn compiles and
caches it for reuse.
My questions is, what is the best way to leverage the caching? Is eval
fine? Or should we potentially save the compiled JS templates to disk and
then load them with the load command or URL to achieve better performance?
Thanks,
Tony