IncrediBuild 加速原理

2021-06-01 11:38:13 字數 1316 閱讀 7368

雖然現在計算機的運算速度不斷提高, 但大型軟體的編譯速度仍然是個漫長的過程,我所在的專案, 軟體大小約為200k行, 在vc6下的編譯時間為3分鐘(p4 1.8g, 512m), 在交叉編譯時更慢, 提高編譯速度將能夠直接提高前期調測的效率. 本文將介紹提高編譯速度的有效方法之一 - 分布式編譯.

分布式編譯的原理很簡單, 就是將編譯的整個工作量通過分布計算的方法分配到多個計算機上執行, 這樣可以獲得極大的效率提公升. 由於分布式計算的技術相對成熟, 現在可以見到的分布式編譯軟體也較多. 一般來說, 乙個分布式編譯軟體不是乙個編譯器, 而是附著在某個編譯器上的分布計算管理軟體, 使得對於特定的編譯器可以實現分布式編譯.

常見的分布式編譯器通常是對應於特定的c/c++編譯器, 如gcc, visual c++, 因為這些編譯器使用相當廣泛且開放度高. 因而實現分布式編譯的意義更大. 下面分別以visual c++和gcc為例說明兩個典型的分布式編譯軟體:

1)incredibuild

這是乙個對應visual c++ 的分布式編譯軟體, 通過visual c++強大的ide擴充套件功能, 它有著非常友好的介面, 可以將整個分布式編譯過程直觀的展現給使用者, 並且它通過乙個"虛擬機器"的技術, 使能編譯的參與者可以與編譯發起者有著不同的系統配置(windows作業系統版本, 庫檔案等), 甚至無需在參與者機器上安裝visual c++.

incredibuild需要乙個特定的計算機做仲裁者, 其他的所有計算機作為客戶, 有了仲裁者的好處是, 可以有它來統一安排所有客戶端所發起的編譯請求, 一旦某個客戶發起編譯請求, 則仲裁者會根據其他客戶的cpu空閒情況而安排分布式編譯, 當多個客戶同時發起編譯請求時, 仲裁者會自動平衡分布計算負擔,使得編譯參與者不會占用過多的cpu.

在我們的專案中, 使用incredibuild的結果如下:

未使用: 3分鐘

5客戶: 40秒

10客戶: 25秒

可見incredibuild對編譯效能的巨大提公升, 並且在取得如此效能提公升的同時, 仲裁者和編譯參與者的cpu佔用率很低. 保持相當高的可用性, 這是很難得的.

incridibuild的缺點是目前僅支援visual c++ 6編譯器和.net編譯器, 也僅適用於windows平台. 適用範圍相對較窄.

2)distcc

這是乙個gnu的分布式c++編譯器, 適用於一切gcc相容的c++編譯器, distcc也具有很好的跨平台特性, 支援linux, xfree86, cygwin等平台. 使用範圍相當廣泛.

distcc和incredibuild的差別在與distcc不使用仲裁者, 直接由客戶端對其他客戶端發起編譯請求. 所以每個客戶端都需要知道其他客戶端的位置, 並且當多個客戶發起編譯請求時不易做平衡處理.

IncrediBuild 加速原理

雖然現在計算機的運算速度不斷提高,但大型軟體的編譯速度仍然是個漫長的過程,我所在的專案,軟體大小約為200k行,在vc6下的編譯時間為3分鐘 p4 1.8g,512m 在交叉編譯時更慢,提高編譯速度將能夠直接提高前期調測的效率.本文將介紹提高編譯速度的有效方法之一 分布式編譯.分布式編譯的原理很簡單...

IncrediBuild 批處理指令碼

個人認為,自動化指令碼是提高程式設計師生活質量的重要工具之一。在本貼記錄下incredibuild的命令列呼叫 prj 要編譯什麼工程,工程名用逗號隔開,支援 和?萬用字元 build 就是編譯 rebuild 就是clean build openmonitor 會把編譯過程視窗開啟 cfg 編譯條...

IncrediBuild 進行聯合編譯

incredibuild是一款程式設計開發工具,可加快c c 的編譯和建立速度。能無縫整合到visual studio開發環境中,採用xoreax 的多執行緒處理技術,不必改變專案檔案的 編譯速度慢向來是c c程式語言的乙個最大的弱點.開發者花費幾個小時在工作站上等待整個產品的建立,或者一天好多次花...