为什么我不应该使用增量构建来发布二进制文件?

at5*_*321 5 compilation rust

我注意到,随着我的项目的增长,发布编译/构建时间变得比我预期(和希望)更快。我决定研究一下可以采取哪些措施来提高编译速度。我不是在谈论初始构建时间,它涉及依赖项的编译并且很大程度上无关紧要。

似乎有很大帮助的一件事是incremental = true配置文件设置。在我的项目中,它似乎将 4 个以上内核的构建时间缩短了约 40%。使用更少的核心,收益会更大,因为构建incremental = true似乎没有使用(太多)并行化。使用默认值(对于--release),incremental = false与 4 个以上内核相比,单个内核的构建时间要慢 3-4 倍。

incremental = true避免用于生产构建的原因是什么?我没有看到缓存对象的二进制大小或存储大小有任何(显着)增加。我在某处读到增量构建可能会导致构建的二进制文件的性能稍差。这是需要考虑的唯一原因还是还有其他原因,例如稳定性等?

我知道这可能会有所不同,但是是否有任何数据可以说明对实际应用程序的性能影响有多大?

HHK*_*HHK 0

不要对生产版本使用增量构建,因为它是:

  • 不可重现(即您无法通过再次编译获得完全相同的二进制文件)并且
  • 很可能被巧妙地破坏了(增量编译比干净编译更复杂,并且经过的测试更少,特别是在打开优化的情况下)。