最重要的一个原因应该是C++基本的"头文件-源文件"的编译模型: 每个源文件作为一个编译单元,可能会包含上百甚至上千个头文件,而在每一个编译单元,这些头文件都会被从硬盘读进来一遍,然后被解析一遍。 每个编译单元都会产生一个obj文件,然后所以这些obj文件会被link到一起,并且这个过程很难并行。 这里,问题在于无数头文件的重复load与解析,以及密集的磁盘操作。
多进程编译,2-3个进程合适使用预编译的库,使用较快的CPU...总之对构建流程进行优化...