Asciidoctor.js on Nashorn JDK 9 is considerably slower than Nashorn JDK 8

Guillaume Grossetie grossetieg at gmail.com
Wed Mar 18 12:36:33 UTC 2015


Hi Marcus,

Thanks for your reply, I will give it a try and let you know.


Guillaume.

2015-03-16 13:59 GMT+01:00 Marcus Lagergren <marcus.lagergren at oracle.com>:

> Yes. This probably has to do with optimistic typing being enabled to
> increase JavaScript runtime performance in 9. We know that 9 is currently
> slower at startup because we generate more correct code (and throw away too
> optimistic code that we generate first).
>
> Try running with —optimistic-types=false and see if you get back to 8-like
> performance and startup.
>
> We have plans to cheapen startup time considerably until 9 FC.
>
> You can also try using the code caching feature from 8u40:
>
> https://blogs.oracle.com/nashorn/entry/improving_nashorn_startup_time_using
>
> Regards
> Marcus
>
> > On 03 Jan 2015, at 21:01, Guillaume Grossetie <grossetieg at gmail.com>
> wrote:
> >
> > Hello everyone and happy new year!
> >
> > Asciidoctor.js is now running on both JDK 8b19 (build 25.40-b23) and JDK
> > 9b44 (build 1.9.0-ea-b44).
> > We noticed that JDK 9 is considerably slower than JDK 8 Nashorn but at
> the
> > same time running "basic" Javascript seems faster on JDK 9.
> >
> > We have a simple Rake task[1] that execute the same examples with the
> > latest JDK 8 and JDK 9:
> >
> > *Result with JDK 8:*
> >
> > Running Nashorn jjs spec/share/basic.js... OK in *909.052 ms*
> > Running Nashorn jjs spec/share/asciidoctor-convert.js... OK in *9335.534
> ms*
> > Running Nashorn java BasicJavascriptWithNashorn... OK in *927.053 ms*
> > Running Nashorn java AsciidoctorConvertWithNashorn... OK in *8843.506 ms*
> >
> > So less than a second for basic Javascript and around 10 seconds to
> convert
> > AsciiDoc source to HTML5.
> >
> > *Result with JDK 9:*
> >
> > Running Nashorn jjs spec/share/basic.js... OK in *860.049 ms*
> > Running Nashorn jjs spec/share/asciidoctor-convert.js... OK in *31253.788
> > ms*
> > Running Nashorn java BasicJavascriptWithNashorn... OK in *833.048 ms*
> > Running Nashorn java AsciidoctorConvertWithNashorn... OK in *30584.749
> ms*
> >
> > As you can see basic.js runs a little faster but asciidoctor-convert.js
> is
> > considerably slower (three times slower ~30 seconds).
> >
> > The basic.js[2], asciidoctor-convert.js[3] and asciidoctor-all.js[4] are
> > available on GitHub.
> > Asciidoctor.js is generated from Ruby using Opal[5] as a result the
> > file asciidoctor-all.js
> > is not easy to read but the entry point is the method $convert[6].
> >
> > Let me know if you need more information.
> >
> > Cheers,
> > Guillaume
> >
> > [1]
> https://github.com/asciidoctor/asciidoctor.js/blob/master/Rakefile#L105
> > [2]
> >
> https://github.com/asciidoctor/asciidoctor.js/blob/master/spec/share/basic.js
> > [3]
> >
> https://github.com/asciidoctor/asciidoctor.js/blob/master/spec/share/asciidoctor-convert.js
> > [4]
> >
> https://github.com/asciidoctor/asciidoctor.js/blob/master/dist/asciidoctor-all.js
> > [5] http://opalrb.org/
> > [6]
> >
> https://github.com/asciidoctor/asciidoctor.js/blob/master/dist/asciidoctor-all.js#L24419
>
>


More information about the nashorn-dev mailing list