最佳化疊代速度
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
回報問題open_in_new
查看原始碼open_in_new
。
。
。
。
夜間
。
。
。
。
7.3
。
。
7.2
。
。
7.1
。
。
7.0
。
。
6.5
。
。
本頁面說明如何在執行 Bazel 時最佳化 Bazel 的建構效能
重複執行。
Bazel 的執行階段狀態
Bazel 叫用牽涉到數個互動部分。
bazel
指令列介面 (CLI) 是面向使用者的前端工具
並接收使用者的指令
CLI 工具會啟動 Bazel 伺服器
每種不同的輸出基礎都不太一樣
Bazel 伺服器通常可持續運作,但會在閒置一段時間後關閉
以免浪費資源
Bazel 伺服器會針對特定指令執行載入和分析步驟
(build
、run
、cquery
等) 則會建構必要部分
會包含建構圖表的具體內容產生的資料結構會保留在
將 Bazel 伺服器當做分析快取的一部分。
Bazel 伺服器也能執行動作執行作業,
,針對
系統也會快取動作執行,也就是在動作快取 (或
執行快取,可以是本機或遠端,而且可能會共用
可在 Bazel 伺服器之間進行通訊
Bazel 叫用的結果會提供在輸出樹狀結構中。
反覆執行 Bazel
在一般的開發人員工作流程中,建構 (或執行) 一段程式碼很常見
經常以極高的頻率重複執行,例如解析某些編譯作業
或調查失敗的測試)。在這種情況下
相較於相較於延遲時間bazel
基礎的重複動作 (例如叫用編譯器或執行測試)。
有鑑於此,我們將再次查看 Bazel 的執行階段狀態:
分析快取是重要的資料,相當可觀
只須投入於冷執行作業的載入和分析階段 (也就是執行
在啟動 Bazel 伺服器之後,或捨棄分析快取時)。
以成功的單一冷版本 (例如正式版) 來說,這筆費用是
但若要重複建構相同的目標,請務必考量這一點
所以不會在每次叫用時重複相同費用。
分析快取比較不穩定。首先是處理中
因此遺失伺服器會失去快取。但快取
同樣很容易失效,例如許多 bazel
指令列標記
快取就會遭到捨棄。這是因為許多標記會影響
圖表 (例如
可設定的屬性)。部分標記
變更也可能會導致 Bazel 伺服器重新啟動,例如變更
啟動選項)。
優質的執行快取對於建構效能也有幫助。執行作業
可以儲存在本機
在磁碟上,或
遠端。快取可在
Bazel 伺服器就是開發人員
避免捨棄分析快取
只有在分析快取被捨棄或出現錯誤
伺服器重新啟動。疊代使用時,應避免以下其中一種做法:
在疊代過程中變更 bazel
標記時,請留意以下事項
工作流程例如,將 bazel build -c opt
與 bazel cquery
混合使用
會導致每個指令捨棄另一個指令的分析快取。一般來說
會試著在特定工作流程中使用一組固定的標記
遺失 Bazel 伺服器會失去分析快取。Bazel 伺服器
可設定閒置
螢幕就會關閉您可以透過
bazelrc 檔案來使用。伺服器在啟動時也已重新啟動
標記有變動,因此請盡量避免變更這些標記。
請注意,當您按下滑鼠,系統會終止 Bazel 伺服器
Bazel 在執行時重複 Ctrl-C 鍵。其實有人想節省時間
終止不再需要的執行中版本,但只需按下
按下 Ctrl-C 鍵一次,可要求順利結束目前的叫用作業。
如果要從同一個工作區使用多組標記
使用多個不同的輸出基準,並切換為 --output_base
旗標。每個輸出基礎都會取得自己的 Bazel 伺服器。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-08-13 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u4e0a\u6b21\u66f4\u65b0\u6642\u9593\uff1a2024-08-13 (\u4e16\u754c\u6a19\u6e96\u6642\u9593)\u3002"}
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2024-08-13 (世界標準時間)。"],[],[]]