我使用的是Boost Program Options,編譯非常小的C++代碼需要很長時間(10秒甚至更多)。花了1秒鐘的時間編譯沒有增強庫的代碼。使用boost庫加快編譯/鏈接時間
任何想法如何提高編譯/鏈接時間與增強庫?它是跨平臺的,所以我需要用Mac OS X/Linux/PC編譯代碼。
我使用的是Boost Program Options,編譯非常小的C++代碼需要很長時間(10秒甚至更多)。花了1秒鐘的時間編譯沒有增強庫的代碼。使用boost庫加快編譯/鏈接時間
任何想法如何提高編譯/鏈接時間與增強庫?它是跨平臺的,所以我需要用Mac OS X/Linux/PC編譯代碼。
確實沒有什麼可以做,除了通常的招數:
boost/thread.hpp
,也與特定的頭文件的子目錄,像boost/thread/shared_mutex.hpp
),.cpp
文件。如果將其包含在標題中,則每次編譯包含該標題的翻譯單元時都必須對其進行編譯。根據一般經驗,儘量減少頭文件中的代碼量,所有主要編譯器都支持預編譯頭文件。使用這些來減少編譯時間,最後但並非最不重要的是,最後一個選項就是不使用這些特定的Boost庫。
爲了方便起見,我有時候會使用某些Boost庫,如果/編譯時間變得太糟糕,我開始考慮編譯哪些庫是昂貴的,哪些庫可以用相對簡單的代碼替換。通常情況下,Boost受到如此普遍的要求的限制。如果你不需要對8年前的編譯器有用的東西,或者不需要跨越很多不同類型的東西,那麼你可以寫一個簡單的替代品,它適合你,幾乎不需要時間編譯。
爲了減少編譯時間,我與compiler firewall idiom取得了很好的成功。
提升的某些部分非常有用。許多組件雖然看起來被過度工程化,並且僅僅因爲它們僅在頭文件中實現而得到了糟糕的頭文件依賴性。所以你最終不必要地重新編譯boost代碼,而靜態或共享庫會很好地完成。 – 2011-02-17 15:55:45
幾乎所有足夠現代編譯Boost的編譯器也支持預編譯頭文件。這些概念上相當於僅用於純文本頭庫的靜態庫。 – MSalters 2011-02-17 16:38:34
看到這裏,http://www.boost.org/boost-build2/doc/html/bbv2/reference/precompiled_headers.html – Dilawar 2012-01-08 22:43:02