我正在使用
Boost Program Options,它需要相当长的时间(10秒甚至更多)来编译非常小的C代码.编译没有boost库需要1秒钟的时间.
任何想法如何通过boost库提高编译/链接时间?它是跨平台,所以我需要使用Mac OS X / Linux / PC编译代码.
解决方法
没有什么可以做超越通常的技巧:
>最小化依赖关系:仅引用您真正需要的Boost标题,并尽可能使用特定的标头(许多库具有单个“主”标题,例如boost / thread.hpp,还包括具有特定标题的子目录,如boost /thread/shared_mutex.hpp)
>在可能的情况下,依靠前向声明而不是包括整个标题,
>如果可能,仅在.cpp文件中包含标题.如果将其包含在标题中,则必须在每次包含该标题的翻译单元被编译时进行编译.作为一般的经验法则,尽量减少标题中的代码量,
>所有主要编译器都支持预编译头.用这些减少编译时间,
>实验unity builds.这可能是也可能不是你的情况的优势.
最后,但并非最不重要的是,最后一个选择是不要使用那些特定的Boost库.
我有时在早期使用某些Boost库,出于方便,如果/当编译时间太差时,我开始考虑哪些库编译成本昂贵,哪些库可以被相对简单的代码替代.通常情况下,Boost将受到如此笼统的要求的束缚.如果您不需要在8岁的编译器上工作的东西,或者不需要像这么多不同类型的工作,那么您可以编写一个简单的替换工具,对您而言几乎没有时间编译.