15

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

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

4

2 回答 2

17

除了通常的技巧之外,您实际上无能为力:

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

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

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

于 2011-02-17T15:34:52.640 回答
1

我在使用编译器防火墙习语来减少编译时间方面取得了很好的成功。

于 2011-02-17T16:31:49.760 回答