C++ 减少编译器生成的tlog文件的大小
由于构建服务器上的构建速度越来越慢,我试图找出原因。似乎它主要挂起在C++ 减少编译器生成的tlog文件的大小,c++,visual-c++,C++,Visual C++,由于构建服务器上的构建速度越来越慢,我试图找出原因。似乎它主要挂起在.tlog文件的磁盘IO操作中,因为没有CPU负载,构建仍然挂起。即使一个项目只包含10个cpp文件,它也会在CL.read.1.tlog文件中生成约5500行。 可疑的是,该文件多次包含相同的头,尤其是占文件90%的boost头 这些文件太大并且有多余的内容,这真的是预期的行为吗?或者可能是源代码引发的问题?是否存在可能导致此问题的循环包含或标题包含过多 更新1 在所有的评论之后,我将尝试在这里澄清更多的细节 我们只是通过包含
.tlog
文件的磁盘IO操作中,因为没有CPU负载,构建仍然挂起。即使一个项目只包含10个cpp文件,它也会在CL.read.1.tlog
文件中生成约5500行。
可疑的是,该文件多次包含相同的头,尤其是占文件90%的boost头
这些文件太大并且有多余的内容,这真的是预期的行为吗?或者可能是源代码引发的问题?是否存在可能导致此问题的循环包含或标题包含过多
更新1
在所有的评论之后,我将尝试在这里澄清更多的细节
与使用SSD的开发人员机器一样,在CPU/内存配置相当的情况下,我们至少可以将时间从2小时减少到16分钟。我认为瓶颈始终是硬盘。根据permon,检查与磁盘相关的操作会让我找到tlog文件,因为它们导致了最高的磁盘活动 最明显的第一步是确保将它们写入SSD。接下来,如果某个地方的配置错误让您陷入如此深重的困境,那么您可能会遇到配置错误,但我对VS知之甚少。您说它似乎主要挂在.tlog磁盘I/O上。在尝试优化错误的东西之前,最好确保这一点。由于您使用Boost,构建是否可能只需要很长时间,因为大型Boost头文件具有很多依赖项,因此需要从磁盘读取和处理大量头文件?与所有必须读取的头文件相比,.tlog文件中的5500行是微不足道的,即使不使用Boost,而只是使用标准库。您的构建依赖关系树中是否有大量节点?看起来这是由msbuild进程创建的,该进程确定需要构建哪些内容以及何时构建。您是否可以按程序生成数千个头文件,每个头文件都包含boost库或类似的东西?@xaxxon编译器I/O性能基于文件的数量和大小,而不是TUs。如果其中一个包含了boost的一半,那么只有10个tu是无关紧要的。构建10个文件需要多少时间?您正在使用SSD吗?是否安装了防病毒软件?