💾 Archived View for thasmanie.fr › rust-binary-size.gmi captured on 2023-06-16 at 15:57:06. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Diminuer la taille d'un binaire rust

publié le 2022/08/26

retour

Intro

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.

min-sized-rust

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 :)

UPX

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"

Liens

Projet gitlab min-sized-rust

UPX pour compresser les binaires

The Rust Performance Book