Настройка сборок с помощью профилей выпуска

Beginner

This tutorial is from open-source community. Access the source code

Введение

Добро пожаловать в Настройку сборок с помощью профилей выпуска. Эта лабораторная работа является частью 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 более лабораторных работ, чтобы улучшить свои навыки.