为啥在重新构建解决方案后构建速度更快?

Posted

技术标签:

【中文标题】为啥在重新构建解决方案后构建速度更快?【英文标题】:Why build happens faster after doing a rebuild of Solution?为什么在重新构建解决方案后构建速度更快? 【发布时间】:2014-08-05 11:43:46 【问题描述】:

我正在将 Visual Studio IDE 用于一个包含数百万行代码和数百个文件的大型 C++ 项目。

我注意到,每次在对多个文件进行一些小的更改后构建解决方案时,每次后续构建都会花费越来越多的时间。

一旦我重建了解决方案,虽然重建花费了相当长的时间,但每次后续构建都比以前构建预重建快得多。

我做了一个假设,可能是编译器将多个 obj 文件合二为一。每次我们进行更改并构建解决方案时,都必须将大 obj 分解为较小的 obj,从而增加更多 obj 文件的数量。由于添加了越来越多的 obj 文件,这种方式链接会很慢。

但是,我无法为我的奇思妙想找到任何支持.. 当然也无法在我的同事面前证明这一点。

build-after-build 变慢的原因是什么?为什么重建后变快?

【问题讨论】:

也许是***.com/a/14641474/420446 原生 C++ 还是托管?在本机中,我怀疑这很可能是由于预编译的标头。尝试删除/重建它,看看你是否得到相同的效果。我从未使用过托管 C++。 本机跨平台 cpp .. 并且@willll 它会一直发生,而不仅仅是在断电之后。 我们有同样的问题,重建需要 10 分钟,头文件的小改动需要 30 分钟 【参考方案1】:

我不知道为什么会发生这种情况,但我可以告诉你 obj 文件没有融合在一起。

【讨论】:

以上是关于为啥在重新构建解决方案后构建速度更快?的主要内容,如果未能解决你的问题,请参考以下文章

为啥构建后步骤 (xcopy) 偶尔会在 TeamCity 构建中以代码 2 退出?

Flutter:为啥我的构建器在 Web 服务调用后没有重新加载?

Linux里面gitlab上传后,为啥要用Jenkins构建?

为啥 Visual Studio 认为我需要构建项目?

为啥 Flutter iOS 构建失败?

构建时命令副本以代码 4 退出 - Visual Studio 重新启动解决了它