我在用着提升计划选项 http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html,并且用它编译非常小的 C++ 代码需要相当长的时间(10 秒甚至更多)。在没有 boost 库的情况下编译代码花了 1 秒。
知道如何使用 boost 库来提高编译/链接时间吗?它是跨平台的,所以我需要在 Mac OS X/Linux/PC 上编译代码。
除了通常的技巧之外,你实际上无能为力:
- 最小化依赖关系:仅引入您真正需要的 Boost 标头,并尽可能使用特定的标头(许多库都有一个“主”标头,例如
boost/thread.hpp
,而且还有一个具有特定标头的子目录,例如boost/thread/shared_mutex.hpp
),
- 在可能的情况下,依赖前向声明而不是包含整个标头,
- 如果可能,仅将标头包含在
.cpp
文件。如果将其包含在标头中,则每次编译包含该标头的翻译单元时都必须编译它。作为一般经验法则,请尽量减少标头中的代码量,
- 所有主要编译器都支持预编译头。使用它们来减少编译时间,
- 进行实验团结建设 https://stackoverflow.com/questions/847974/c-the-benefits-disadvantages-of-unity-builds。对于您的情况来说,这可能是也可能不是优势。
最后但并非最不重要的一点是,最后一个选择是不使用那些特定的 Boost 库。
有时,出于方便,我会尽早使用某些 Boost 库,如果/当编译时间变得太糟糕时,我会开始查看哪些库的编译成本很高,哪些库可以用相对简单的代码替换。通常,Boost 会因过于笼统的要求而受到阻碍。如果您不需要在 8 年前的编译器上工作的东西,或者不需要跨这么多不同类型工作的东西,那么您也许可以编写一个适合您的简单替代品,并且几乎不需要时间编译。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)