Performance issues

Michel Krämer michel at undercouch.de
Wed Feb 19 07:39:34 PST 2014


Hi folks,

I'm experiencing very drastic performance issues with Nashorn (JDK 8 
b129) compared to Rhino. My script takes almost 13 minutes instead of 16 
seconds! I hope you guys can tell me what's going on here.

I've recently tested citeproc-java 
(https://github.com/michel-kraemer/citeproc-java) under JDK8 in order to 
make sure it keeps running flawlessly when the next Java version comes 
out. citeproc-java uses citeproc-js under the hood which is a rather 
large JavaScript library consisting of one file of about 540 KB, 13.500 
lines of code (https://bitbucket.org/fbennett/citeproc-js/wiki/Home).

Previously I used Rhino to execute the JavaScript and it worked quite 
well. There is a test suite consisting of 758 tests. Running this suite 
takes about 16 seconds (JavaScript compiled to byte code) or 46 secs 
(interpreted JavaScript). However, if I try to run the same test suite 
with Oracle Nashorn it takes 12.5 minutes! (see timings below)

This is a very drastic performance drop and I was very surprised to see 
this. Is there some way to debug Nashorn in order to find out what is 
actually going on here?

Timings on my computer (i5-3570K, 3.4 GHz, 4 cores, 16 GB RAM):

Rhino 1.7R4 (JavaScript compiled to byte code):
16.176 secs

Rhino 1.7R3 (bundled w/ JDK 7, interpreted JavaScript):
45.970 secs

Nashorn (JDK 8 b129):
754.266 secs

Steps to reproduce (no prerequisites other than JDK8):

git clone https://github.com/michel-kraemer/citeproc-java.git
cd citeproc-java
./gradlew runTestSuite -PscriptRunnerType=rhino
./gradlew runTestSuite -PscriptRunnerType=jre

Cheers,
Michel


More information about the nashorn-dev mailing list