💾 Archived View for thasmanie.fr › rust-binary-size.gmi captured on 2024-08-31 at 12:03:53. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
publié le 2022/08/26
Je me suis mis à un peu coder en Rust cette année, et je vais partager quelques astuces que je trouve sympa.
En compilant un petit projet personnel, j'arrive à un binaire d'environ 10 Mo, je me dis que ça fait beaucoup. Je n'ai pas beaucoup de dépendances : reqwest et warp pour la partie client/serveur http, et des libs courantes pour les arguments, un fichier de conf, et les logs.
Je tombe donc sur le projet min-sized-rust qui donne des astuces et tous le détails pour réduire la taille. Je vais donc ajouter les lignes suivantes dans mon Cargo.toml :
[profile.release] panic = 'abort' # No unwinding on panic strip = true # Automatically strip symbols from the binary. opt-level = "s" # Optimize for size. lto = true codegen-units = 1
Avec ces premières optimisations, je tombe à un binaire de 3,5 Mo, c'est pas mal :)
Et pour finir, upx réduit le binaire à 1,1 Mo, joli !
Mais attention, ce dernier réduit juste la taille sur le disque et pour les transferts réseau. En effet, il transforme le binaire pour lui ajouter une étape de décompression avant de l'exécuter.
Donc en mémoire, le binaire reviendra à 3,5 Mo (sans compter l'exécution qui s'en suit).
Attention aussi car sur certains OS (Windows ?) il décompresse le binaire sur disque, il lui faudra donc les permissions pour le faire.
Ça m'a permis aussi de découvrir le "Rust Performance Book"