Any plans for optimizing engine.eval() ?
A. Sundararajan
sundararajan.athijegannathan at oracle.com
Thu Sep 25 06:01:13 UTC 2014
Hi,
Also, you may want to try
-Dnashorn.args=--optimistic-types=false (for 8u40 and 9)
or to use both options
-Dnashorn.args="--global-per-engine --optimistic-types=false (for 8u40
and 9)
Please post your numbers with these options and also link to source of
your app or a reduced test of similar usage pattern.
Thanks,
-Sundar
On Thursday 25 September 2014 11:24 AM, A. Sundararajan wrote:
> Hi Roland,
>
> Please add -Dnashorn.args=--global-per-engine to your command line and
> check the numbers. Also, as Hannes said, if it is possible for us to
> look up your code or pattern used in your code in a test, we may be
> able to help bit more.
>
> Thanks,
> -Sundar
>
> On Thursday 25 September 2014 02:25 AM, Hannes Wallnoefer wrote:
>> Hi Roland,
>>
>> Given that you execute all scripts only once, most of the Nashorn
>> execution time is probably spent in compilation and linking of
>> invokedynamic callsites. Although Nashorn is faster than Rhino once
>> it is warmed up, it takes longer to get there. In other words: If you
>> run your scripts more than once you should eventually see Nashorn
>> getting faster.
>>
>> That said, I'm a bit surprised about how much the numbers diverge.
>> Would it be possible to let us see the code you are running? This way
>> we might be able to give you advice on how to improve performance, or
>> it may help us to find bottlenecks in Nashorn.
>>
>> Thanks,
>> Hannes
>>
>> Am 2014-09-24 um 11:12 schrieb Houtman, Roland:
>>> Hi Dev,
>>>
>>> The first time a script is run, Nashorn seems to rely on the
>>> interpreting the script. But it isn't performing as Rhino did (at all).
>>> I've tried the engines coming with the following JDK's
>>> JDK 1.7u45
>>> JKD 1.8u20
>>> JDK 1.8.0_40 (build 6)
>>>
>>> The time I measured is the total execution time of 200 separate
>>> instances with all different scripts, all running only once.
>>> (The test script is a nothing more than getting an object from an
>>> array, do an if/else, and storing the result in another array.)
>>>
>>> --
>>> 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
>>> --
>>>
>>> I notice that it takes up to 60 seconds before Nashorn is ready
>>> creating&loading classes to run, and running at good speed.
>>> In that timespan execution is very slow. (and seems to by
>>> interpreting the script far less optimal than Rhino)
>>>
>>> Can anyone give me insight in what is happening and where/how to
>>> seek improvements?
>>>
>>> Regards,
>>> Roland
>>
>
More information about the nashorn-dev
mailing list