Настройка сборок с помощью профилей выпуска
В Rust профили выпуска – это предопределенные настраиваемые профили с разными конфигурациями, которые позволяют программисту лучше контролировать различные параметры компиляции кода. Каждый профиль настраивается независимо от других.
У Cargo есть два основных профиля: профиль dev, который Cargo использует при
запуске cargo build, и профиль release, который Cargo использует при
запуске cargo build --release. Профиль dev определен с хорошими значениями
по умолчанию для разработки, а профиль release имеет хорошие значения по
умолчанию для release-сборок.
Эти имена профилей могут быть знакомы вам по выводу ваших сборок:
$ 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 и release – это те самые разные профили, которые использует
компилятор.
У Cargo есть настройки по умолчанию для каждого профиля; они применяются, если
вы явно не добавили разделы [profile.*] в файл Cargo.toml проекта. Добавляя
разделы [profile.*] для любого профиля, который хотите настроить, вы
переопределяете любую часть настроек по умолчанию. Например, вот значения по
умолчанию для настройки opt-level у профилей dev и release:
Имя файла: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Настройка opt-level управляет количеством оптимизаций, которые Rust применит
к вашему коду, в диапазоне от 0 до 3. Применение большего числа оптимизаций
увеличивает время компиляции, поэтому если вы находитесь в процессе разработки
и часто компилируете код, вам понадобится меньше оптимизаций, чтобы компиляция
шла быстрее, даже если итоговый код будет работать медленнее. Поэтому значение
opt-level по умолчанию для dev равно 0. Когда вы готовы выпустить код,
лучше потратить больше времени на компиляцию. В режиме выпуска вы
скомпилируете программу только один раз, но запускать скомпилированную
программу будете много раз, поэтому режим выпуска обменивает более долгое
время компиляции на более быстрый код. Именно поэтому значение opt-level по
умолчанию для профиля release равно 3.
Вы можете переопределить настройку по умолчанию, добавив для нее другое значение в Cargo.toml. Например, если мы хотим использовать уровень оптимизации 1 в профиле разработки, можно добавить эти две строки в файл Cargo.toml нашего проекта:
Имя файла: Cargo.toml
[profile.dev]
opt-level = 1
Этот код переопределяет настройку по умолчанию 0. Теперь, когда мы запускаем
cargo build, Cargo будет использовать значения по умолчанию для профиля
dev плюс нашу настройку opt-level. Поскольку мы установили opt-level в
1, Cargo применит больше оптимизаций, чем по умолчанию, но не так много, как
в release-сборке.
Полный список параметров конфигурации и значений по умолчанию для каждого профиля смотрите в документации Cargo.