完整的編譯過程,除了編譯時間(compile time)之外,另一個花費時間的編譯工作就是連結時間(linking time)。linking 的目的是將所有編譯後的目標檔 (*.obj) 組合成可執行的執行檔,因此組合的動作會隨程式的複雜度越高花費越多時間。因此是否曾思考過,那些已經被編譯過的程式以及執行檔可不需重新經過編譯與組合的程序,能有效的被重複利用。
分享函式庫 (Share Libraries)
使用 share libraries 的方法可避免重複編譯與冗長的連結時間,
2010年7月26日 星期一
[C++ 程式設計]加速編譯方法 - 分享函式庫
2010年7月8日 星期四
[C++ 程式設計]加速編譯方法 - 編譯器設定
編譯器的環境設定也是引響編譯速度的主要原因之一,而環境設定的議題可以從許多的面向討論。
最佳化設定
首先最佳化的設定,在 Visual Studio 或是 gcc 上都有相似的設定,不同的最佳化程度可能區分成 O1 、 O2 、 O3 等,而隨著最佳化的效果越好,所需要花費的編譯時間也相對越高。通成數字越大表示使用越高級的最佳化,因此在除錯或是想要快速編譯時,可以選擇較低階的最佳化設定,如 O1,或是關閉任何最佳化選項。
2010年7月7日 星期三
[C++ 程式設計]加速編譯方法 - 相依性問題
降低程式相依性
儘可能減少在 header 檔中 include 多餘的 header 檔。因為這樣會提升物件之間的相依性,當我們更動 header 檔 A.h 時,編譯器會找出所有 include "A.h" 的 header 檔,會將他們也當做更動過的檔案,所有更動過的檔案都必須重新被編譯。因此沒有妥善規劃好標頭檔的相依性,將會導致許多的程式都需要被重新編譯,這將會浪費更多的編譯時間。
訂閱:
文章 (Atom)