2010年7月8日 星期四

[C++ 程式設計]加速編譯方法 - 編譯器設定

編譯器的環境設定也是引響編譯速度的主要原因之一,而環境設定的議題可以從許多的面向討論。

 最佳化設定

首先最佳化的設定,在 Visual Studio 或是 gcc 上都有相似的設定,不同的最佳化程度可能區分成 O1 、 O2 、 O3 等,而隨著最佳化的效果越好,所需要花費的編譯時間也相對越高。通成數字越大表示使用越高級的最佳化,因此在除錯或是想要快速編譯時,可以選擇較低階的最佳化設定,如 O1,或是關閉任何最佳化選項。



 多核處理器

若我們的電腦是使用多何處理器時,請使用編譯器多工功能,讓多個專案能同時編譯,以 Visual Studio 為例,可在 Tools > Options... > Projects and Solutions > Build and Run > maximum number of parallel project builds. 下設定多工的數量,基本上數量的設定與處理器多何數量一致會得到較好的結果。gcc 下可以加入 -j 就可指定平行處理工作的數量。

 前編譯標頭檔 (Precompiled Header) 


若能將變化最小的、最常被使用的程式碼與標頭檔暫存起來,將能提昇城市的編譯速度。大多數的編譯器提供了precompiled header 的功能,開發者可以將許多的標頭檔 include 再同一份標頭檔中。


 // predefine.h
 #include "A.h"
 #include "B.h"
 #include "C.h"
 ...

使得這些標頭檔在編譯過程中指被編譯一次,這可有效的降低那些重複性工作。但 precompiled header 是不能被亂用的,若有一個標頭檔經常被更動,但又包含在 precompiled header file 中,這時專案的開發將會變成一個大災難,會導致整個專案時常重新編譯。因此, precompiled header 的功能,請用於那些第三方函式庫或確定不會常更動的程式碼上,這樣才能有效的提升整體專案的編譯速度。

 除錯資訊 (Debug Information)

編譯 release 版本時請確認是否有產生 debug information ,若有請將它關閉,這樣可加速編譯時間。但若關閉除錯資訊,將無法進行除錯等相關工作。

沒有留言:

張貼留言