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 профили выпуска – это предопределенные настраиваемые профили с разными конфигурациями, которые позволяют программисту лучше контролировать различные параметры компиляции кода. Каждый профиль настраивается независимо от других.

У 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.