使用boost库时加快编译/链接时间

时间:2011-02-17 15:28:31

标签: c++ boost compiler-construction precompiled-headers

我正在使用Boost Program Options,用它来编译非常小的C ++代码需要相当长的时间(10秒甚至更长)。在没有boost库的情况下编译代码需要1秒钟。

知道如何使用boost库来增加编译/链接时间吗?它是跨平台的,所以我需要用Mac OS X / Linux / PC编译代码。

2 个答案:

答案 0 :(得分:16)

除了通常的技巧之外,你没有什么可以做的:

  • 最小化依赖关系:仅引入您真正需要的Boost标头,并尽可能使用特定标头(许多库具有单个“主”标头,例如boost/thread.hpp,但也包含具有特定标头的子目录,比如boost/thread/shared_mutex.hpp),
  • 尽可能依赖前向声明而不是包括整个标题
  • 如果可能,请仅在.cpp文件中包含标头。如果将其包含在标题中,则必须在每次编译包含该标题的转换单元时对其进行编译。作为一般经验法则,请尽量减少标题中的代码数量,
  • 所有主要编译器都支持预编译头文件。使用它们来减少编译时间,
  • 使用unity builds进行实验。在您的情况下,这可能是也可能不是优势。

最后,但并非最不重要的是,最后一个选择就是不使用那些特定的Boost库。

我有时会在早期使用某些Boost库,出于方便,如果/当编译时间太糟糕时,我会开始查看哪些库编译成本高昂,哪些库可以用相对简单的代码替换。通常情况下,Boost受到如此笼统的要求的阻碍。如果您不需要适用于8年编译器的东西,或者不需要在很多不同类型上工作的东西,那么您可以编写一个适合您的简单替换,并且几乎不需要时间编译。

答案 1 :(得分:1)

我使用compiler firewall idiom取得了很好的成功,以减少编译时间。