我使用的是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