发布与调试构建时间

时间:2009-03-24 15:17:31

标签: compiler-construction build debugging performance release

我一直认为Debug版本比Release版本慢,因为编译器需要另外生成调试器信息。我最近惊讶地听到我的一位同事说发布版本通常需要更多时间。 (我相信这只是因为增量链接/编译)。

一般来说,两者中哪一个更快?

5 个答案:

答案 0 :(得分:13)

嗯,有很多变量会影响事情。以下是调试可能更快的一些原因:

  • 通常,调试模式的优化次数要少得多,因为那些可能会破坏指令和代码行之间的映射。因此,编译器在那里做的工作较少。
  • 即使完整的调试版本较慢,Debug构建也会经常发生,并且通常可以比Release版本更多地利用增量构建。因此,Debug构建通常不需要执行与Release版本相同的工作。

答案 1 :(得分:2)

总的来说,我希望调试版本的构建速度更快,但运行速度更慢,版本构建需要更长时间才能构建,但最终结果会更快。

这取决于发布版本可能具有更积极的优化,这些可能会干扰可调试性。此外,一些较大规模的优化确实需要很长时间。在目标文件中插入调试信息的时间足够小,可以忽略不计,它可能比首先从磁盘读取源代码花费的时间更少。

答案 2 :(得分:0)

只是一个猜测,但我认为由于优化,发布版本在大多数情况下需要更长的时间。

答案 3 :(得分:0)

调试版本通常更快,因为没有进行优化(这在发布版本中很常见)。

您可以选择不使用可执行文件生成调试符号,也不选择优化,但这对于版本构建来说会很奇怪。虽然我认为它会更快地构建。

Debug和Release之间的主要区别在于Debug用于调试(包括调试符号),Release用于运行更快,因此您使用强优化

答案 4 :(得分:0)

发布版本的主要原因是编译器会对它们进行大量优化。例如,它可以展开循环,删除不必要的变量和内联函数。优化不是一项微不足道的任务,需要大量的计算能力,从而减慢了构建速度。

大多数编译器都会让您关闭发布版本的优化。试试这个。您的构建时间将缩短。您还可以启用调试版本的优化,并查看构建时间的增长。