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

Reply via email to