Налаштування збірок за допомогою профілів релізу
У Rust, профілі релізу — це попередньо визначені, налаштовувані профілі з різними конфігураціями, які дають змогу програмісту мати більше контролю над різними параметрами для компіляції коду. Кожен профіль налаштовується незалежно від інших.
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:
Filename: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
Налаштування opt-level керує кількістю оптимізацій, які Rust застосує до
вашого коду, у діапазоні від 0 до 3. Застосування більшої кількості оптимізацій збільшує
час компіляції, тож якщо ви перебуваєте в розробці й часто компілюєте свій код,
ви захочете менше оптимізацій, щоб компілювати швидше, навіть якщо результатний код
працює повільніше. Типове значення opt-level для dev тому — 0. Коли ви
готові випустити свій код, найкраще витратити більше часу на компіляцію. Ви лише
один раз скомпілюєте в режимі release, але запускатимете скомпільовану програму багато разів,
тому режим release обмінює довший час компіляції на код, який працює швидше. Саме
тому типове значення opt-level для профілю release — 3.
Ви можете перевизначити типове налаштування, додавши для нього інше значення в Cargo.toml. Наприклад, якщо ми хочемо використовувати рівень оптимізації 1 у профілі розробки, ми можемо додати ці два рядки до файла Cargo.toml нашого проєкту:
Filename: Cargo.toml
[profile.dev]
opt-level = 1
Цей код перевизначає типове налаштування 0. Тепер, коли ми запускаємо cargo build,
Cargo використовуватиме типові значення для профілю dev плюс наше налаштування
opt-level. Оскільки ми встановили opt-level на 1, Cargo застосує більше
оптимізацій, ніж за замовчуванням, але не так багато, як у збірці release.
Повний список параметрів конфігурації та типових значень для кожного профілю дивіться в документації Cargo.