Dear Hannes and Sundar,

I've ran with your options.

Regarding what the program is doing is this;
I use one scriptengine instance.
For the tests I create one display shows 200 identical drawing components.
Each component contains 1 CompiledScript instance with its own SimpleContext.
In each Context has a binding named "io" to its own instance of a simple API 
object with just two methods "input(index)" and "output(index,value)"
Those methods read a value from an Object[] array, and store a value in an 
Object[] array( thus this is done in java code ).
While the display is showing, every 500 msec, 200 swingworkers (one for each 
CompiledSCript) are started.
Each swingworker.doInBackground() performs 1 "CompiledScript.eval()" and 
terminates.
The time is recorded directly before and after the call to 
"compiledScript.eval()".

The javascript is this: (I use a unique number in hope to avoid caching inside 
the scriptengine implementation)
        var x = <<ID number for each script>>;
        var alpha = io.input(0);
        alpha = parseInt(alpha) + 32;
        if (alpha &gt; 255){
          alpha -= 255;
        }
        io.output( 0, alpha );
        io.output( 1, "125.200.200."+alpha );
        io.output( 2, x );


What i did to get the below figures;
Each time I used the netbeans "run project" (not 'debug, not profiling')
#1 I opened the display and collected the Duration of the very first run of 
each 200 scripts. The times you see is the total of these 200 figures.
#2 Then I closed the display and opened it again. (then scripts with the same 
'ID  number' are generated. The scriptengine maybe reuses cache?)
#3 Then I closed the display and opened it again. (then scripts with the same 
'ID number' are generated. The scriptengine maybe reuses cache?)
#4 Then I opened the same display in -new- tab,  (then scripts with the *new* 
'ID numbers' are generated. Done so that scriptengine can not reuse cache)

Table: each cell shows the total duration of 200 scripts executing the very 
first time in a display.
#1              #2              #3              #4              VM-ARGS
12116 msec      6814            6000            10064           JDK 1.8 u40 
flag :  -Dnashorn.args=--global-per-engine
8150   msec     4719            4644            6903            JDK 1.8 u40 
flag :  '-Dnashorn.args=--optimistic-types=FALSE
11576 msec      2684            5846            6862            JDK 1.8 u40 
flag :  (both flags)
15371 msec      5448            10308           10892           JDK 1.8 u40  no 
flags

I hope this is useful in some way.

Thanks,
Roland


>>> -- 
>>> JDK 1.7u45 CompiledScript.eval()    219 msec
>>> -
>>> JKD 1.8u20 CompiledScript.eval()    13613 msec
>>> JDK 1.8u20 Engine.eval()        14002 msec
>>> -
>>> JDK 1.8.0_40 CompiledScript.eval()    26396 msec
>>> --

Reply via email to