Введение
Добро пожаловать в Настройку сборок с помощью профилей выпуска. Эта лабораторная работа является частью Rust Book. Вы можете практиковать свои навыки Rust в LabEx.
В этой лабораторной работе мы изучим, как настраивать профили выпуска Rust, добавляя разделы [profile.*] в файл Cargo.toml и переопределяя параметры по умолчанию, такие как opt-level для оптимизации.
Настройка сборок с помощью профилей выпуска
В 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 имеет настройки по умолчанию для каждого из профилей, которые применяются, когда вы не явно добавляете какие-либо разделы [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 применит больше оптимизаций, чем по умолчанию, но не столько, сколько в выпускной сборке.
Для получения полного списка параметров конфигурации и значений по умолчанию для каждого профиля см. документацию Cargo по адресу https://doc.rust-lang.org/cargo/reference/profiles.html.
Резюме
Поздравляем! Вы завершили лабораторную работу "Настройка сборок с помощью профилей выпуска". Вы можете практиковать в LabEx более лабораторных работ, чтобы улучшить свои навыки.