RFR: 8318364: Add an FFM-based implementation of harfbuzz OpenType layout [v4]
Jorn Vernee
jvernee at openjdk.org
Thu Nov 16 20:28:33 UTC 2023
On Thu, 16 Nov 2023 19:56:51 GMT, Phil Race <prr at openjdk.org> wrote:
> > > > > > layoutCnt=16000 total=193ms <<< app fully displayed
> > > > > > vs
> > > > > > layoutCnt=16000 total=453ms <<< app fully displayed
> > > > >
> > > > >
> > > > > It looks strange that 16000 calls are not enough to warmup, and the difference is so large.
> > > >
> > > >
> > > > I am not a C2 expert, (not even an amateur), I just assume that it takes a lot of calls to be fully optimized.
> > >
> > >
> > > @JornVernee this looks suspicious and seems unrelated to the cold startup issues we discussed before.
> >
> >
> > I suspect the benchmark might be measuring the java.lang.foreign code needing to be loaded as part of the benchmark. While for JNI, the initialization of all the JNI machinery is included in the startup of the application. Was the running time of the entire application/process measured? Or only from the start of the `main` method?
>
> Yes, that's correct, it includes all the startup costs in that number. So as @jayathirthrao observed, the comment "16000 calls are not enough to warmup" may be slightly off the mark since at this time, each 1,000 FFM calls is already roughly as fast as each 1,000 JNI calls So we ARE warmed up by then, but I have no idea what would be a normal expectation. Looking at the numbers above it is roughly around 12,000 that we reach parity for the speed of each incremental call.
C2/fully optimized compilation kicks in after 10 000 calls, and is asynchronous by default (i.e. the rest of the application keeps running). So, 12,000 sounds relatively normal to me.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15476#issuecomment-1815260564
More information about the client-libs-dev
mailing list