為什麼 Envoy 編譯需要這麼久?

Envoy 編譯需要大量運算資源的原因有幾個:

  • C++ 程式碼,尤其是帶有模板的 C++ 程式碼,編譯速度很慢。

  • Envoy 測試使用 gmock,它大量使用模板,因此編譯速度非常慢。

  • Envoy 程式碼的數量以及擴充功能的數量持續快速增長,加劇了這個問題。

我們希望 Envoy 的編譯速度更快,特別是因為我們知道這會阻礙偶爾的貢獻,但不幸的是,這個問題沒有簡單的答案。在找到更好的解決方案(例如,將某些擴充功能從主儲存庫中分離出來、預編譯標頭等)之前,我們建議使用功能強大的機器進行 Envoy 開發。最好的方法是

  • 使用基於雲端的虛擬機器以及像 vscode remote development 這樣的工具。擁有 36 個以上的核心和每個核心約 2 GiB 的 RAM 仍然可以在合理的時間內建置和測試整個原始碼樹。

  • 如果使用雲端機器,請務必在本地臨時 SSD 上建置,而不是在像 EBS 這樣的遠端區塊儲存上建置。建置涉及大量磁碟存取,如果沒有使用快速的本地磁碟機,將會受到磁碟的限制。