Настройка сборок с профилями релизов
В Rust профили выпуска - это предопределённые и настраиваемые профили с различными конфигурациями, которые позволяют программисту лучше контролировать различные параметры компиляции кода. Каждый профиль настраивается независимо от других.
Cargo имеет два основных профиля: профиль dev
используемый Cargo при запуске cargo build
и профиль release
используемый Cargo при запуске cargo build --release
. Профиль dev
определён со значениями по умолчанию для разработки, а профиль release
имеет значения по умолчанию для релиз сборок.
Эти имена профилей могут быть знакомы по результатам ваших сборок:
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
Finished release [optimized] target(s) in 0.0s
Выводы для dev
и release
, показанные при сборке указывают, что компилятор использует разные профили.
Cargo имеет настройки по умолчанию для каждого из профилей, которые применяются, когда в файле проекта Cargo.toml нет разделов [profile.*]
. Добавляя разделы [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 будет применять больше оптимизаций, чем по умолчанию, но не так много, как при сборке релиза.
Полный список параметров конфигурации и значений по умолчанию для каждого профиля вы можете найти в документации Cargo.