Dostosowywanie kompilacji za pomocą profili wydania
W Rust profile wydania to predefiniowane, dostosowywalne profile z różnymi konfiguracjami, które pozwalają programistom na większą kontrolę nad różnymi opcjami kompilacji kodu. Każdy profil jest konfigurowany niezależnie od innych.
Cargo ma dwa główne profile: profil dev, którego Cargo używa podczas uruchamiania cargo build, oraz profil release, którego Cargo używa podczas uruchamiania cargo build --release. Profil dev jest zdefiniowany z dobrymi wartościami domyślnymi do tworzenia oprogramowania, a profil release ma dobre wartości domyślne dla kompilacji wydania.
Te nazwy profili mogą być znane z danych wyjściowych Twoich kompilacji:
$ cargo build
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
Finished `release` profile [optimized] target(s) in 0.32s
dev i release to różne profile używane przez kompilator.
Cargo ma domyślne ustawienia dla każdego z profili, które są stosowane, gdy nie dodałeś jawnie żadnych sekcji [profile.*] do pliku Cargo.toml projektu. Dodając sekcje [profile.*] dla dowolnego profilu, który chcesz dostosować, nadpisujesz dowolny podzbiór domyślnych ustawień. Na przykład, oto domyślne wartości ustawienia opt-level dla profili dev i release:
Nazwa pliku: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Ustawienie opt-level kontroluje liczbę optymalizacji, które Rust zastosuje do Twojego kodu, w zakresie od 0 do 3. Zastosowanie większej liczby optymalizacji wydłuża czas kompilacji, więc jeśli jesteś w fazie rozwoju i często kompilujesz swój kod, będziesz chciał mniej optymalizacji, aby kompilować szybciej, nawet jeśli wynikowy kod będzie działał wolniej. Domyślny opt-level dla dev wynosi zatem 0. Kiedy jesteś gotowy do wydania swojego kodu, najlepiej poświęcić więcej czasu na kompilację. Skompilujesz w trybie wydania tylko raz, ale będziesz uruchamiać skompilowany program wiele razy, więc tryb wydania wymienia dłuższy czas kompilacji na szybszy kod. Dlatego domyślny opt-level dla profilu release wynosi 3.
Możesz nadpisać domyślne ustawienie, dodając dla niego inną wartość w Cargo.toml. Na przykład, jeśli chcemy użyć poziomu optymalizacji 1 w profilu deweloperskim, możemy dodać te dwie linie do pliku Cargo.toml naszego projektu:
Nazwa pliku: Cargo.toml
[profile.dev]
opt-level = 1
Ten kod nadpisuje domyślne ustawienie 0. Teraz, gdy uruchomimy cargo build, Cargo użyje domyślnych ustawień dla profilu dev plus nasze dostosowanie opt-level. Ponieważ ustawiliśmy opt-level na 1, Cargo zastosuje więcej optymalizacji niż domyślnie, ale nie tak wiele, jak w kompilacji wydania.
Aby uzyskać pełną listę opcji konfiguracji i wartości domyślnych dla każdego profilu, zobacz dokumentację Cargo.