-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Significant increase of Quarkus compiled binary after upgrade from 3.6.7 to 3.7.1 #38600
Comments
Reproducer
Build output3.6.7
3.7.1
Observations
which is known to increase the binary size. TestChanging
cc @Karm |
This is pretty bad if you ask me :) |
@geoand this is not the default behavior though. This is only happening because the user is requesting all locales to be included and it's documented in https://github.com/Karm/quarkus/blob/c025a1b29c02b6a4b8b773d6041c9e50119147a0/docs/src/main/asciidoc/validation.adoc?plain=1#L400-L401 |
Oh, then I misread the investigation. Thanks for the clarification! |
I think we can close this issue, thanks @zakkak . |
Is this actually closed? I'm still seeing large native binary sizes (52.7MB) when: Quarkus 3.7.1 quarkus create application.properties: [INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GRAALVM 23.1 JDK 21.0.1+12-jvmci-23.1-b19 |
52 MB for a basic application looks like a lot. |
I think we need some further investigation.
... digging ... The same app created with Quarkus 2.16 is I also did an experiment with Quarkus 1.13.3.Final and RESTEasy Classic (not RESTEasy Reactive at first as I wasn't sure it was already there) and I ended up with a 29 MB binary. So we basically have our default REST app going like that:
This is not looking good. |
Do you also have numbers for 3.2? |
If I am not mistaken 2.16 is using GraalVM/Mandrel 22.3 In each of these updates we know that GraalVM/Mandrel increased the resulting binary size:
It's also worth keeping in mind that if the runtime performance is not impacted by these changes, while they bring some improvements in other aspects (like stability, debugging, etc.), the binary size shouldn't matter that much (at least in the common case). |
Here are some new data points obtained with:
|
I dunno, I can't say I'm excited about a 65% increase in binary size for a very simple app. |
@gsmet maybe you can add the graalVM version you used for each entry. The reason is that without large changes (so 3.x) we have a bump of +2 Mb between 3.1 and 3.2 and +# Mb between 3.4 and 3.5... |
similar issue in #38683 but more affecting time. |
Assuming that @gsmet used the default builder image of each version the table with the Mandrel/GraalVM version is:
Correct, we should either move this discussion in a different issue or edit the title (since we are now discussing a different thing than the issue reported originally). Now regarding the increases between 3.1 and 3.2, and later between 3.4 and 3.5 one can read https://quarkus.io/blog/mandrel-23-0-image-size-increase/ and https://quarkus.io/blog/mandrel-23-1-image-size-increase/ (at least for the part that Mandrel/GraalVM is responsible for). |
Discussed in #38572
Originally posted by vincejv February 3, 2024
Any one noticed a significant increase in the binaries compiled with 3.7.1 compared to 3.6.7? I'm using few Quarkus libraries on top of the framework, mostly just rest client related, and I have observed the docker image published in docker hub increased by 10mb+ (https://hub.docker.com/r/vincejv/qbittorrent-exporter/tags) 0.0.18 (37mb) vs 0.0.17 (28mb).
I thought removing support for older java version would actually reduce the binaries as it will remove legacy code?
Source code: https://github.com/vincejv/qbittorrent-exporter
The text was updated successfully, but these errors were encountered: