我正在努力减少大型Visual C ++ 2008应用程序的构建时间。最糟糕的瓶颈之一似乎是生成PDB文件:在链接阶段,mspdbsrv.exe快速占用可用的RAM,并且构建机器开始不断页面。
我目前的理论是我们的PDB文件太大了。但是,我一直无法找到有关PDB文件“正常”大小的信息。我在我们的应用程序中对其中一个DLL进行了粗略测量,如下所示:
因此,PDB文件的大小约为DLL的570%。 有大型Visual C ++应用程序经验的人能否告诉我这些比率和大小是否有意义?或者这里是否有迹象表明我们做错了什么?
(我们的应用程序中最大的PDB文件目前是271 MB,对于一个47.5 MB的DLL。虽然源代码大小很难衡量。)
谢谢!
答案 0 :(得分:1)
是的,.pdb文件可能非常大 - 甚至是您提到的大小。由于.pdb文件包含将源代码行映射到机器代码的数据,并且您编译了大量代码,因此.pdb文件中有大量数据,您可能无法直接执行任何操作。
您可以尝试的一件事是将程序拆分为更小的部分 - DLL。每个DLL都有自己独立的.pdb。但是我很怀疑它会减少构建时间。
答案 1 :(得分:0)
您是否真的需要完整的调试信息?您可以使用较少的调试信息创建配置。
但正如尖锐的人已经说过的那样,是时候将你的程序重构并拆分成更小的可维护部分了。这不仅会缩短构建时间。