在Visual Studio 2005下,我们有一个包含195个cpp文件的单一库,在发布版本中编译需要约2分钟,但在调试版本中需要约6分钟。我一直认为优化应该使得发布构建时间更长,那么为什么调试版本要比发布版本花费更多时间呢?是否有任何方法可以加速我们的调试版本以达到和发布版本一样的速度呢?我们确实有相当数量的boost/stl代码。
1这篇博客文章描述了如何在调试和发布模式下测量写入的字节数。请注意,您必须监视devenv.exe和cl.exe。发布模式下大约写入了300MB,调试模式下写入了600MB。我只是在shell中测试了复制1GB的文件,大约需要10秒钟。因此,在我看来,写入额外的300MB不可能真的需要多4分钟。除了IO之外,肯定还有其他编译器活动需要很长时间。 - Philip
我将把starbolin的评论放在这里作为答案:苹果和橙子。Charley猜测的I/O受限并没有通过我的Process Monitor计算得到证实,调试版写入了600MB,发布版写入了300MB。也就是说,多写入300MB只需要几秒钟,而不是4分钟。因此,我得出结论:调试版和发布版之间可能只有一堆不同之处。虽然优化应该比没有优化花费更长时间,但是这些其他仅在调试中发生的活动必须比那更耗时。能够看到调试版和发布版所需时间的详细分解将是很好的,但至少对于我基准测试的Visual Studio 2005项目来说,它们显然是非常不同的过程,调试版只需要更长的时间。