99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Rust 采用發(fā)布配置自定義構建

2023-03-22 15:12 更新
ch14-01-release-profiles.md
commit d44317c3122b44fb713aba66cc295dee3453b24b

在 Rust 中 發(fā)布配置release profiles)是預定義的、可定制的帶有不同選項的配置,他們允許程序員更靈活地控制代碼編譯的多種選項。每一個配置都彼此相互獨立。

Cargo 有兩個主要的配置:運行 cargo build 時采用的 dev 配置和運行 cargo build --release 的 release 配置。dev 配置被定義為開發(fā)時的好的默認配置,release 配置則有著良好的發(fā)布構建的默認配置。

這些配置名稱可能很眼熟,因為它們出現在構建的輸出中:

$ 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.toml 文件中沒有任何 [profile.*] 部分的時候,Cargo 會對每一個配置都采用默認設置。通過增加任何希望定制的配置對應的 [profile.*] 部分,我們可以選擇覆蓋任意默認設置的子集。例如,如下是 dev 和 release 配置的 opt-level 設置的默認值:

文件名: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

opt-level 設置控制 Rust 會對代碼進行何種程度的優(yōu)化。這個配置的值從 0 到 3。越高的優(yōu)化級別需要更多的時間編譯,所以如果你在進行開發(fā)并經常編譯,可能會希望在犧牲一些代碼性能的情況下編譯得快一些。這就是為什么 dev 的 opt-level 默認為 0。當你準備發(fā)布時,花費更多時間在編譯上則更好。只需要在發(fā)布模式編譯一次,而編譯出來的程序則會運行很多次,所以發(fā)布模式用更長的編譯時間換取運行更快的代碼。這正是為什么 release 配置的 opt-level 默認為 3。

我們可以選擇通過在 Cargo.toml 增加不同的值來覆蓋任何默認設置。比如,如果我們想要在開發(fā)配置中使用級別 1 的優(yōu)化,則可以在 Cargo.toml 中增加這兩行:

文件名: Cargo.toml

[profile.dev]
opt-level = 1

這會覆蓋默認的設置 0?,F在運行 cargo build 時,Cargo 將會使用 dev 的默認配置加上定制的 opt-level。因為 opt-level 設置為 1,Cargo 會比默認進行更多的優(yōu)化,但是沒有發(fā)布構建那么多。

對于每個配置的設置和其默認值的完整列表,請查看 Cargo 的文檔


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號