W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
ch14-01-release-profiles.md
commit d44317c3122b44fb713aba66cc295dee3453b24b
在 Rust 中 發(fā)布配置(release profiles)是預(yù)定義的、可定制的帶有不同選項(xiàng)的配置,他們?cè)试S程序員更靈活地控制代碼編譯的多種選項(xiàng)。每一個(gè)配置都彼此相互獨(dú)立。
Cargo 有兩個(gè)主要的配置:運(yùn)行 cargo build
時(shí)采用的 dev
配置和運(yùn)行 cargo build --release
的 release
配置。dev
配置被定義為開發(fā)時(shí)的好的默認(rèn)配置,release
配置則有著良好的發(fā)布構(gòu)建的默認(rèn)配置。
這些配置名稱可能很眼熟,因?yàn)樗鼈兂霈F(xiàn)在構(gòu)建的輸出中:
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
Finished release [optimized] target(s) in 0.0s
構(gòu)建輸出中的 dev
和 release
表明編譯器在使用不同的配置。
當(dāng)項(xiàng)目的 Cargo.toml 文件中沒有任何 [profile.*]
部分的時(shí)候,Cargo 會(huì)對(duì)每一個(gè)配置都采用默認(rèn)設(shè)置。通過增加任何希望定制的配置對(duì)應(yīng)的 [profile.*]
部分,我們可以選擇覆蓋任意默認(rèn)設(shè)置的子集。例如,如下是 dev
和 release
配置的 opt-level
設(shè)置的默認(rèn)值:
文件名: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
opt-level
設(shè)置控制 Rust 會(huì)對(duì)代碼進(jìn)行何種程度的優(yōu)化。這個(gè)配置的值從 0 到 3。越高的優(yōu)化級(jí)別需要更多的時(shí)間編譯,所以如果你在進(jìn)行開發(fā)并經(jīng)常編譯,可能會(huì)希望在犧牲一些代碼性能的情況下編譯得快一些。這就是為什么 dev
的 opt-level
默認(rèn)為 0
。當(dāng)你準(zhǔn)備發(fā)布時(shí),花費(fèi)更多時(shí)間在編譯上則更好。只需要在發(fā)布模式編譯一次,而編譯出來的程序則會(huì)運(yùn)行很多次,所以發(fā)布模式用更長(zhǎng)的編譯時(shí)間換取運(yùn)行更快的代碼。這正是為什么 release
配置的 opt-level
默認(rèn)為 3
。
我們可以選擇通過在 Cargo.toml 增加不同的值來覆蓋任何默認(rèn)設(shè)置。比如,如果我們想要在開發(fā)配置中使用級(jí)別 1 的優(yōu)化,則可以在 Cargo.toml 中增加這兩行:
文件名: Cargo.toml
[profile.dev]
opt-level = 1
這會(huì)覆蓋默認(rèn)的設(shè)置 0
。現(xiàn)在運(yùn)行 cargo build
時(shí),Cargo 將會(huì)使用 dev
的默認(rèn)配置加上定制的 opt-level
。因?yàn)?nbsp;opt-level
設(shè)置為 1
,Cargo 會(huì)比默認(rèn)進(jìn)行更多的優(yōu)化,但是沒有發(fā)布構(gòu)建那么多。
對(duì)于每個(gè)配置的設(shè)置和其默認(rèn)值的完整列表,請(qǐng)查看 Cargo 的文檔。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: