Hi!
I noticed that in the Cargo.toml file Link-Time Optimization (LTO) for the project is still 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 binary's CPU performance a bit due to more aggressive compiler optimizations. If you want to read more about LTO and its possible modes, I recommend starting from this Rustc documentation. Additionally, codegen-units = 1 (CU1) option can help too in a similar to LTO way, so I recommend to enable it as well. This issue is about enabling the options above for wasm-pack itself, not about adding additional Cargo flags for wasm builds.
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. Probably, you will be interested in enabling more flags :)
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
I have made quick tests (AMD Ryzen 9 5900x, Fedora 43, Rust 1.94, the latest version of the project at the moment, cargo build --release command, without stripping) - here are the results:
- Current Release profile: 7.1 Mib, clean build time: 17s
- Release profile + ThinLTO + CU1: 6.1 Mib, clean build time: 23s
- Release profile + FatLTO + CU1: 5.5 Mib, clean build time: 37s
Build time increase shouldn't be a problem since we enable it only for the Release profile. By enabling it, we will improve versions of the binary: cargo install-ed and released via GitHub Releases (after the next release ofc).
Thank you.
Hi!
I noticed that in the
Cargo.tomlfile Link-Time Optimization (LTO) for the project is still 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 binary's CPU performance a bit due to more aggressive compiler optimizations. If you want to read more about LTO and its possible modes, I recommend starting from this Rustc documentation. Additionally,codegen-units = 1(CU1) option can help too in a similar to LTO way, so I recommend to enable it as well. This issue is about enabling the options above forwasm-packitself, not about adding additional Cargo flags for wasm builds.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. Probably, you will be interested in enabling more flags :)Basically, it can be enabled with the following lines to the root Cargo.toml file:
I have made quick tests (AMD Ryzen 9 5900x, Fedora 43, Rust 1.94, the latest version of the project at the moment,
cargo build --releasecommand, without stripping) - here are the results:Build time increase shouldn't be a problem since we enable it only for the Release profile. By enabling it, we will improve versions of the binary:
cargo install-ed and released via GitHub Releases (after the next release ofc).Thank you.