今天我有点摇摇晃晃地说,如果我们打开详细的包含,那么Boost在编译时会产生大量自动生成的包含。我们平均每个编译单元包含3000个头文件,有时甚至达到5000.几乎所有这些都是由Boost的预处理器 - 元编程funk引起的,大量相同的头文件一次又一次地被包含在一个大规模的预处理器递归中。
你认为Boost项目的每次编译3000是正常的吗?除了购买一组SSD s?
之外,我还能做些什么来优化Boost构建答案 0 :(得分:8)
真正有用的一件事是使用预编译头文件,这样许多或大部分Boost头文件都可以为整个构建编译一次,而不是每个翻译单元编译一次。
Microsoft Visual C++和GCC都支持预编译头文件(与其他编译器一样)。
答案 1 :(得分:2)
预编译标题是您的朋友。基本上,编译器会解析数千个文件,将状态转储到预编译的头文件,然后编译的每个.cpp都可以直接从中实例化编译器状态,而无需再次解析文件。
Here's一个头文件的例子,其中包含了在其余代码中使用的所有增强内容(以及更多内容)。曾几何时,包括如此多的标题会成为名称冲突的配方或更糟糕(你好windows.h“max”宏我正在看着你)但是这些天模板滥用已经取代了宏滥用和大多数库(提升特别是东西是足够好的命名空间,它很少是一个问题。在这种只包含它的编码风格中,担心.cpp认为哪些特定的命名空间值得通过“使用命名空间”指令升级到最高级别,这取代了担心要包含哪些特定标题。
答案 2 :(得分:0)
答案 3 :(得分:0)