On Thu, 16 Nov 2023 19:35:53 GMT, Jorn Vernee <jver...@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. ------------- PR Comment: https://git.openjdk.org/jdk/pull/15476#issuecomment-1815221438