有很多因素导致这种情况,但大小是一个重要因素。大多数现代构建系统在更改代码时尝试执行部分编译,以便只构建更改的部分。然而,有些工具无法做到这一点。
当编译成千上万行分布在数百个项目中的.NET代码时,您的编译时间开始变得相当长。当同时编译大型库和自己的源代码(通常在本地C/C++领域中经常这样做)时,您的编译时间也会增加。
特别是对于C和C++,解析头文件所花费的时间相当可观。反复读取数千个头文件是一个非常繁重的I/O绑定过程。这就是为什么创建了预编译头文件技术的原因之一。当然,使用固态硬盘也可以极大加快速度。
编辑:我忘记提到,构建过程通常包括专门的代码生成器或DSL编译器。这些工具通常是内部自定义项目,没有像广泛使用的工具那样高度优化,因此如果大量使用,它们可能成为瓶颈。