<div dir="ltr">For the Spring Petclinic demo, I am not sure yet about the reason for it to be an outlier, but I would suggest to:<div> - Update to a more recent commit than the outdated one (see <a href="https://github.com/openjdk/leyden/blob/premain/test/hotspot/jtreg/premain/spring-petclinic/Makefile#L126">https://github.com/openjdk/leyden/blob/premain/test/hotspot/jtreg/premain/spring-petclinic/Makefile#L126</a>)</div><div> - Leverage the CDS/AOT cache friendly unpacking feature (available as of Spring Boot 3.3) <a href="https://docs.spring.io/spring-boot/reference/packaging/efficient.html">https://docs.spring.io/spring-boot/reference/packaging/efficient.html</a></div><div> - Use a more production-like arrangement by avoiding creating the database schema at startup</div><div><br></div><div>Spring-boot Getting Started Demo should be also updated to a more recent version and use the CDS/AOT cache friendly unpacking feature.</div><div><br></div><div>I suggest we collaborate on that.<br><div><br></div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Tue, Sep 30, 2025 at 9:49 PM <<a href="mailto:ioi.lam@oracle.com">ioi.lam@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
<p><font face="monospace">I've updated the benchmark numbers using
the latest premain tip (as of 2025/09/30):</font></p>
<p><font face="monospace"><a href="https://github.com/openjdk/leyden/blob/premain/README.md#premain-aot-cache-summary" target="_blank">https://github.com/openjdk/leyden/blob/premain/README.md#premain-aot-cache-summary</a></font></p>
<p><font face="monospace">There's quite a bit of improvement due to
the new compiler tuning changes by Aleksey. I also added a "2
cores only" mode to emulate microservices that are allocated
very few CPUs.</font></p>
<p><font face="monospace"><br>
Here are the results of {premain AOT} vs {JDK 25, no CDS, no
AOT}. Note that premain is generally much more beneficial with
the 2 Cores Only case, except for PetClinic:<br>
<br>
<br>
Benchmark Desktop/Server Class (28 Cores) 2 Cores Only<br>
<b>----------------------------------------------------------------------------<br>
</b>Helidon Quick Start 3.59x
4.11x ++<br>
JavacBenchApp 50 source files 2.21x 3.17x
++++<br>
Micronaut First App Demo 2.91x 4.90x
+++++++<br>
Quarkus Getting Started Demo 2.97x 3.74x
+++<br>
Spring-boot Getting Started Demo 4.13x 4.70x
++<br>
Spring PetClinic Demo 3.33x 3.03x
-- ???<br>
</font></p>
<p><font face="monospace"><br>
<br>
Changes from last time (
<a href="https://github.com/openjdk/leyden/blob/46e03d000efd1b2784ad4dcd4c83310ace498ec0/README.md" target="_blank">https://github.com/openjdk/leyden/blob/46e03d000efd1b2784ad4dcd4c83310ace498ec0/README.md</a>
)</font></p>
<p><font face="monospace">The 2 Core Only case see a lot of
improvements with the compiler tuning. PetClinic is again an
outlier.</font></p>
<p><font face="monospace">Benchmark Desktop/Server Class
(28 Cores) 2 Cores Only<br>
----------------------------------------------------------------------------<br>
Helidon Quick Start 3.60 -> 3.59x ~ 3.53
-> 4.11x ++<br>
JavacBenchApp 50 source files 2.17 -> 2.21x ~ 2.74
-> 3.17x ++<br>
Micronaut First App Demo 2.85 -> 2.91x + 4.39
-> 4.90x ++<br>
Quarkus Getting Started Demo 2.73 -> 2.97x ++ 2.95
-> 3.74x +++<br>
Spring-boot Getting Started Demo 3.96 -> 4.13x ++ 3.70
-> 4.70x +++<br>
Spring PetClinic Demo 3.24 -> 3.33x + 3.04
-> 3.03x ~</font></p>
<p><font face="monospace">(The +, -, ~ are calculated by my eyeballs
so not very scientific :-)</font></p>
<p><font face="monospace"><br>
</font></p>
<p><font face="monospace"><br>
</font></p>
</div>
</blockquote></div>