Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

В Rust профили выпуска (release profiles) — это предопределённые и настраиваемые профили с разными конфигурациями, которые дают программисту больше контроля над различными параметрами компиляции кода. Каждый профиль настраивается независимо от других.

У Cargo есть два основных профиля: профиль dev, который Cargo использует при выполнении cargo build, и профиль release, который Cargo использует при выполнении cargo build --release. Профиль dev задан с хорошими значениями по умолчанию для разработки, а профиль 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 применит больше оптимизаций, чем по умолчанию, но не так много, как в сборке выпуска.

Полный список параметров конфигурации и значений по умолчанию для каждого профиля см. в документации Cargo.