-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Hi!
I noticed that in the Cargo.toml file Link-Time Optimization (LTO) for the project is not enabled. I suggest switching it on since it will reduce the binary size (always a good thing to have) and will likely improve the application's performance a bit. If you want to read more about LTO and its possible modes, I recommend starting from this Rustc documentation. Additionally, codegen-units option can help too in a similar to LTO way, so I recommend to enable it as well.
I recommend enabling LTO only for Release builds so developers experience won't be affected by the increased build time. Actually, I can propose to use flags directly from the ripgrep profile.
Basically, it can be enabled with the following lines to the root Cargo.toml file:
[profile.release]
codegen-units = 1
lto = true # FullLTO - the most aggressive LTO version
I have made quick tests (AMD Ryzen 9 5900x, Fedora 43, Rust 1.91.1, the latest version of the project at the moment, cargo build --release command, without stripping) - here are the results:
- Release (the current profile): 23 Mib, clean build time: 39s
- Release + FullLTO + CU1: 15 Mib, clean build time: 1m 36s
I think this build time overhead is okay since it affects only Release builds.
Thank you.