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 CPU performance a bit due to more aggressive compiler optimizations. Additionally, codegen-units = 1 (CU1) 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 this ripgrep profile (like stripping and other things).
Basically, it can be enabled with the following lines to the root Cargo.toml file:
[profile.release]
codegen-units = 1
lto = true # FatLTO - the most aggressive LTO version
<possible other options like strip = true>
I have made quick tests (Macbook M1 Pro, macOS Tahoe 24.1, Rust 1.95, cargo build -r build command, without stripping) - here are the results for the rhwp CLI:
- Current Release profile: 10.7 Mib, clean build time: 58s
- Release + FatLTO + CU1: 8.2 Mib, clean build time: 2m 26s
Build time increase shouldn't be a problem since we enable it only for the Release profile - in this case, we would not affect the development lifecycle. If the proposed settings are added to the Cargo.toml file, all binaries (including GitHub Actions-built and released binaries) will be built with the new options automatically.
Thank you.
Hi!
I noticed that in the
Cargo.tomlfile 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 CPU performance a bit due to more aggressive compiler optimizations. Additionally,codegen-units = 1(CU1) 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 this
ripgrepprofile (like stripping and other things).Basically, it can be enabled with the following lines to the root Cargo.toml file:
I have made quick tests (Macbook M1 Pro, macOS Tahoe 24.1, Rust 1.95,
cargo build -rbuild command, without stripping) - here are the results for therhwpCLI:Build time increase shouldn't be a problem since we enable it only for the Release profile - in this case, we would not affect the development lifecycle. If the proposed settings are added to the Cargo.toml file, all binaries (including GitHub Actions-built and released binaries) will be built with the new options automatically.
Thank you.